File indexing completed on 2024-05-12 17:22:45
0001 // SPDX-FileCopyrightText: 2023 Felipe Kinoshita <kinofhek@gmail.com> 0002 // SPDX-License-Identifier: LGPL-2.1-or-later 0003 0004 #include <QApplication> 0005 #include <QIcon> 0006 #include <QQmlApplicationEngine> 0007 #include <QQuickStyle> 0008 #include <QQuickWindow> 0009 #include <QtQml> 0010 #include <QUrl> 0011 0012 #include <KAboutData> 0013 #include <KDBusService> 0014 #include <KLocalizedContext> 0015 #include <KLocalizedString> 0016 0017 constexpr auto APPLICATION_ID = "org.kde.notae"; 0018 0019 #include "about.h" 0020 #include "version-notae.h" 0021 #include "config.h" 0022 #include "app.h" 0023 #include "documenthandler.h" 0024 0025 Q_DECL_EXPORT int main(int argc, char *argv[]) 0026 { 0027 QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 0028 QApplication app(argc, argv); 0029 QQuickStyle::setStyle(QStringLiteral("org.kde.desktop")); 0030 0031 KLocalizedString::setApplicationDomain("notae"); 0032 0033 QCoreApplication::setOrganizationName(QStringLiteral("KDE")); 0034 QCoreApplication::setApplicationName(QStringLiteral("notae")); 0035 0036 KAboutData aboutData( 0037 // The program name used internally. 0038 QStringLiteral("notae"), 0039 // A displayable program name string. 0040 i18nc("@title", "Notae"), 0041 // The program version string. 0042 QStringLiteral(NOTAE_VERSION_STRING), 0043 // Short description of what the app does. 0044 i18n("Take notes easily"), 0045 // The license this code is released under. 0046 KAboutLicense::GPL, 0047 // Copyright Statement. 0048 i18n("© Felipe Kinoshita 2023")); 0049 aboutData.addAuthor(i18nc("@info:credit", "Felipe Kinoshita"), i18nc("@info:credit", "Author"), QStringLiteral("kinofhek@gmail.com"), QStringLiteral("https://fhek.gitlab.io")); 0050 aboutData.setBugAddress("https://invent.kde.org/fhek/notae/-/issues/new"); 0051 KAboutData::setApplicationData(aboutData); 0052 QGuiApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("org.kde.notae"))); 0053 0054 QQmlApplicationEngine engine; 0055 0056 auto config = Config::self(); 0057 AboutType about; 0058 App application; 0059 0060 qmlRegisterSingletonInstance(APPLICATION_ID, 1, 0, "Config", config); 0061 qmlRegisterSingletonInstance(APPLICATION_ID, 1, 0, "AboutType", &about); 0062 qmlRegisterSingletonInstance(APPLICATION_ID, 1, 0, "App", &application); 0063 0064 qmlRegisterType<DocumentHandler>(APPLICATION_ID, 1, 0, "DocumentHandler"); 0065 0066 engine.rootContext()->setContextObject(new KLocalizedContext(&engine)); 0067 KLocalizedString::setApplicationDomain("notae"); 0068 engine.load(QUrl(QStringLiteral("qrc:///main.qml"))); 0069 0070 if (engine.rootObjects().isEmpty()) { 0071 return -1; 0072 } 0073 0074 KDBusService service(KDBusService::Unique); 0075 0076 // Restore window size and position 0077 const auto rootObjects = engine.rootObjects(); 0078 for (auto obj : rootObjects) { 0079 auto view = qobject_cast<QQuickWindow *>(obj); 0080 if (view) { 0081 if (view->isVisible()) { 0082 application.restoreWindowGeometry(view); 0083 } 0084 break; 0085 } 0086 } 0087 0088 return app.exec(); 0089 }