Skip to content
Snippets Groups Projects
main.cpp 1.95 KiB
Newer Older
akiraohgaki's avatar
akiraohgaki committed
#include <QString>
#include <QStringList>
#include <QUrl>
#include <QJsonObject>
#include <QTranslator>
#include <QLocale>
akiraohgaki's avatar
akiraohgaki committed
#include <QCommandLineParser>
akiraohgaki's avatar
akiraohgaki committed
#include <QApplication>
akiraohgaki's avatar
akiraohgaki committed
#include <QIcon>
#include <QQmlApplicationEngine>
#include <QQmlContext>

akiraohgaki's avatar
akiraohgaki committed
#include "handlers/confighandler.h"
akiraohgaki's avatar
akiraohgaki committed
#include "handlers/ocsurlhandler.h"
akiraohgaki's avatar
akiraohgaki committed

int main(int argc, char *argv[])
{
    // Init
akiraohgaki's avatar
akiraohgaki committed
    QApplication app(argc, argv);
akiraohgaki's avatar
akiraohgaki committed

    auto *configHandler = new ConfigHandler();
    auto appConfigApplication = configHandler->getAppConfigApplication();
akiraohgaki's avatar
akiraohgaki committed

akiraohgaki's avatar
akiraohgaki committed
    app.setApplicationName(appConfigApplication["name"].toString());
    app.setApplicationVersion(appConfigApplication["version"].toString());
    app.setOrganizationName(appConfigApplication["organization"].toString());
    app.setOrganizationDomain(appConfigApplication["domain"].toString());
    app.setWindowIcon(QIcon::fromTheme(appConfigApplication["id"].toString(), QIcon(appConfigApplication["icon"].toString())));
akiraohgaki's avatar
akiraohgaki committed

    // Setup translator
    QTranslator translator;
    if (translator.load(QLocale(), "messages", ".", ":/i18n")) {
        app.installTranslator(&translator);
    }

akiraohgaki's avatar
akiraohgaki committed
    // Setup CLI
    QCommandLineParser clParser;
akiraohgaki's avatar
akiraohgaki committed
    clParser.setApplicationDescription(appConfigApplication["description"].toString());
akiraohgaki's avatar
akiraohgaki committed
    clParser.addHelpOption();
    clParser.addVersionOption();
akiraohgaki's avatar
akiraohgaki committed
    clParser.addPositionalArgument("OCS-URL", "OCS-URL that starts with ocs://");
akiraohgaki's avatar
akiraohgaki committed
    clParser.process(app);

    auto args = clParser.positionalArguments();
akiraohgaki's avatar
akiraohgaki committed
    if (args.size() != 1) {
        clParser.showHelp(1);
    }

    auto ocsUrl = QString(args.at(0));
akiraohgaki's avatar
akiraohgaki committed

    // Setup QML
    QQmlApplicationEngine qmlAppEngine;
    auto *qmlContext = qmlAppEngine.rootContext();
akiraohgaki's avatar
akiraohgaki committed
    configHandler->setParent(&qmlAppEngine);
    qmlContext->setContextProperty("configHandler", configHandler);
    qmlContext->setContextProperty("ocsUrlHandler", new OcsUrlHandler(ocsUrl, configHandler, &qmlAppEngine));
akiraohgaki's avatar
akiraohgaki committed
    qmlAppEngine.load(QUrl("qrc:/qml/main.qml"));

    return app.exec();
}