File indexing completed on 2025-02-23 03:58:52
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2021-07-29 0007 * Description : stand alone test for MJPEG Server 0008 * 0009 * SPDX-FileCopyrightText: 2021-2024 by Gilles Caulier <caulier dot gilles at gmail dot com> 0010 * 0011 * SPDX-License-Identifier: GPL-2.0-or-later 0012 * 0013 * ============================================================ */ 0014 0015 // Qt includes 0016 0017 #include <QString> 0018 #include <QStringList> 0019 #include <QApplication> 0020 #include <QStandardPaths> 0021 #include <QDir> 0022 #include <QUrl> 0023 #include <QMap> 0024 #include <QProgressDialog> 0025 0026 // Local includes 0027 0028 #include "digikam_debug.h" 0029 #include "dfiledialog.h" 0030 #include "mjpegservermngr.h" 0031 #include "metaengine.h" 0032 #include "dpluginloader.h" 0033 0034 using namespace Digikam; 0035 using namespace DigikamGenericMjpegStreamPlugin; 0036 0037 int main(int argc, char* argv[]) 0038 { 0039 QApplication app(argc, argv); 0040 QList<QUrl> list; 0041 MjpegServerMap map; 0042 0043 MetaEngine::initializeExiv2(); 0044 DPluginLoader::instance()->init(); 0045 0046 QDir().mkpath(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation)); 0047 0048 if (argc <= 1) 0049 { 0050 QStringList files = DFileDialog::getOpenFileNames(nullptr, QString::fromLatin1("Select Files to Share With Media Server"), 0051 QStandardPaths::standardLocations(QStandardPaths::PicturesLocation).first(), 0052 QLatin1String("Image Files (*.png *.jpg *.tif *.bmp *.gif)")); 0053 0054 Q_FOREACH (const QString& f, files) 0055 { 0056 list.append(QUrl::fromLocalFile(f)); 0057 } 0058 } 0059 else 0060 { 0061 for (int i = 1 ; i < argc ; i++) 0062 { 0063 list.append(QUrl::fromLocalFile(QString::fromLocal8Bit(argv[i]))); 0064 } 0065 } 0066 0067 if (!list.isEmpty()) 0068 { 0069 map.insert(QLatin1String("Test Collection"), list); 0070 MjpegServerMngr::instance()->setCollectionMap(map); 0071 } 0072 else 0073 { 0074 if (!MjpegServerMngr::instance()->load()) 0075 { 0076 DPluginLoader::instance()->cleanUp(); 0077 0078 return -1; 0079 } 0080 } 0081 0082 if (MjpegServerMngr::instance()->startMjpegServer()) 0083 { 0084 QProgressDialog* const pdlg = new QProgressDialog(nullptr); 0085 pdlg->setLabelText(QLatin1String("Sharing files on the network")); 0086 pdlg->setMinimumDuration(0); 0087 pdlg->setCancelButtonText(QLatin1String("Close")); 0088 pdlg->setMaximum(0); 0089 pdlg->setMinimum(0); 0090 pdlg->setValue(0); 0091 pdlg->exec(); 0092 } 0093 else 0094 { 0095 qCDebug(DIGIKAM_TESTS_LOG) << "Failed to start the MJPEG Server..."; 0096 } 0097 0098 MjpegServerMngr::instance()->save(); 0099 MjpegServerMngr::instance()->cleanUp(); 0100 0101 DPluginLoader::instance()->cleanUp(); 0102 0103 return 0; 0104 }