File indexing completed on 2024-05-19 05:14:37

0001 /*
0002   This file is part of KAddressBook.
0003 
0004   SPDX-FileCopyrightText: 2007 Tobias Koenig <tokoe@kde.org>
0005 
0006   SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "aboutdata.h"
0010 #include "kaddressbook_options.h"
0011 #include "mainwidget.h"
0012 #include "mainwindow.h"
0013 
0014 #include <KCrash>
0015 #include <QCommandLineParser>
0016 
0017 #include "kaddressbook_debug.h"
0018 #include <kontactinterface/pimuniqueapplication.h>
0019 #ifdef WITH_KUSERFEEDBACK
0020 #include "userfeedback/kaddressbookuserfeedbackprovider.h"
0021 #endif
0022 
0023 //-----------------------------------------------------------------------------
0024 
0025 class KAddressBookApplication : public KontactInterface::PimUniqueApplication
0026 {
0027 public:
0028     KAddressBookApplication(int &argc, char **argv[])
0029         : KontactInterface::PimUniqueApplication(argc, argv)
0030     {
0031     }
0032 
0033     int activate(const QStringList &arguments, const QString &) override;
0034 
0035 private:
0036     MainWindow *mMainWindow = nullptr;
0037 };
0038 
0039 int KAddressBookApplication::activate(const QStringList &arguments, const QString &)
0040 {
0041     if (!mMainWindow) {
0042         mMainWindow = new MainWindow;
0043         mMainWindow->show();
0044     }
0045     mMainWindow->mainWidget()->handleCommandLine(arguments);
0046     return 0;
0047 }
0048 
0049 int main(int argc, char **argv)
0050 {
0051     QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);
0052     KAddressBookApplication app(argc, &argv);
0053     app.setDesktopFileName(QStringLiteral("org.kde.kaddressbook"));
0054     KCrash::initialize();
0055     KLocalizedString::setApplicationDomain(QByteArrayLiteral("kaddressbook"));
0056 
0057     AboutData about;
0058     app.setAboutData(about);
0059     app.setWindowIcon(QIcon::fromTheme(QStringLiteral("kaddressbook")));
0060     QCommandLineParser *cmdArgs = app.cmdArgs();
0061     kaddressbook_options(cmdArgs);
0062 
0063     const QStringList args = QCoreApplication::arguments();
0064     cmdArgs->process(args);
0065     about.processCommandLine(cmdArgs);
0066 
0067 #ifdef WITH_KUSERFEEDBACK
0068     if (cmdArgs->isSet(QStringLiteral("feedback"))) {
0069         auto userFeedBack = new KAddressBookUserFeedbackProvider(nullptr);
0070         QTextStream(stdout) << userFeedBack->describeDataSources() << '\n';
0071         delete userFeedBack;
0072         return 0;
0073     }
0074 #endif
0075 
0076     if (!KAddressBookApplication::start(args)) {
0077         qCWarning(KADDRESSBOOK_LOG) << "kaddressbook is already running, exiting.";
0078         return 0;
0079     }
0080     return app.exec();
0081 }