File indexing completed on 2022-09-27 16:37:10

0001 /*
0002     SPDX-FileCopyrightText: 2010 Daniel Nicoletti <dantti12@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "AddPrinter.h"
0008 
0009 #include <config.h>
0010 
0011 #include <QCommandLineParser>
0012 #include <QCommandLineOption>
0013 
0014 #include <QLoggingCategory>
0015 
0016 #include <KLocalizedString>
0017 #include <KAboutData>
0018 
0019 Q_LOGGING_CATEGORY(PM_ADD_PRINTER, "pm.add.printer")
0020 
0021 int main(int argc, char **argv)
0022 {
0023     QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
0024     AddPrinter app(argc, argv);
0025     app.setOrganizationDomain(QLatin1String("org.kde"));
0026 
0027     KAboutData about(QLatin1String("kde-add-printer"),
0028                      i18n("Add Printer"),
0029                      QLatin1String(PM_VERSION),
0030                      i18n("Tool for adding new printers"),
0031                      KAboutLicense::GPL,
0032                      i18n("(C) 2010-2018 Daniel Nicoletti"));
0033 
0034     about.addAuthor(QLatin1String("Daniel Nicoletti"), QString(), QLatin1String("dantti12@gmail.com"));
0035     about.addAuthor(QStringLiteral("Lukáš Tinkl"), i18n("Port to Qt 5 / Plasma 5"), QStringLiteral("ltinkl@redhat.com"));
0036     KAboutData::setApplicationData(about);
0037 
0038     QCommandLineParser parser;
0039     about.setupCommandLine(&parser);
0040 
0041     QCommandLineOption parentWindowOpt({QLatin1String("w"), QLatin1String("parent-window")}, i18n("Parent Window ID"), QLatin1String("wid"));
0042     parser.addOption(parentWindowOpt);
0043 
0044     QCommandLineOption addPrinterOpt(QLatin1String("add-printer"), i18n("Add a new printer"));
0045     parser.addOption(addPrinterOpt);
0046 
0047     QCommandLineOption addClassOpt(QLatin1String("add-class"), i18n("Add a new printer class"));
0048     parser.addOption(addClassOpt);
0049 
0050     QCommandLineOption changePpdOpt(QLatin1String("change-ppd"), i18n("Changes the PPD of a given printer"), QLatin1String("printer-name"));
0051     parser.addOption(changePpdOpt);
0052 
0053     QCommandLineOption newPrinterDevOpt(QLatin1String("new-printer-from-device"), i18n("Changes the PPD of a given printer/deviceid"),
0054                                         QLatin1String("printername/deviceid"));
0055     parser.addOption(newPrinterDevOpt);
0056 
0057     parser.process(app);
0058     about.processCommandLine(&parser);
0059 
0060     qulonglong wid = 0;
0061     if (parser.isSet(parentWindowOpt)) {
0062         wid = parser.value(parentWindowOpt).toULongLong();
0063     }
0064 
0065     if (parser.isSet(addPrinterOpt)) {
0066         app.addPrinter(wid);
0067     } else if (parser.isSet(addClassOpt)) {
0068         app.addClass(wid);
0069     } else if (parser.isSet(changePpdOpt)) {
0070         app.changePPD(wid, parser.value(changePpdOpt));
0071     } else if (parser.isSet(newPrinterDevOpt)) {
0072         const QString value = parser.value(newPrinterDevOpt);
0073         const QStringList values = value.split(QLatin1String("/"));
0074         if (values.size() == 2) {
0075             app.newPrinterFromDevice(wid, values.first(), values.last());
0076         } else {
0077             qWarning() << "The expected input should be printer/deviceid";
0078             exit(EXIT_FAILURE);
0079         }
0080     } else {
0081         parser.showHelp(EXIT_FAILURE);
0082     }
0083 
0084     return app.exec();
0085 }