Warning, file /plasma/discover/notifier/main.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002  *   SPDX-FileCopyrightText: 2019 Aleix Pol Gonzalez <aleixpol@blue-systems.com>
0003  *
0004  *   SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #include "../DiscoverVersion.h"
0008 #include <KAboutData>
0009 #include <KConfig>
0010 #include <KConfigGroup>
0011 #include <KCrash>
0012 #include <KDBusService>
0013 #include <KLocalizedString>
0014 #include <KSharedConfig>
0015 #include <QApplication>
0016 #include <QCommandLineParser>
0017 #include <QDBusConnection>
0018 #include <QDBusConnectionInterface>
0019 #include <QDBusMessage>
0020 #include <QDebug>
0021 #include <QMenu>
0022 
0023 #include "NotifierItem.h"
0024 
0025 int main(int argc, char **argv)
0026 {
0027     QApplication app(argc, argv);
0028     app.setOrganizationDomain(QStringLiteral("kde.org"));
0029 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
0030     app.setAttribute(Qt::AA_UseHighDpiPixmaps, true);
0031 #endif
0032     KCrash::setFlags(KCrash::AutoRestart);
0033 
0034     NotifierItem notifier;
0035     bool hide = false;
0036     KDBusService::StartupOptions startup = {};
0037     {
0038         KAboutData about(QStringLiteral("discover.notifier"),
0039                          i18n("Discover Notifier"),
0040                          version,
0041                          i18n("System update status notifier"),
0042                          KAboutLicense::GPL,
0043                          i18n("© 2010-2022 Plasma Development Team"));
0044         about.addAuthor(QStringLiteral("Aleix Pol Gonzalez"), {}, QStringLiteral("aleixpol@kde.org"));
0045         about.setProductName("discover/discover");
0046         about.setProgramLogo(app.windowIcon());
0047         about.setTranslator(i18nc("NAME OF TRANSLATORS", "Your names"), i18nc("EMAIL OF TRANSLATORS", "Your emails"));
0048 
0049         KAboutData::setApplicationData(about);
0050 
0051         QCommandLineParser parser;
0052         QCommandLineOption replaceOption({QStringLiteral("replace")}, i18n("Replace an existing instance"));
0053         parser.addOption(replaceOption);
0054         QCommandLineOption hideOption({QStringLiteral("hide")}, i18n("Do not show the notifier"), i18n("hidden"), QStringLiteral("false"));
0055         parser.addOption(hideOption);
0056         about.setupCommandLine(&parser);
0057         parser.process(app);
0058         about.processCommandLine(&parser);
0059 
0060         if (parser.isSet(replaceOption)) {
0061             startup |= KDBusService::Replace;
0062         }
0063 
0064         const auto config = KSharedConfig::openConfig();
0065         KConfigGroup group(config, "Behavior");
0066 
0067         if (parser.isSet(hideOption)) {
0068             hide = parser.value(hideOption) == QLatin1String("true");
0069             group.writeEntry<bool>("Hide", hide);
0070             config->sync();
0071         } else {
0072             hide = group.readEntry<bool>("Hide", false);
0073         }
0074     }
0075 
0076     KDBusService service(KDBusService::Unique | startup);
0077     notifier.setVisible(!hide);
0078 
0079     return app.exec();
0080 }