Warning, file /plasma-mobile/plasma-camera/src/main.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // SPDX-FileCopyrightText: 2020 Jonah Brüchert <jbb@kaidan.im>
0002 //
0003 // SPDX-License-Identifier: GPL-3.0-or-later
0004 
0005 #include <QQmlApplicationEngine>
0006 #include <QtQml>
0007 #include <QUrl>
0008 #include <QIcon>
0009 
0010 #include <KAboutData>
0011 #include <KLocalizedString>
0012 #include <KLocalizedContext>
0013 
0014 #include "plasmacamera.h"
0015 #include "camerasettings.h"
0016 
0017 #ifdef Q_OS_ANDROID
0018 #include <QtAndroid>
0019 #include <QGuiApplication>
0020 #else
0021 #include <QApplication>
0022 #endif
0023 
0024 constexpr auto URI = "org.kde.plasmacamera";
0025 
0026 Q_DECL_EXPORT int main(int argc, char *argv[])
0027 {
0028     QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
0029 #ifdef Q_OS_ANDROID
0030     QGuiApplication app(argc, argv);
0031 #else
0032     QApplication app(argc, argv);
0033 #endif
0034 
0035     KLocalizedString::setApplicationDomain("plasma-camera");
0036 
0037     QCoreApplication::setOrganizationName("KDE");
0038     QCoreApplication::setOrganizationDomain("kde.org");
0039     QCoreApplication::setApplicationName("plasma-camera");
0040     QGuiApplication::setApplicationDisplayName("Plasma Camera");
0041     QGuiApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("camera-photo")));
0042 
0043     KAboutData about(app.applicationName(), app.applicationDisplayName(), app.applicationVersion(), QString(),
0044                      KAboutLicense::GPL, i18n("© Plasma Mobile Developers"), QString());
0045 
0046     about.addAuthor(i18n("Marco Martin"), QString(), QStringLiteral("mart@kde.org"), QStringLiteral("https://notmart.org"));
0047     about.addAuthor(i18n("Jonah Brüchert"), QString(), QStringLiteral("jbb@kaidan.im"), QStringLiteral("https://jbbgameich.github.io"));
0048     about.setProgramLogo(app.windowIcon());
0049 
0050     KAboutData::setApplicationData(about);
0051 
0052 #ifdef Q_OS_ANDROID
0053     QtAndroid::requestPermissionsSync({"android.permission.CAMERA"});
0054 #endif
0055 
0056     QQmlApplicationEngine engine;
0057 
0058     PlasmaCamera plasmaCamera;
0059     plasmaCamera.setAboutData(about);
0060     qmlRegisterSingletonInstance<PlasmaCamera>(URI, 1, 0, "PlasmaCamera", &plasmaCamera);
0061     qmlRegisterSingletonInstance<CameraSettings>(URI, 1, 0, "CameraSettings", CameraSettings::self());
0062 
0063     QObject::connect(QCoreApplication::instance(), &QCoreApplication::aboutToQuit, QCoreApplication::instance(), [] {
0064         CameraSettings::self()->save();
0065     });
0066 
0067     engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
0068 
0069     engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
0070 
0071     if (engine.rootObjects().isEmpty()) {
0072         return -1;
0073     }
0074 
0075     return app.exec();
0076 }