2020-02-28 23:25:08 +01:00
|
|
|
/**
|
2020-08-14 20:56:04 +02:00
|
|
|
* SPDX-FileCopyrightText: 2020 Tobias Fella <fella@posteo.de>
|
2021-04-08 13:16:36 +02:00
|
|
|
* SPDX-FileCopyrightText: 2021 Bart De Vries <bart@mogwai.be>
|
2020-02-28 23:25:08 +01:00
|
|
|
*
|
2020-08-14 20:56:04 +02:00
|
|
|
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
2020-02-28 23:25:08 +01:00
|
|
|
*/
|
|
|
|
|
2020-04-21 23:27:15 +02:00
|
|
|
|
2020-05-18 16:47:12 +02:00
|
|
|
#include <QCommandLineParser>
|
2020-02-28 23:25:08 +01:00
|
|
|
#include <QQmlApplicationEngine>
|
2020-03-26 14:16:19 +01:00
|
|
|
#include <QQmlContext>
|
2020-04-22 02:17:57 +02:00
|
|
|
#include <QQuickView>
|
2020-08-17 20:21:56 +02:00
|
|
|
#include <QQuickStyle>
|
2020-03-26 14:16:19 +01:00
|
|
|
|
2020-10-08 20:52:31 +02:00
|
|
|
#ifdef Q_OS_ANDROID
|
|
|
|
#include <QGuiApplication>
|
|
|
|
#else
|
|
|
|
#include <QApplication>
|
|
|
|
#endif
|
|
|
|
|
2020-03-26 14:16:19 +01:00
|
|
|
#include <KAboutData>
|
2020-04-21 23:27:15 +02:00
|
|
|
#include <KLocalizedContext>
|
2020-04-22 02:17:57 +02:00
|
|
|
#include <KLocalizedString>
|
2020-02-28 23:25:08 +01:00
|
|
|
|
2020-10-22 14:41:30 +02:00
|
|
|
#include "alligator-version.h"
|
2020-03-26 14:16:19 +01:00
|
|
|
#include "alligatorsettings.h"
|
2020-04-22 02:17:57 +02:00
|
|
|
#include "database.h"
|
2020-10-09 13:47:35 +02:00
|
|
|
#include "entriesmodel.h"
|
|
|
|
#include "feedsmodel.h"
|
2020-04-25 22:16:19 +02:00
|
|
|
#include "fetcher.h"
|
2021-03-26 16:26:19 +01:00
|
|
|
#include "queuemodel.h"
|
2021-04-02 17:06:27 +02:00
|
|
|
#include "datamanager.h"
|
2020-02-28 23:25:08 +01:00
|
|
|
|
2020-04-21 23:27:15 +02:00
|
|
|
#ifdef Q_OS_ANDROID
|
|
|
|
Q_DECL_EXPORT
|
|
|
|
#endif
|
|
|
|
int main(int argc, char *argv[])
|
2020-02-28 23:25:08 +01:00
|
|
|
{
|
2020-04-21 23:27:15 +02:00
|
|
|
#ifdef Q_OS_ANDROID
|
|
|
|
QGuiApplication app(argc, argv);
|
2020-08-17 20:21:56 +02:00
|
|
|
QQuickStyle::setStyle(QStringLiteral("Material"));
|
2020-04-21 23:27:15 +02:00
|
|
|
#else
|
2020-02-28 23:25:08 +01:00
|
|
|
QApplication app(argc, argv);
|
2020-04-21 23:27:15 +02:00
|
|
|
#endif
|
|
|
|
|
2020-02-28 23:25:08 +01:00
|
|
|
QCoreApplication::setOrganizationName(QStringLiteral("KDE"));
|
|
|
|
QCoreApplication::setOrganizationDomain(QStringLiteral("kde.org"));
|
|
|
|
QCoreApplication::setApplicationName(QStringLiteral("Alligator"));
|
|
|
|
|
2020-10-09 13:47:35 +02:00
|
|
|
qmlRegisterType<FeedsModel>("org.kde.alligator", 1, 0, "FeedsModel");
|
2021-03-26 16:26:19 +01:00
|
|
|
qmlRegisterType<QueueModel>("org.kde.alligator", 1, 0, "QueueModel");
|
2020-10-09 13:47:35 +02:00
|
|
|
qmlRegisterUncreatableType<EntriesModel>("org.kde.alligator", 1, 0, "EntriesModel", QStringLiteral("Get from Feed"));
|
2021-02-21 19:54:10 +01:00
|
|
|
qmlRegisterUncreatableType<Enclosure>("org.kde.alligator", 1, 0, "Enclosure", QStringLiteral("Only for enums"));
|
2020-05-19 20:37:51 +02:00
|
|
|
qmlRegisterSingletonType<Fetcher>("org.kde.alligator", 1, 0, "Fetcher", [](QQmlEngine *engine, QJSEngine *) -> QObject * {
|
|
|
|
engine->setObjectOwnership(&Fetcher::instance(), QQmlEngine::CppOwnership);
|
|
|
|
return &Fetcher::instance();
|
|
|
|
});
|
2020-05-26 16:32:07 +02:00
|
|
|
qmlRegisterSingletonType<Database>("org.kde.alligator", 1, 0, "Database", [](QQmlEngine *engine, QJSEngine *) -> QObject * {
|
|
|
|
engine->setObjectOwnership(&Database::instance(), QQmlEngine::CppOwnership);
|
|
|
|
return &Database::instance();
|
|
|
|
});
|
2021-04-02 17:06:27 +02:00
|
|
|
qmlRegisterSingletonType<DataManager>("org.kde.alligator", 1, 0, "DataManager", [](QQmlEngine *engine, QJSEngine *) -> QObject * {
|
|
|
|
engine->setObjectOwnership(&DataManager::instance(), QQmlEngine::CppOwnership);
|
|
|
|
return &DataManager::instance();
|
|
|
|
});
|
2021-04-09 16:55:05 +02:00
|
|
|
qmlRegisterSingletonType<AlligatorSettings>("org.kde.alligator", 1, 0, "AlligatorSettings", [](QQmlEngine *engine, QJSEngine *) -> QObject * {
|
|
|
|
engine->setObjectOwnership(AlligatorSettings::self(), QQmlEngine::CppOwnership);
|
|
|
|
return AlligatorSettings::self();
|
|
|
|
});
|
2020-02-28 23:25:08 +01:00
|
|
|
|
|
|
|
QQmlApplicationEngine engine;
|
2020-04-21 23:27:15 +02:00
|
|
|
engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
|
2020-11-01 12:58:44 +01:00
|
|
|
KLocalizedString::setApplicationDomain("alligator");
|
2020-02-28 23:25:08 +01:00
|
|
|
|
2020-05-11 21:13:27 +02:00
|
|
|
QCommandLineParser parser;
|
2020-06-01 01:11:21 +02:00
|
|
|
parser.setApplicationDescription(i18n("RSS/Atom Feed Reader"));
|
2020-05-11 21:13:27 +02:00
|
|
|
|
2020-10-22 14:41:30 +02:00
|
|
|
KAboutData about(QStringLiteral("alligator"), i18n("Alligator"), QStringLiteral(ALLIGATOR_VERSION_STRING), i18n("Feed Reader"), KAboutLicense::GPL, i18n("© 2020 KDE Community"));
|
2020-04-15 21:21:08 +02:00
|
|
|
about.addAuthor(i18n("Tobias Fella"), QString(), QStringLiteral("fella@posteo.de"));
|
2020-03-26 14:16:19 +01:00
|
|
|
KAboutData::setApplicationData(about);
|
|
|
|
|
2020-06-01 01:11:21 +02:00
|
|
|
about.setupCommandLine(&parser);
|
|
|
|
parser.process(app);
|
|
|
|
about.processCommandLine(&parser);
|
|
|
|
|
2020-03-26 14:16:19 +01:00
|
|
|
engine.rootContext()->setContextProperty(QStringLiteral("_aboutData"), QVariant::fromValue(about));
|
|
|
|
|
2021-04-09 16:55:05 +02:00
|
|
|
// Make sure that settings are saved before the application exits
|
|
|
|
QObject::connect(&app, &QCoreApplication::aboutToQuit, AlligatorSettings::self(), &AlligatorSettings::save);
|
2021-02-17 17:19:23 +02:00
|
|
|
|
2020-03-16 22:37:04 +01:00
|
|
|
Database::instance();
|
2020-02-28 23:25:08 +01:00
|
|
|
|
2021-04-02 17:06:27 +02:00
|
|
|
DataManager::instance();
|
|
|
|
|
2020-02-28 23:25:08 +01:00
|
|
|
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
|
|
|
|
|
|
|
|
if (engine.rootObjects().isEmpty()) {
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
return app.exec();
|
|
|
|
}
|