File indexing completed on 2024-05-12 05:14:03

0001 /*
0002     SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "publictransport.h"
0008 #include "localizer.h"
0009 
0010 #include <KPublicTransport/Stopover>
0011 
0012 #include <KLocalizedContext>
0013 
0014 #include <QQmlApplicationEngine>
0015 #include <QQmlContext>
0016 
0017 #include <QCommandLineParser>
0018 #include <QDebug>
0019 #include <QFile>
0020 #include <QGuiApplication>
0021 #include <QJsonDocument>
0022 #include <QJsonObject>
0023 #include <QUrl>
0024 
0025 int main(int argc, char **argv)
0026 {
0027     QCoreApplication::setApplicationName(QStringLiteral("vehiclelayoutviewer"));
0028     QCoreApplication::setOrganizationName(QStringLiteral("KDE"));
0029     QCoreApplication::setOrganizationDomain(QStringLiteral("kde.org"));
0030     QGuiApplication app(argc, argv);
0031 
0032     QCommandLineParser parser;
0033     parser.addHelpOption();
0034     QCommandLineOption coachOpt(QStringLiteral("c"), QStringLiteral("Reserved coach number"), QStringLiteral("coach number"));
0035     parser.addOption(coachOpt);
0036     QCommandLineOption seatOpt(QStringLiteral("s"), QStringLiteral("Reserved seat number"), QStringLiteral("seat"));
0037     parser.addOption(seatOpt);
0038     parser.addPositionalArgument(QStringLiteral("stopover file"), QStringLiteral("KPT stopver JSON file"), QStringLiteral("file"));
0039     parser.process(app);
0040 
0041     if (parser.positionalArguments().empty()) {
0042         parser.showHelp(1);
0043     }
0044 
0045     QFile file(parser.positionalArguments().at(0));
0046     if (!file.open(QFile::ReadOnly)) {
0047         qCritical("Failed to open file!");
0048         exit(1);
0049     }
0050 
0051     const auto stopover = KPublicTransport::Stopover::fromJson(QJsonDocument::fromJson(file.readAll()).object());
0052 
0053     qmlRegisterSingletonType("org.kde.itinerary", 1, 0, "PublicTransport", [](QQmlEngine*, QJSEngine *engine) -> QJSValue { \
0054         return engine->toScriptValue(PublicTransport()); \
0055     });
0056     qmlRegisterSingletonType("org.kde.itinerary", 1, 0, "Localizer", [](QQmlEngine*, QJSEngine *engine) -> QJSValue {
0057         return engine->toScriptValue(Localizer());
0058     });
0059 
0060     QQmlApplicationEngine engine;
0061     engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
0062     engine.rootContext()->setContextProperty(QStringLiteral("_stopover"), stopover);
0063     engine.rootContext()->setContextProperty(QStringLiteral("_coach"), parser.value(coachOpt));
0064     engine.rootContext()->setContextProperty(QStringLiteral("_seat"), parser.value(seatOpt));
0065     engine.load(QStringLiteral("qrc:/vehiclelayoutviewer.qml"));
0066 
0067     return app.exec();
0068 }