File indexing completed on 2024-05-19 16:38:18

0001 // SPDX-FileCopyrightText: 2021 Aditya Mehra <aix.m@outlook.com>
0002 //
0003 // SPDX-License-Identifier: GPL-2.0-or-later
0004 
0005 #include <QGuiApplication>
0006 #include <QQmlApplicationEngine>
0007 #include <QQuickStyle>
0008 #include <QStandardPaths>
0009 #include <QQmlContext>
0010 
0011 #include <KLocalizedContext>
0012 #include <KLocalizedString>
0013 
0014 int main(int argc, char *argv[])
0015 {
0016     QStringList arguments;
0017     for (int a = 0; a < argc; ++a) {
0018         arguments << QString::fromLocal8Bit(argv[a]);
0019     }
0020 
0021     qputenv("QT_VIRTUALKEYBOARD_DESKTOP_DISABLE", QByteArray("0"));
0022     qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
0023 
0024 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
0025     QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
0026     QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
0027 #endif
0028     QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);
0029     QCoreApplication::setOrganizationName(QStringLiteral("PlankPlayer"));
0030     QCoreApplication::setApplicationName(QStringLiteral("PlankPlayer"));
0031 
0032     QQuickStyle::setStyle(QStringLiteral("org.kde.desktop"));
0033     QQuickStyle::setFallbackStyle(QStringLiteral("Fusion"));
0034     QGuiApplication app(argc, argv);
0035     KLocalizedString::setApplicationDomain("plank-player");
0036 
0037     QQmlApplicationEngine engine;
0038     engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
0039     QUrl homePath(QStandardPaths::writableLocation(QStandardPaths::HomeLocation));
0040     engine.rootContext()->setContextProperty(QStringLiteral("HomeDirectory"), homePath);
0041 
0042     QString argumentFileUrl;
0043 
0044     if (arguments.count() > 1) {
0045         QUrl url = QUrl::fromUserInput(arguments.at(1));
0046         if (url.isValid()) {
0047             argumentFileUrl = url.toString();
0048         }
0049     }
0050 
0051     engine.rootContext()->setContextProperty(QStringLiteral("argumentFileUrl"), argumentFileUrl);
0052 
0053     const QUrl url(QStringLiteral("qrc:/qml/main.qml"));
0054     QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
0055                      &app, [url](QObject *obj, const QUrl &objUrl) {
0056         if (!obj && url == objUrl)
0057             QCoreApplication::exit(-1);
0058     }, Qt::QueuedConnection);
0059     engine.load(url);
0060 
0061     return app.exec();
0062 }