File indexing completed on 2023-05-30 10:45:27
0001 /* 0002 SPDX-FileCopyrightText: 2002-2010 Peter Hedlund <peter.hedlund@kdemail.net> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include <QAction> 0007 #include <QApplication> 0008 #include <QCommandLineOption> 0009 #include <QCommandLineParser> 0010 0011 #include <KAboutData> 0012 #include <KActionCollection> 0013 #include <KCrash> 0014 #include <KLocalizedString> 0015 0016 #include "kwqtutor.h" 0017 #include "kwordquiz.h" 0018 #include "kwordquiz_version.h" 0019 0020 int main(int argc, char *argv[]) 0021 { 0022 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) 0023 QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps, true); 0024 #endif 0025 QApplication app(argc, argv); 0026 0027 KCrash::initialize(); 0028 KLocalizedString::setApplicationDomain("kwordquiz"); 0029 QApplication::setApplicationName(QStringLiteral("kwordquiz")); 0030 QApplication::setApplicationVersion(KWORDQUIZ_VERSION_STRING); 0031 QApplication::setOrganizationDomain(QStringLiteral("kde.org")); 0032 0033 KAboutData aboutData(QStringLiteral("kwordquiz"), 0034 i18n("KWordQuiz"), 0035 KWORDQUIZ_VERSION_STRING, 0036 i18n("A powerful flashcard and vocabulary learning program"), 0037 KAboutLicense::GPL_V2, 0038 i18n("(c) 2003-2010, Peter Hedlund"), 0039 QString(), 0040 QStringLiteral("https://kde.org/applications/education/kwordquiz"), 0041 QStringLiteral("submit@bugs.kde.org")); 0042 aboutData.addAuthor(i18n("Peter Hedlund"), QString(), QStringLiteral("peter.hedlund@kdemail.net")); 0043 aboutData.addCredit(i18n("Anne-Marie Mahfouf"), i18n("KDE Edutainment Maintainer"), QStringLiteral("annma@kde.org")); 0044 aboutData.addCredit(i18n("Martin Pfeiffer"), i18n("Leitner System and several code contributions"), QStringLiteral("hubipete@gmx.net")); 0045 0046 KAboutData::setApplicationData(aboutData); 0047 0048 KCrash::initialize(); 0049 0050 #ifdef Q_OS_WIN 0051 QApplication::setStyle(QStringLiteral("breeze")); 0052 #endif 0053 0054 QCommandLineParser parser; 0055 aboutData.setupCommandLine(&parser); 0056 0057 parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("m") << QStringLiteral("mode"), i18n("A number 1-5 corresponding to the \nentries in the Mode menu"), QStringLiteral("number"))); 0058 parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("g") << QStringLiteral("goto"), i18n("Type of session to start with: \n'flash' for flashcard, \n'mc' for multiple choice, \n'qa' for question and answer, \n'tutor' for tutor"), QStringLiteral("session"))); 0059 parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("+[File]"), i18n("File to open"))); 0060 parser.process(app); 0061 aboutData.processCommandLine(&parser); 0062 0063 QStringList args = parser.positionalArguments(); 0064 0065 if (parser.isSet(QStringLiteral("g")) && parser.value(QStringLiteral("g")) == QLatin1String("tutor")) { 0066 QApplication tutorapp(argc, argv); 0067 tutorapp.setQuitOnLastWindowClosed(false); 0068 //KWQTutor* m_tutor = new KWQTutor(args.count() ? 0069 // QUrl::fromLocalFile(args.at(args.count() - 1)) : QUrl()); //last arg - file to open 0070 return tutorapp.exec(); 0071 } 0072 0073 if (app.isSessionRestored()) { 0074 kRestoreMainWindows<KWordQuizApp>(); 0075 } else { 0076 KWordQuizApp *kwordquiz = new KWordQuizApp(); 0077 kwordquiz->show(); 0078 0079 if (args.count()) { 0080 kwordquiz->openDocumentFile(QUrl::fromLocalFile(args.at(args.count() - 1))); 0081 0082 QString mode = parser.value(QStringLiteral("mode")); 0083 0084 if (!mode.isEmpty()) { 0085 QAction *a = kwordquiz->actionCollection()->action(QStringLiteral("mode_%1").arg(QString(mode))); 0086 kwordquiz->slotModeActionGroupTriggered(a); 0087 } 0088 0089 QString go_to = parser.value(QStringLiteral("goto")); 0090 if (!go_to.isEmpty()) { 0091 if (go_to == QLatin1String("flash")) 0092 kwordquiz->slotQuizFlash(); 0093 if (go_to == QLatin1String("mc")) 0094 kwordquiz->slotQuizMultiple(); 0095 if (go_to == QLatin1String("qa")) 0096 kwordquiz->slotQuizQA(); 0097 } 0098 } else { 0099 kwordquiz->openDocumentFile(); 0100 } 0101 } 0102 return app.exec(); 0103 }