SVN commit 1102617 by hedlund: FEATURE: 135260 BUG: 117532 GUI: A new tutor that shows a flashcard at defined intervals while working with other things.
Currently only implemented as a command line switch. To test run "kwordquiz -g tutor". Based on patches by Aleks (http://reviewboard.kde.org/r/2822/) who has requested that I hold the copyright. CCMAIL: abirvalg at lavabit.com M +6 -1 CMakeLists.txt M +44 -2 kwordquiz.kcfg A kwqtutor.cpp [License: GPL (v2+)] A kwqtutor.h [License: GPL (v2+)] A kwqtutorflashcard.cpp [License: GPL (v2+)] A kwqtutorflashcard.h [License: GPL (v2+)] A kwqtutorprefs.cpp [License: GPL (v2+)] A kwqtutorprefs.h [License: GPL (v2+)] M +26 -24 main.cpp A preftutor.cpp [License: LGPL (v2)] A preftutor.h [License: LGPL (v2)] A preftutorbase.ui --- trunk/KDE/kdeedu/kwordquiz/src/CMakeLists.txt #1102616:1102617 @@ -19,6 +19,7 @@ prefgeneral.cpp prefeditor.cpp prefquiz.cpp + preftutor.cpp dlgspecchar.cpp dlglanguage.cpp wqprintdialogpage.cpp @@ -27,6 +28,9 @@ kwqtablemodel.cpp kwqtableview.cpp kwqtabledelegate.cpp + kwqtutor.cpp + kwqtutorflashcard.cpp + kwqtutorprefs.cpp kwqsortfiltermodel.cpp kwqcommands.cpp kwqscorewidget.cpp @@ -45,7 +49,8 @@ kwqscorewidgetbase.ui prefcharacterbase.ui prefcardappearancebase.ui - prefgeneralbase.ui ) + prefgeneralbase.ui + preftutorbase.ui ) kde4_add_kcfg_files(kwordquiz_SRCS prefs.kcfgc documentsettings.kcfgc) --- trunk/KDE/kdeedu/kwordquiz/src/kwordquiz.kcfg #1102616:1102617 @@ -127,8 +127,8 @@ </group> <group name="KNewStuff"> <entry name="ProvidersUrl" type="Path"> - <label>The Providers path for KWordQuiz</label> - <default code="true">"http://edu.kde.org/kvoctrain/providers.xml"</default> + <label>The Providers path for KWordQuiz</label> + <default code="true">"http://edu.kde.org/kvoctrain/providers.xml"</default> </entry> <entry name="InstallationCommand" type="String"> <label>The command used to start a downloaded vocabulary</label> @@ -139,4 +139,46 @@ <default>Vocabularies</default> </entry> </group> + <group name="Tutor"> + <entry name="TutorTiming" type="Enum"> + <label>Pop up flashcards at fixed or random intervals</label> + <choices> + <choice name="FixedInterval"/> + <choice name="RandomInterval"/> + </choices> + <default>FixedInterval</default> + </entry> + <entry name="TutorEvery" type="Int"> + <label>The interval in minutes at which to pop up a flash card</label> + <default>10</default> + </entry> + <entry name="TutorMin" type="Int"> + <label>The minimum interval in minutes at which to pop up a flash card</label> + <default>20</default> + </entry> + <entry name="TutorMax" type="Int"> + <label>The maximum interval in minutes at which to pop up a flash card</label> + <default>40</default> + </entry> + <entry name="TutorFlashCardGeometry" type="Rect"> + <label>Geometry of the last flash card</label> + <default>QRect(2,2,200,80)</default> + </entry> + <entry name="TutorCardAppearance" type="Enum"> + <label>Show flash card in a native KWordQuiz style</label> + <choices> + <choice name="Native"/> + <choice name="Minimalistic"/> + </choices> + <default>Native</default> + </entry> + <entry name="LastVocabFile" type="String"> + <label>Last open vocabulary file to be opened automatically if none other is specified on the command line</label> + <default></default> + </entry> + <entry name="StartExerciseAsSoonAsFileIsLoaded" type="Bool"> + <label>Start exercise as soon as the user opens vocabulary file</label> + <default>true</default> + </entry> + </group> </kcfg> --- trunk/KDE/kdeedu/kwordquiz/src/main.cpp #1102616:1102617 @@ -1,8 +1,8 @@ /*************************************************************************** - main.cpp - description + main.cpp ------------------- begin : Wed Jul 24 20:12:30 PDT 2002 - copyright : (C) 2002-2003 by Peter Hedlund + copyright : (C) 2002-2010 by Peter Hedlund email : peter.hedlund at kdemail.net ***************************************************************************/ @@ -15,19 +15,19 @@ * * ***************************************************************************/ -#include <QAction> +#include <QtGui/QAction> -#include <kcmdlineargs.h> -#include <kaboutdata.h> -#include <klocale.h> -#include <kactioncollection.h> -#include <kapplication.h> +#include <KCmdLineArgs> +#include <KAboutData> +#include <KLocale> +#include <KActionCollection> +#include <KApplication> +#include "kwqtutor.h" #include "kwordquiz.h" #include "version.h" static const char *description = I18N_NOOP("A powerful flashcard and vocabulary learning program"); - int main(int argc, char *argv[]) { KAboutData aboutData("kwordquiz", 0, @@ -50,38 +50,40 @@ options.add("m"); options.add("mode <number>", ki18n("A number 1-5 corresponding to the \nentries in the Mode menu")); options.add("g"); - options.add("goto <session>", ki18n("Type of session to start with: \n'flash' for flashcard, \n'mc' for multiple choice, \n'qa' for question and answer")); + options.add("goto <session>", ki18n("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")); options.add("+[File]", ki18n("File to open")); KCmdLineArgs::addCmdLineOptions( options ); // Add our own options. + if (KCmdLineArgs::parsedArgs()->getOption("goto") == "tutor") { + KApplication tutorapp; + tutorapp.setQuitOnLastWindowClosed(false); + KWQTutor* m_tutor = new KWQTutor(KCmdLineArgs::parsedArgs()->count() ? + KCmdLineArgs::parsedArgs()->url(KCmdLineArgs::parsedArgs()->count() - 1) : KUrl()); //last arg - file to open + return tutorapp.exec(); + } + KApplication app; - - if (app.isSessionRestored()) - { + if (app.isSessionRestored()) { RESTORE(KWordQuizApp); } - else - { + else { KWordQuizApp *kwordquiz = new KWordQuizApp(); kwordquiz->show(); KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); - if (args->count()) - { + if (args->count()) { kwordquiz->openDocumentFile(KUrl(args->url(args->count() - 1))); QString mode = args->getOption("mode"); - if (!mode.isEmpty()) - { + if (!mode.isEmpty()) { QAction *a = kwordquiz->actionCollection()->action(QString("mode_%1").arg(QString(mode))); kwordquiz->slotModeActionGroupTriggered(a); } QString go_to = args->getOption("goto"); - if (!go_to.isEmpty()) - { + if (!go_to.isEmpty()) { if (go_to == "flash") kwordquiz->slotQuizFlash(); if (go_to == "mc") @@ -90,11 +92,11 @@ kwordquiz->slotQuizQA(); } } - else - { + else { kwordquiz->openDocumentFile(); } args->clear(); } - return app.exec(); + return app.exec(); + }
