File indexing completed on 2024-04-14 05:46:50
0001 /** 0002 * SPDX-FileCopyrightText: 2015 by Kåre Särs <kare.sars@iki .fi> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #include <QApplication> 0008 #include <QQmlApplicationEngine> 0009 #include <QQmlContext> 0010 #include <QCommandLineParser> 0011 #include <QIcon> 0012 #include <QImage> 0013 0014 #include <KAboutData> 0015 #include <KCrash> 0016 #include <KLocalizedContext> 0017 #include <KLocalizedString> 0018 #include <KSaneCore/Option> 0019 0020 #include "DevicesModel.h" 0021 #include "DocumentModel.h" 0022 #include "FormatModel.h" 0023 #include "FilteredOptionsModel.h" 0024 #include "OCRLanguageModel.h" 0025 #include "InProgressPainter.h" 0026 #include "Skanpage.h" 0027 #include "SkanpageUtils.h" 0028 #include "skanpage_version.h" 0029 #include "skanpage_config.h" 0030 #include "skanpage_state.h" 0031 0032 int main(int argc, char *argv[]) 0033 { 0034 QApplication app(argc, argv); 0035 0036 qmlRegisterUncreatableType<DocumentModel>("org.kde.skanpage", 1, 0, "DocumentModel", QStringLiteral("Document model class uncreateable")); 0037 qmlRegisterUncreatableType<DevicesModel>("org.kde.skanpage", 1, 0, "DevicesModel", QStringLiteral("Device model class uncreateable")); 0038 qmlRegisterUncreatableType<FormatModel>("org.kde.skanpage", 1, 0, "FormatModel", QStringLiteral("Format model class uncreateable")); 0039 qmlRegisterUncreatableType<FilteredOptionsModel>("org.kde.skanpage", 1, 0, "FilteredOptionsModel", QStringLiteral("Filtered options model class uncreateable")); 0040 qmlRegisterUncreatableType<OCRLanguageModel>("org.kde.skanpage", 1, 0, "OCRLanguageModel", QStringLiteral("OCR language model class uncreateable"));; 0041 qmlRegisterUncreatableType<KSaneCore::Option>("org.kde.skanpage", 1, 0, "KSaneOption", QStringLiteral("KSaneOption class uncreateable")); 0042 qmlRegisterUncreatableType<Skanpage>("org.kde.skanpage", 1, 0, "Skanpage", QStringLiteral("Skanpage application class uncreateable")); 0043 qmlRegisterUncreatableType<SkanpageConfiguration>("org.kde.skanpage", 1, 0, "Configuration", QStringLiteral("Confguration class uncreatable")); 0044 qmlRegisterUncreatableType<SkanpageState>("org.kde.skanpage", 1, 0, "StateConfiguration", QStringLiteral("State class uncreatable")); 0045 qmlRegisterUncreatableMetaObject(SkanpageUtils::staticMetaObject, "org.kde.skanpage", 1, 0, "SkanpageUtils", QStringLiteral("Error: only enums")); 0046 qmlRegisterType<InProgressPainter>("org.kde.skanpage", 1, 0, "InProgressPainter"); 0047 qRegisterMetaType<SkanpageUtils::MessageLevel>(); 0048 qRegisterMetaType<SkanpageUtils::FileType>(); 0049 qRegisterMetaType<SkanpageUtils::PageProperties>(); 0050 qRegisterMetaType<SkanpageUtils::DocumentPages>(); 0051 qRegisterMetaType<QImage>(); 0052 0053 KLocalizedString::setApplicationDomain(QByteArrayLiteral("skanpage")); 0054 0055 KAboutData aboutData(QLatin1String("skanpage"), 0056 i18n("Skanpage"), 0057 QLatin1String(SKANPAGE_VERSION_STRING), 0058 i18n("Multi-page scanning application by KDE."), 0059 KAboutLicense::GPL, 0060 i18n("© 2015-2022 Kåre Särs, Alexander Stippich") 0061 ); 0062 0063 aboutData.addAuthor(QStringLiteral("Kåre Särs"), i18n("developer"), QLatin1String("kare.sars@iki.fi")); 0064 aboutData.addAuthor(QStringLiteral("Alexander Stippich"), i18n("developer"), QLatin1String("a.stippich@gmx.net")); 0065 aboutData.setBugAddress("https://bugs.kde.org/enter_bug.cgi?product=skanpage"); 0066 0067 app.setWindowIcon(QIcon::fromTheme(QLatin1String("skanpage"))); 0068 0069 KAboutData::setApplicationData(aboutData); 0070 KCrash::initialize(); 0071 0072 QCommandLineParser parser; 0073 aboutData.setupCommandLine(&parser); 0074 QCommandLineOption deviceOption( 0075 QStringList({QLatin1String("d"), QLatin1String("device")}), i18n("Sane scanner device name. Use 'test' for test device."), i18n("device")); 0076 parser.addOption(deviceOption); 0077 parser.process(app); 0078 // the --author and --license is shown anyway but they work only with the following line 0079 aboutData.processCommandLine(&parser); 0080 0081 const QString deviceName = parser.value(deviceOption); 0082 0083 Skanpage skanpageApp = Skanpage(deviceName); 0084 0085 QQmlApplicationEngine engine; 0086 0087 engine.rootContext()->setContextObject(new KLocalizedContext(&engine)); 0088 engine.rootContext()->setContextProperty(QStringLiteral("skanpage"), &skanpageApp); 0089 engine.rootContext()->setContextProperty(QStringLiteral("_aboutData"), QVariant::fromValue(aboutData)); 0090 engine.load(QUrl(QStringLiteral("qrc:/qml/MainWindow.qml"))); 0091 0092 return app.exec(); 0093 }