Skip to content
Snippets Groups Projects
main.cpp 1.72 KiB
Newer Older
  • Learn to ignore specific revisions
  • akiraohgaki's avatar
    akiraohgaki committed
    #include <QtGlobal>
    
    akiraohgaki's avatar
    akiraohgaki committed
    #include <QString>
    #include <QStringList>
    #include <QUrl>
    #include <QJsonObject>
    #include <QCommandLineParser>
    #include <QCoreApplication>
    #include <QGuiApplication>
    #include <QIcon>
    #include <QQmlApplicationEngine>
    #include <QQmlContext>
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    #include "qtlibs/config.h"
    
    akiraohgaki's avatar
    akiraohgaki committed
    #include "handlers/xdgurl.h"
    
    int main(int argc, char *argv[])
    {
        // Init
    
    akiraohgaki's avatar
    akiraohgaki committed
    #if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
        QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    #endif
    
    akiraohgaki's avatar
    akiraohgaki committed
        QGuiApplication app(argc, argv);
    
    
        qtlibs::Config config(":/configs");
        QJsonObject configApplication = config.get("application");
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    
    akiraohgaki's avatar
    akiraohgaki committed
        app.setApplicationName(configApplication["name"].toString());
        app.setApplicationVersion(configApplication["version"].toString());
        app.setOrganizationName(configApplication["organization"].toString());
        app.setOrganizationDomain(configApplication["domain"].toString());
        app.setWindowIcon(QIcon::fromTheme(configApplication["id"].toString(), QIcon(configApplication["icon"].toString())));
    
    akiraohgaki's avatar
    akiraohgaki committed
    
        // Setup CLI
        QCommandLineParser clParser;
    
    akiraohgaki's avatar
    akiraohgaki committed
        clParser.setApplicationDescription(configApplication["description"].toString());
    
    akiraohgaki's avatar
    akiraohgaki committed
        clParser.addHelpOption();
        clParser.addVersionOption();
        clParser.addPositionalArgument("xdgurl", "XDG-URL");
        clParser.process(app);
    
    
    akiraohgaki's avatar
    akiraohgaki committed
        QStringList args = clParser.positionalArguments();
    
    
    akiraohgaki's avatar
    akiraohgaki committed
        if (args.size() != 1) {
            clParser.showHelp(1);
        }
    
    
    akiraohgaki's avatar
    akiraohgaki committed
        QString xdgUrl = args.at(0);
    
    akiraohgaki's avatar
    akiraohgaki committed
    
        // Setup QML
        QQmlApplicationEngine qmlAppEngine;
        QQmlContext *qmlContext = qmlAppEngine.rootContext();
    
    akiraohgaki's avatar
    akiraohgaki committed
        qmlContext->setContextProperty("xdgUrlHandler", new handlers::XdgUrl(xdgUrl, config, qmlAppEngine));
    
    akiraohgaki's avatar
    akiraohgaki committed
        qmlAppEngine.load(QUrl("qrc:/qml/main.qml"));
    
        return app.exec();
    }