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 }