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 }