File indexing completed on 2024-05-12 05:14:49

0001 /*
0002  *  main.cpp
0003  *  Program:  kalarm
0004  *  SPDX-FileCopyrightText: 2001-2024 David Jarvie <djarvie@kde.org>
0005  *
0006  *  SPDX-License-Identifier: GPL-2.0-or-later
0007  */
0008 
0009 #include "kalarm.h"
0010 #include "kalarm-version-string.h"
0011 #include "kalarmapp.h"
0012 #include "kalarm_debug.h"
0013 
0014 #include <KAboutData>
0015 #include <KLocalizedString>
0016 #include <KDBusService>
0017 #include <KCrash>
0018 
0019 #include <QDir>
0020 #include <QScopedPointer>
0021 
0022 #include <iostream>
0023 #include <stdlib.h>
0024 
0025 #define PROGRAM_NAME "kalarm"
0026 
0027 int main(int argc, char* argv[])
0028 {
0029     // Use QScopedPointer to ensure the QCoreApplication instance is deleted
0030     // before libraries unload, to avoid crashes during clean-up.
0031     QScopedPointer<KAlarmApp> app(KAlarmApp::create(argc, argv));
0032 
0033     const QStringList args = app->arguments();
0034     KCrash::initialize();
0035 
0036     KLocalizedString::setApplicationDomain(QByteArrayLiteral("kalarm"));
0037     KAboutData aboutData(QStringLiteral(PROGRAM_NAME), i18n(KALARM_NAME),
0038                          QStringLiteral(KALARM_VERSION " (KDE Gear " RELEASE_SERVICE_VERSION ")"),
0039                          i18n("Personal alarm message, command and email scheduler by KDE"),
0040                          KAboutLicense::GPL,
0041                          ki18n("Copyright © 2001-%1, David Jarvie").subs(QStringLiteral("2024")).toString(), QString());
0042     aboutData.addAuthor(i18n("David Jarvie"), i18n("Author"), QStringLiteral("djarvie@kde.org"));
0043     aboutData.setOrganizationDomain("kde.org");
0044     aboutData.setDesktopFileName(QStringLiteral(KALARM_DBUS_SERVICE));
0045     KAboutData::setApplicationData(aboutData);
0046 
0047     QApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("kalarm")));
0048     // Make this a unique application.
0049     KDBusService service(KDBusService::Unique);
0050     QObject::connect(&service, &KDBusService::activateRequested, app.data(), &KAlarmApp::activateByDBus);
0051     QObject::connect(app.data(), &KAlarmApp::setExitValue, &service, [&service](int ret) { service.setExitValue(ret); });
0052 
0053     qCDebug(KALARM_LOG) << "initialising";
0054     app->initialise();
0055 
0056     QString outputText;
0057     int exitCode = app->activateInstance(args, QDir::currentPath(), &outputText);
0058     if (exitCode >= 0)
0059     {
0060         if (!outputText.isEmpty())
0061         {
0062             if (exitCode > 0)
0063                 std::cerr << qPrintable(outputText) << std::endl;
0064             else
0065                 std::cout << qPrintable(outputText) << std::endl;
0066         }
0067         exit(exitCode);
0068     }
0069 
0070     app->restoreSession();
0071     return app->exec();
0072 }
0073 
0074 // vim: et sw=4: