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 }