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 }