File indexing completed on 2024-05-05 04:45:52

0001 
0002 
0003 #include <QQmlApplicationEngine>
0004 #include <QQmlContext>
0005 #include <QIcon>
0006 #include <QCommandLineParser>
0007 
0008 #include <QApplication>
0009 
0010 #include <MauiKit3/Core/mauiapp.h>
0011 
0012 #include <KAboutData>
0013 #include <KI18n/KLocalizedString>
0014 
0015 #include "../bonsai_version.h"
0016 
0017 #include "controllers/projectmanager.h"
0018 #include "controllers/branchesmanager.h"
0019 #include "controllers/project.h"
0020 #include "models/projectsmodel.h"
0021 
0022 #include <libkommit/models/logsmodel.h>
0023 #include <libkommit/models/remotesmodel.h>
0024 #include <libkommit/gitremote.h>
0025 
0026 #define BONSAI_URI "org.maui.bonsai"
0027 
0028 Q_DECL_EXPORT int main(int argc, char *argv[])
0029 {    
0030     QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
0031     QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps, true);
0032 
0033         QApplication app(argc, argv);
0034 
0035         app.setOrganizationName(QStringLiteral("Maui"));
0036         app.setWindowIcon(QIcon(":/assets/assets/bonsai.svg"));
0037 
0038         KLocalizedString::setApplicationDomain("bonsai");
0039         KAboutData about(QStringLiteral("bonsai"),
0040                          QStringLiteral("Bonsai"),
0041                          BONSAI_VERSION_STRING, 
0042                          i18n("Git version control manager."), 
0043                          KAboutLicense::LGPL_V3, 
0044                          APP_COPYRIGHT_NOTICE, 
0045                          QString(GIT_BRANCH) + "/" + QString(GIT_COMMIT_HASH));
0046 
0047         about.addAuthor(QStringLiteral("Camilo Higuita"), i18n("Developer"), QStringLiteral("milo.h@aol.com"));
0048         about.setHomepage("https://mauikit.org");
0049         about.setProductName("maui/bonsai");
0050         about.setBugAddress("https://invent.kde.org/maui/bonsai/-/issues");
0051         about.setOrganizationDomain(BONSAI_URI);
0052         about.setProgramLogo(app.windowIcon());
0053         about.addComponent("libkommit");
0054 
0055         about.addCredit(QStringLiteral("Hamed Masafi"), i18n("Kommit Developer"));
0056 
0057         KAboutData::setApplicationData(about);
0058         MauiApp::instance()->setIconName("qrc:/assets/assets/bonsai.png");
0059 
0060         QCommandLineParser parser;
0061         parser.setApplicationDescription(about.shortDescription());
0062         parser.process(app);
0063         about.processCommandLine(&parser);
0064 
0065         QQmlApplicationEngine engine;
0066         const QUrl url(QStringLiteral("qrc:/main.qml"));
0067         QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
0068                                          &app, [url](QObject *obj, const QUrl &objUrl)
0069         {
0070                 if (!obj && url == objUrl)
0071                         QCoreApplication::exit(-1);
0072 
0073         }, Qt::QueuedConnection);
0074 
0075         engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
0076 
0077         qmlRegisterAnonymousType<ProjectsModel>(BONSAI_URI, 1);
0078         qmlRegisterUncreatableType<Git::RemotesModel>(BONSAI_URI, 1, 0, "RemotesModel", "Use it from the Project instance");
0079         qmlRegisterUncreatableType<Git::LogsModel>(BONSAI_URI, 1, 0, "CommitsModel", "Use it from the Project instance");
0080 //        qmlRegisterAnonymousType<Git::Remote>(BONSAI_URI, 1);
0081 //        qmlRegisterAnonymousType<Git::RemoteBranch>(BONSAI_URI, 1);
0082         qmlRegisterAnonymousType<BranchesManager>(BONSAI_URI, 1);
0083         qmlRegisterUncreatableType<StatusMessage>(BONSAI_URI, 1, 0, "StatusMessage", "Can not be created only referenced");
0084         qmlRegisterType<Project>(BONSAI_URI, 1, 0, "Project");
0085         qmlRegisterType<ProjectManager>(BONSAI_URI, 1, 0, "ProjectManager");
0086         qmlRegisterSingletonInstance<GlobalSettings>(BONSAI_URI, 1, 0, "Settings", GlobalSettings::instance());
0087 
0088     engine.load(url);
0089 
0090         return app.exec();
0091 }