File indexing completed on 2024-04-21 04:45:29

0001 #include <QCommandLineParser>
0002 #include <QIcon>
0003 #include <QPair>
0004 
0005 #include <QQmlApplicationEngine>
0006 #include <QQmlContext>
0007 
0008 #ifdef Q_OS_ANDROID
0009 #include <QGuiApplication>
0010 #include <MauiKit3/Core/mauiandroid.h>
0011 #else
0012 #include <QApplication>
0013 #endif
0014 
0015 #include <MauiKit3/Core/mauiapp.h>
0016 #include <MauiKit3/FileBrowsing/moduleinfo.h>
0017 #include <MauiKit3/Documents/moduleinfo.h>
0018 
0019 //#include "epubreader.h"
0020 
0021 #include "library.h"
0022 #include "models/library/librarymodel.h"
0023 #include "models/placesmodel.h"
0024 //#include "./src/models/cloud/cloud.h"
0025 
0026 #include <KI18n/KLocalizedString>
0027 
0028 #include "../shelf_version.h"
0029 
0030 #define SHELF_URI "org.maui.shelf"
0031 
0032 int main(int argc, char *argv[])
0033 {
0034     QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
0035     QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps, true);
0036 
0037 #ifdef Q_OS_ANDROID
0038     QGuiApplication app(argc, argv);
0039     if (!MAUIAndroid::checkRunTimePermissions({"android.permission.WRITE_EXTERNAL_STORAGE"}))
0040         return -1;
0041 #else
0042     QApplication app(argc, argv);
0043 #endif
0044 
0045     app.setOrganizationName("Maui");
0046     app.setWindowIcon(QIcon(":/assets/shelf.svg"));
0047 
0048     KLocalizedString::setApplicationDomain("shelf");
0049     KAboutData about(QStringLiteral("shelf"),
0050                      QStringLiteral("Shelf"),
0051                      SHELF_VERSION_STRING,
0052                      i18n("Browse and view your documents."),
0053                      KAboutLicense::LGPL_V3,
0054                      APP_COPYRIGHT_NOTICE,
0055                      QString(GIT_BRANCH) + "/" + QString(GIT_COMMIT_HASH));
0056 
0057     about.addAuthor(QStringLiteral("Camilo Higuita"), i18n("Developer"), QStringLiteral("milo.h@aol.com"));
0058     about.setHomepage("https://mauikit.org");
0059     about.setProductName("maui/shelf");
0060     about.setBugAddress("https://invent.kde.org/maui/shelf/-/issues");
0061     about.setOrganizationDomain(SHELF_URI);
0062     about.setProgramLogo(app.windowIcon());
0063 
0064     about.addCredit(i18n("Peruse Developers"));
0065 
0066     const auto FBData = MauiKitFileBrowsing::aboutData();
0067     about.addComponent(FBData.name(), MauiKitFileBrowsing::buildVersion(), FBData.version(), FBData.webAddress());
0068 
0069     const auto DData = MauiKitDocuments::aboutData();
0070     about.addComponent(DData.name(), MauiKitDocuments::buildVersion(), DData.version(), DData.webAddress());
0071 
0072     const auto PopplerData = MauiKitDocuments::aboutPoppler();
0073     about.addComponent(PopplerData.name(), "", PopplerData.version(), PopplerData.webAddress());
0074 
0075     KAboutData::setApplicationData(about);
0076     MauiApp::instance ()->setIconName ("qrc:/assets/shelf.svg");
0077 
0078     QCommandLineParser parser;
0079 
0080     about.setupCommandLine(&parser);
0081     parser.process(app);
0082 
0083     about.processCommandLine(&parser);
0084     const QStringList args = parser.positionalArguments();
0085 
0086     QPair<QString, QList<QUrl>> arguments;
0087     arguments.first = "collection";
0088 
0089     if (!args.isEmpty())
0090     {
0091         arguments.first = "viewer";
0092     }
0093 
0094     QQmlApplicationEngine engine;
0095     QUrl url(QStringLiteral("qrc:/main.qml"));
0096     QObject::connect(
0097                 &engine,
0098                 &QQmlApplicationEngine::objectCreated,
0099                 &app,
0100                 [url, args](QObject *obj, const QUrl &objUrl) {
0101         if (!obj && url == objUrl)
0102             QCoreApplication::exit(-1);
0103 
0104         if (!args.isEmpty())
0105             Library::instance()->openFiles(args);
0106     },
0107     Qt::QueuedConnection);
0108 
0109     engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
0110 
0111     engine.rootContext()->setContextProperty("globalQmlEngine", &engine);
0112 
0113     engine.rootContext()->setContextProperty("initModule", arguments.first);
0114     engine.rootContext()->setContextProperty("initData", QUrl::toStringList(arguments.second));
0115 
0116     //  qmlRegisterType<EpubReader>("EPUB", 1, 0, "Document");
0117     qmlRegisterType<LibraryModel>(SHELF_URI, 1, 0, "LibraryList");
0118     qmlRegisterType<PlacesModel>(SHELF_URI, 1, 0, "PlacesList");
0119     qmlRegisterSingletonInstance<Library>(SHELF_URI, 1, 0, "Library", Library::instance());
0120 
0121     engine.load(url);
0122 
0123     return app.exec();
0124 }