File indexing completed on 2024-05-12 04:33:20

0001 /*
0002     SPDX-FileCopyrightText: 2009-2010 Michael G. Hansen <mike at mghansen dot de>
0003     SPDX-FileCopyrightText: 2011-2018 Gilles Caulier <caulier dot gilles at gmail dot com>
0004     SPDX-FileCopyrightText: 2012 Victor Dodon <dodonvictor at gmail dot com>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 // Qt includes
0010 
0011 #include <QUrl>
0012 #include <QDebug>
0013 #include <QApplication>
0014 #include <QStandardPaths>
0015 #include <QCommandLineParser>
0016 #include <QCommandLineOption>
0017 
0018 // LibKipi includes
0019 
0020 #include "libkipi_version.h"
0021 
0022 #ifdef HAVE_KEXIV2
0023 #   include <kexiv2/kexiv2.h>
0024 #endif
0025 
0026 // Local includes
0027 
0028 #include "kipitestmainwindow.h"
0029 
0030 using namespace KXMLKipiCmd;
0031 
0032 int main(int argc, char* argv[])
0033 {
0034 #ifdef HAVE_KEXIV2
0035     KExiv2Iface::KExiv2::initializeExiv2();
0036 #endif
0037 
0038     QApplication app(argc, argv);
0039     app.setApplicationName(QLatin1String("kxmlkipicmd"));
0040     app.setApplicationVersion(QLatin1String(KIPI_VERSION_STRING));
0041     app.setOrganizationName(QLatin1String("http://www.kde.org"));
0042     app.setWindowIcon(QIcon(QStandardPaths::locate(QStandardPaths::GenericDataLocation,
0043                                                    QLatin1String(":/images/kipi-icon.svg"))));
0044 
0045     QCommandLineParser parser;
0046     parser.addVersionOption();
0047     parser.addHelpOption();
0048     parser.setApplicationDescription(QLatin1String("Demo Kipi host test application using KDE XML-GUI"));
0049 
0050     parser.addOption(QCommandLineOption(QStringList() <<  QLatin1String("c"),              QLatin1String("Selected collections"), QLatin1String("selectedcollectionss")));
0051     parser.addOption(QCommandLineOption(QStringList() <<  QLatin1String("i"),              QLatin1String("Selected images"),      QLatin1String("selectedimages")));
0052     parser.addOption(QCommandLineOption(QStringList() <<  QLatin1String("allc"),           QLatin1String("All collections"),      QLatin1String("allcollections")));
0053     parser.addOption(QCommandLineOption(QStringList() <<  QLatin1String("+[images]"),      QLatin1String("List of images")));
0054     parser.addOption(QCommandLineOption(QStringList() <<  QLatin1String("+[collections]"), QLatin1String("Selected collections")));
0055     parser.process(app);
0056 
0057     QList<QUrl> listSelectedImages;
0058     QList<QUrl> listSelectedAlbums;
0059     QList<QUrl> listAllAlbums;
0060 
0061     // Determine which with list we start
0062 
0063     QList<QUrl>* startList = nullptr;
0064 
0065     if (parser.isSet(QString::fromLatin1("i")))
0066     {
0067         startList = &listSelectedImages;
0068         startList->append(QUrl(parser.value(QString::fromLatin1("i"))));
0069     }
0070     else if (parser.isSet(QString::fromLatin1("c")))
0071     {
0072         startList = &listSelectedAlbums;
0073         startList->append(QUrl(parser.value(QString::fromLatin1("c"))));
0074     }
0075     else if (parser.isSet(QString::fromLatin1("allc")))
0076     {
0077         startList = &listAllAlbums;
0078         startList->append(QUrl(parser.value(QString::fromLatin1("allc"))));
0079     }
0080 
0081     // Append the remaining arguments to the lists
0082 
0083     const QStringList args = parser.positionalArguments();
0084 
0085     for (int i = 0; i < args.count(); ++i)
0086     {
0087         const QString argValue = args.value(i);
0088 
0089         if (argValue == QString::fromLatin1("-i"))
0090         {
0091             startList = &listSelectedImages;
0092         }
0093         else if (argValue == QString::fromLatin1("-c"))
0094         {
0095             startList = &listSelectedAlbums;
0096         }
0097         else if (argValue == QString::fromLatin1("-allc"))
0098         {
0099             startList = &listAllAlbums;
0100         }
0101         else
0102         {
0103             if (startList == nullptr)
0104             {
0105                 qCritical() << "StartList is null. "
0106                             << "Please specify how the filenames you provided should be used.";
0107                 return 0;
0108             }
0109             else
0110             {
0111                 startList->append(QUrl(args.value(i)));
0112             }
0113         }
0114     }
0115 
0116     KipiTestMainWindow* const mainWindow = new KipiTestMainWindow(listSelectedImages, listSelectedAlbums, listAllAlbums);
0117 
0118     QObject::connect(mainWindow, &KipiTestMainWindow::destroyed,
0119                      &app, &QApplication::quit);
0120 
0121     app.setActiveWindow(mainWindow);
0122     mainWindow->show();
0123 
0124     int ret = app.exec();
0125 
0126 #ifdef HAVE_KEXIV2
0127     KExiv2Iface::KExiv2::cleanupExiv2();
0128 #endif
0129 
0130     return ret;
0131 }