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: