File indexing completed on 2024-04-28 08:48:55
0001 /** 0002 * SPDX-FileCopyrightText: 2018 Aleix Pol Gonzalez <aleixpol@kde.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #include <QApplication> 0008 #include <QCommandLineParser> 0009 #include <QIcon> 0010 #include <QProcess> 0011 #include <QQmlApplicationEngine> 0012 #include <QQmlContext> 0013 #include <QQuickStyle> 0014 #include <QStandardPaths> 0015 0016 #include "kdeconnect-version.h" 0017 #include <KAboutData> 0018 #include <KColorSchemeManager> 0019 #include <KLocalizedContext> 0020 #include <KLocalizedString> 0021 0022 int main(int argc, char *argv[]) 0023 { 0024 QIcon::setFallbackThemeName(QStringLiteral("breeze")); 0025 QGuiApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); 0026 QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 0027 0028 QApplication app(argc, argv); 0029 KLocalizedString::setApplicationDomain("kdeconnect-app"); 0030 app.setWindowIcon(QIcon::fromTheme(QStringLiteral("kdeconnect"))); 0031 KAboutData aboutData(QStringLiteral("kdeconnect.app"), 0032 i18n("KDE Connect"), 0033 QStringLiteral(KDE_CONNECT_VERSION_STRING), 0034 i18n("KDE Connect"), 0035 KAboutLicense::GPL, 0036 i18n("(c) 2015, Aleix Pol Gonzalez")); 0037 aboutData.addAuthor(i18n("Aleix Pol Gonzalez"), i18n("Maintainer"), QStringLiteral("aleixpol@kde.org")); 0038 aboutData.setTranslator(i18nc("NAME OF TRANSLATORS", "Your names"), i18nc("EMAIL OF TRANSLATORS", "Your emails")); 0039 aboutData.setBugAddress("https://bugs.kde.org/enter_bug.cgi?product=kdeconnect&component=common"); 0040 KAboutData::setApplicationData(aboutData); 0041 0042 #ifdef Q_OS_WIN 0043 KColorSchemeManager manager; 0044 QApplication::setStyle(QStringLiteral("breeze")); 0045 #endif 0046 0047 // Default to org.kde.desktop style unless the user forces another style 0048 if (qEnvironmentVariableIsEmpty("QT_QUICK_CONTROLS_STYLE")) { 0049 QQuickStyle::setStyle(QStringLiteral("org.kde.desktop")); 0050 } 0051 0052 QString urlToShare; 0053 { 0054 QCommandLineParser parser; 0055 parser.addPositionalArgument(QStringLiteral("url"), i18n("URL to share")); 0056 aboutData.setupCommandLine(&parser); 0057 parser.process(app); 0058 aboutData.processCommandLine(&parser); 0059 if (parser.positionalArguments().count() == 1) { 0060 urlToShare = parser.positionalArguments().constFirst(); 0061 const QString kdeconnectHandlerExecutable = 0062 QStandardPaths::findExecutable(QStringLiteral("kdeconnect-handler"), {QCoreApplication::applicationDirPath()}); 0063 if (!kdeconnectHandlerExecutable.isEmpty()) { 0064 QProcess::startDetached(kdeconnectHandlerExecutable, {urlToShare}); 0065 return 0; // exit the app once kdeconnect-handler is started 0066 } 0067 } 0068 } 0069 0070 qmlRegisterSingletonType("org.kde.kdeconnect.app", 1, 0, "About", [](QQmlEngine *engine, QJSEngine *) -> QJSValue { 0071 return engine->toScriptValue(KAboutData::applicationData()); 0072 }); 0073 0074 QQmlApplicationEngine engine; 0075 engine.rootContext()->setContextObject(new KLocalizedContext(&engine)); 0076 engine.loadFromModule("org.kde.kdeconnect.app", "Main"); 0077 0078 return app.exec(); 0079 }