/** * SPDX-FileCopyrightText: 2020 Tobias Fella * SPDX-FileCopyrightText: 2021 Bart De Vries * * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL */ #include #include #include #include #include #ifdef Q_OS_ANDROID #include #else #include #endif #include #include #include #include "alligator-version.h" #include "settingsmanager.h" #include "database.h" #include "entriesmodel.h" #include "feedsmodel.h" #include "fetcher.h" #include "queuemodel.h" #include "episodemodel.h" #include "datamanager.h" #include "audiomanager.h" #include "mpris2/mpris2.h" #ifdef Q_OS_ANDROID Q_DECL_EXPORT #endif int main(int argc, char *argv[]) { #ifdef Q_OS_ANDROID QGuiApplication app(argc, argv); QQuickStyle::setStyle(QStringLiteral("Material")); #else QApplication app(argc, argv); #endif QCoreApplication::setOrganizationName(QStringLiteral("KDE")); QCoreApplication::setOrganizationDomain(QStringLiteral("kde.org")); QCoreApplication::setApplicationName(QStringLiteral("Alligator")); qmlRegisterType("org.kde.alligator", 1, 0, "FeedsModel"); qmlRegisterType("org.kde.alligator", 1, 0, "QueueModel"); qmlRegisterType("org.kde.alligator", 1, 0, "EpisodeModel"); qmlRegisterUncreatableType("org.kde.alligator", 1, 0, "EntriesModel", QStringLiteral("Get from Feed")); qmlRegisterUncreatableType("org.kde.alligator", 1, 0, "Enclosure", QStringLiteral("Only for enums")); qmlRegisterSingletonType("org.kde.alligator", 1, 0, "Fetcher", [](QQmlEngine *engine, QJSEngine *) -> QObject * { engine->setObjectOwnership(&Fetcher::instance(), QQmlEngine::CppOwnership); return &Fetcher::instance(); }); qmlRegisterSingletonType("org.kde.alligator", 1, 0, "Database", [](QQmlEngine *engine, QJSEngine *) -> QObject * { engine->setObjectOwnership(&Database::instance(), QQmlEngine::CppOwnership); return &Database::instance(); }); qmlRegisterSingletonType("org.kde.alligator", 1, 0, "DataManager", [](QQmlEngine *engine, QJSEngine *) -> QObject * { engine->setObjectOwnership(&DataManager::instance(), QQmlEngine::CppOwnership); return &DataManager::instance(); }); qmlRegisterSingletonType("org.kde.alligator", 1, 0, "SettingsManager", [](QQmlEngine *engine, QJSEngine *) -> QObject * { engine->setObjectOwnership(SettingsManager::self(), QQmlEngine::CppOwnership); return SettingsManager::self(); }); /*qmlRegisterSingletonType("org.kde.alligator", 1, 0, "AudioManager", [](QQmlEngine *engine, QJSEngine *) -> QObject * { engine->setObjectOwnership(&AudioManager::instance(), QQmlEngine::CppOwnership); return &AudioManager::instance(); });*/ qmlRegisterType("org.kde.alligator", 1, 0, "AudioManager"); qmlRegisterType("org.kde.alligator", 1, 0, "Mpris2"); qRegisterMetaType("const Entry*"); // "hack" to make qml understand Entry* QQmlApplicationEngine engine; engine.rootContext()->setContextObject(new KLocalizedContext(&engine)); KLocalizedString::setApplicationDomain("alligator"); QCommandLineParser parser; parser.setApplicationDescription(i18n("RSS/Atom Feed Reader")); KAboutData about(QStringLiteral("alligator"), i18n("Alligator"), QStringLiteral(ALLIGATOR_VERSION_STRING), i18n("Feed Reader"), KAboutLicense::GPL, i18n("© 2020 KDE Community")); about.addAuthor(i18n("Tobias Fella"), QString(), QStringLiteral("fella@posteo.de")); KAboutData::setApplicationData(about); about.setupCommandLine(&parser); parser.process(app); about.processCommandLine(&parser); engine.rootContext()->setContextProperty(QStringLiteral("_aboutData"), QVariant::fromValue(about)); // Make sure that settings are saved before the application exits QObject::connect(&app, &QCoreApplication::aboutToQuit, SettingsManager::self(), &SettingsManager::save); Database::instance(); DataManager::instance(); //AudioManager::instance(); engine.load(QUrl(QStringLiteral("qrc:///main.qml"))); if (engine.rootObjects().isEmpty()) { return -1; } return app.exec(); }