File indexing completed on 2024-04-21 05:25:29
0001 /* 0002 * SPDX-FileCopyrightText: 2019 Linus Jahn <lnj@kaidan.im> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #include <KSharedConfig> 0008 #include <KWindowConfig> 0009 #include <QApplication> 0010 #include <QCommandLineOption> 0011 #include <QCommandLineParser> 0012 #include <QQmlApplicationEngine> 0013 #include <QQuickWindow> 0014 #include <QUrl> 0015 #include <QtQml> 0016 0017 #include <KAboutData> 0018 #include <KLocalizedContext> 0019 #include <KLocalizedString> 0020 0021 #include "contactcontroller.h" 0022 #include "contactimporter.h" 0023 #include "version.h" 0024 0025 #ifdef Q_OS_ANDROID 0026 #include <QtAndroid> 0027 #endif 0028 0029 Q_DECL_EXPORT int main(int argc, char *argv[]) 0030 { 0031 QCommandLineParser parser; 0032 QApplication app(argc, argv); 0033 0034 KAboutData aboutData(QStringLiteral("plasma-phonebook"), 0035 i18n("Phonebook"), 0036 QStringLiteral(PLASMAPHONEBOOK_VERSION_STRING), 0037 i18n("View and edit contacts"), 0038 KAboutLicense::GPL); 0039 aboutData.setDesktopFileName(QStringLiteral("org.kde.phonebook")); 0040 KAboutData::setApplicationData(aboutData); 0041 0042 KLocalizedString::setApplicationDomain("plasma-phonebook"); 0043 parser.addVersionOption(); 0044 parser.process(app); 0045 0046 // back-end 0047 QQmlApplicationEngine engine; 0048 engine.rootContext()->setContextObject(new KLocalizedContext(&engine)); 0049 0050 qmlRegisterType<ContactImporter>("org.kde.phonebook", 1, 0, "ContactImporter"); 0051 qmlRegisterAnonymousType<QAbstractItemModel>("org.kde.phonebook", 1); 0052 0053 #ifdef Q_OS_ANDROID 0054 QtAndroid::requestPermissionsSync({QStringLiteral("android.permission.WRITE_EXTERNAL_STORAGE")}); 0055 #endif 0056 0057 qRegisterMetaType<KContacts::Addressee>(); 0058 qRegisterMetaType<KContacts::Picture>(); 0059 qRegisterMetaType<KContacts::Email>(); 0060 qRegisterMetaType<KContacts::Impp>(); 0061 qRegisterMetaType<KContacts::PhoneNumber>(); 0062 0063 ContactController contactController; 0064 qmlRegisterSingletonInstance("org.kde.phonebook", 1, 0, "ContactController", &contactController); 0065 0066 engine.load(QUrl(QStringLiteral("qrc:///main.qml"))); 0067 0068 if (engine.rootObjects().isEmpty()) { 0069 return -1; 0070 } 0071 0072 const auto rootObjects = engine.rootObjects(); 0073 for (auto obj : rootObjects) { 0074 auto view = qobject_cast<QQuickWindow *>(obj); 0075 if (view) { 0076 KConfig dataResource(QStringLiteral("data"), KConfig::SimpleConfig, QStandardPaths::AppDataLocation); 0077 KConfigGroup windowGroup(&dataResource, QStringLiteral("Window")); 0078 KWindowConfig::restoreWindowSize(view, windowGroup); 0079 KWindowConfig::restoreWindowPosition(view, windowGroup); 0080 break; 0081 } 0082 } 0083 0084 // required for X11 0085 app.setWindowIcon(QIcon::fromTheme(QStringLiteral("org.kde.krecorder"))); 0086 0087 return app.exec(); 0088 }