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 }