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 }