File indexing completed on 2024-05-12 17:24:21
0001 // SPDX-FileCopyrightText: 2022 Felipe Kinoshita <kinofhek@gmail.com> 0002 // SPDX-License-Identifier: LGPL-2.1-or-later 0003 0004 #include <QtGlobal> 0005 #ifdef Q_OS_ANDROID 0006 #include <QGuiApplication> 0007 #else 0008 #include <QApplication> 0009 #endif 0010 #include <QIcon> 0011 #include <QQmlApplicationEngine> 0012 #include <QUrl> 0013 #include <QtQml> 0014 #include <QQuickWindow> 0015 #include <QQuickStyle> 0016 0017 #include <KAboutData> 0018 #include <KLocalizedContext> 0019 #include <KLocalizedString> 0020 #ifdef HAVE_KDBUSADDONS 0021 #include <KDBusService> 0022 #endif 0023 0024 constexpr auto APPLICATION_ID = "org.kde.vail"; 0025 0026 #include "version-vail.h" 0027 #include "app.h" 0028 #include "translator.h" 0029 0030 #ifdef Q_OS_ANDROID 0031 Q_DECL_EXPORT 0032 #endif 0033 int main(int argc, char *argv[]) 0034 { 0035 #ifdef Q_OS_ANDROID 0036 QGuiApplication app(argc, argv); 0037 QQuickStyle::setStyle(QStringLiteral("org.kde.breeze")); 0038 #else 0039 QApplication app(argc, argv); 0040 // Default to org.kde.desktop style unless the user forces another style 0041 if (qEnvironmentVariableIsEmpty("QT_QUICK_CONTROLS_STYLE")) { 0042 QQuickStyle::setStyle(QStringLiteral("org.kde.desktop")); 0043 } 0044 #endif 0045 0046 #ifdef Q_OS_WINDOWS 0047 if (AttachConsole(ATTACH_PARENT_PROCESS)) { 0048 freopen("CONOUT$", "w", stdout); 0049 freopen("CONOUT$", "w", stderr); 0050 } 0051 0052 QApplication::setStyle(QStringLiteral("breeze")); 0053 auto font = app.font(); 0054 font.setPointSize(10); 0055 app.setFont(font); 0056 #endif 0057 0058 KLocalizedString::setApplicationDomain("vail"); 0059 0060 QCoreApplication::setOrganizationName(QStringLiteral("KDE")); 0061 0062 KAboutData aboutData(QStringLiteral("vail"), 0063 i18nc("@title", "Vail"), 0064 QStringLiteral(VAIL_VERSION_STRING), 0065 i18n("Communicate using Morse"), 0066 KAboutLicense::GPL, 0067 i18n("© 2022")); 0068 aboutData.addAuthor(i18nc("@info:credit", "Felipe Kinoshita"), i18nc("@info:credit", "Author"), QStringLiteral("kinofhek@gmail.com"), QStringLiteral("https://fhek.gitlab.io")); 0069 aboutData.setTranslator(i18nc("NAME OF TRANSLATORS", "Your names"), i18nc("EMAIL OF TRANSLATORS", "Your emails")); 0070 aboutData.setBugAddress("https://invent.kde.org/fhek/vail/-/issues/new"); 0071 KAboutData::setApplicationData(aboutData); 0072 QGuiApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("org.kde.vail"))); 0073 0074 QQmlApplicationEngine engine; 0075 0076 qmlRegisterSingletonType(APPLICATION_ID, 1, 0, "About", [](QQmlEngine *engine, QJSEngine *) -> QJSValue { 0077 return engine->toScriptValue(KAboutData::applicationData()); 0078 }); 0079 0080 App application; 0081 qmlRegisterSingletonInstance(APPLICATION_ID, 1, 0, "App", &application); 0082 0083 Translator translator; 0084 qmlRegisterSingletonInstance(APPLICATION_ID, 1, 0, "Translator", &translator); 0085 0086 engine.rootContext()->setContextObject(new KLocalizedContext(&engine)); 0087 engine.load(QUrl(QStringLiteral("qrc:///main.qml"))); 0088 0089 if (engine.rootObjects().isEmpty()) { 0090 return -1; 0091 } 0092 0093 #ifdef HAVE_KDBUSADDONS 0094 KDBusService service(KDBusService::Unique); 0095 #endif 0096 0097 // Restore window size and position 0098 const auto rootObjects = engine.rootObjects(); 0099 for (auto obj : rootObjects) { 0100 auto view = qobject_cast<QQuickWindow *>(obj); 0101 if (view) { 0102 if (view->isVisible()) { 0103 application.restoreWindowGeometry(view); 0104 } 0105 break; 0106 } 0107 } 0108 0109 return app.exec(); 0110 }