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 }