File indexing completed on 2025-02-02 05:08:36

0001 // SPDX-FileCopyrightText: 2009 Volker Krause <vkrause@kde.org>
0002 // SPDX-FileCopyrightText: 2023 Carl Schwan <carl@carlschwan.eu>
0003 // SPDX-FileCopyrightText: 2023-2024 Laurent Montel <montel.org>
0004 // SPDX-License-Identifier: LGPL-2.0-or-later
0005 
0006 #include "identitybase.h"
0007 #include "ispdb/configurationmodel.h"
0008 #include "setupmanager.h"
0009 
0010 #include <Akonadi/Control>
0011 #include <KAboutData>
0012 #include <KCrash>
0013 #include <KDBusService>
0014 #include <KLocalizedContext>
0015 #include <KLocalizedString>
0016 
0017 #include <QApplication>
0018 #include <QCommandLineParser>
0019 #include <QDebug>
0020 #include <QIcon>
0021 #include <QQmlApplicationEngine>
0022 #include <QUrl>
0023 #include <QtQml>
0024 
0025 int main(int argc, char **argv)
0026 {
0027     QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);
0028     QApplication app(argc, argv);
0029     KLocalizedString::setApplicationDomain(QByteArrayLiteral("accountwizard"));
0030     KCrash::initialize();
0031     KAboutData aboutData(QStringLiteral("accountwizard"),
0032                          i18n("Account Assistant"),
0033                          QStringLiteral("0.3"),
0034                          i18n("Helps setting up PIM accounts"),
0035                          KAboutLicense::LGPL,
0036                          i18n("(c) 2009-2024 the Akonadi developers"),
0037                          QString(),
0038                          QStringLiteral("https://community.kde.org/KDE_PIM/Akonadi"));
0039     aboutData.addAuthor(i18n("Volker Krause"), i18n("Author"), QStringLiteral("vkrause@kde.org"));
0040     aboutData.addAuthor(i18n("Laurent Montel"), i18n("Maintainer"), QStringLiteral("montel@kde.org"));
0041     aboutData.addAuthor(i18n("Carl Schwan"), i18n("Maintainer"), QStringLiteral("carl@carlschwan.eu"));
0042     aboutData.setProductName(QByteArrayLiteral("Akonadi/Account Wizard"));
0043     app.setOrganizationDomain(QStringLiteral("kde.org"));
0044     app.setWindowIcon(QIcon::fromTheme(QStringLiteral("kontact")));
0045     QCommandLineParser parser;
0046     KAboutData::setApplicationData(aboutData);
0047 
0048     aboutData.setupCommandLine(&parser);
0049     parser.process(app);
0050     aboutData.processCommandLine(&parser);
0051 
0052     KDBusService service(KDBusService::Unique);
0053 
0054     if (!Akonadi::Control::start()) {
0055         qApp->exit(-1);
0056         return 1;
0057     }
0058 
0059     QQmlApplicationEngine engine;
0060     engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
0061 
0062     SetupManager setupManager;
0063     qmlRegisterSingletonInstance("org.kde.pim.accountwizard", 1, 0, "SetupManager", &setupManager);
0064     qRegisterMetaType<IdentityBase *>("Identity *");
0065     qRegisterMetaType<ConfigurationModel *>("ConfigurationModel *");
0066     engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
0067     // Exit on QML load error.
0068     if (engine.rootObjects().isEmpty()) {
0069         qWarning() << " Error during loading main.qml";
0070         return 1;
0071     }
0072     return app.exec();
0073 }