[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-edu-devel
Subject:    [kde-edu-devel] Another flashKard patch
From:       cfaun <cfaun () rcn ! com>
Date:       2002-04-28 12:51:55
[Download RAW message or body]

This patch does the following things:

*fixes minor bugs (such as the progress bar)
*adds easy entry of special characters (try using ALT-A or ALT-N)
*tells you what percentage you got correct in guess mode

It is attached.

cfaun
["patchForFlashkard.diff" (text/x-diff)]

? flashkard/flashkard/flineedit.cpp
? flashkard/flashkard/flineedit.h
Index: flashkard/Makefile.am
===================================================================
RCS file: /home/kde/kdeedu/flashkard/Makefile.am,v
retrieving revision 1.1
diff -u -3 -p -r1.1 Makefile.am
--- flashkard/Makefile.am	11 Apr 2002 07:29:42 -0000	1.1
+++ flashkard/Makefile.am	28 Apr 2002 12:42:17 -0000
@@ -1,6 +1,6 @@
 ####### kdevelop will overwrite this part!!! (begin)##########
 
-SUBDIRS = flashkard
+SUBDIRS = flashkard po doc 
 
 EXTRA_DIST = flashkard.kdevprj admin AUTHORS COPYING ChangeLog INSTALL README TODO \
flashkard.lsm   
Index: flashkard/flashkard.kdevprj
===================================================================
RCS file: /home/kde/kdeedu/flashkard/flashkard.kdevprj,v
retrieving revision 1.1
diff -u -3 -p -r1.1 flashkard.kdevprj
--- flashkard/flashkard.kdevprj	11 Apr 2002 07:29:42 -0000	1.1
+++ flashkard/flashkard.kdevprj	28 Apr 2002 12:42:18 -0000
@@ -110,7 +110,7 @@ install_location=
 type=DATA
 
 [flashkard/Makefile.am]
-files=flashkard/main.cpp,flashkard/flashkard.cpp,flashkard/flashkard.h,flashkard/flas \
hkard.desktop,flashkard/datawidget.cpp,flashkard/datawidget.h,flashkard/flashkardui.rc \
,flashkard/quizwidget.cpp,flashkard/quizwidget.h,flashkard/guesswidget.cpp,flashkard/g \
uesswidget.h,flashkard/flashcardswidget.cpp,flashkard/flashcardswidget.h,flashkard/car \
d.cpp,flashkard/card.h,flashkard/xmlparser.cpp,flashkard/xmlparser.h,flashkard/xmlwriter.cpp,flashkard/xmlwriter.h
 +files=flashkard/main.cpp,flashkard/flashkard.cpp,flashkard/flashkard.h,flashkard/fla \
shkard.desktop,flashkard/datawidget.cpp,flashkard/datawidget.h,flashkard/flashkardui.r \
c,flashkard/quizwidget.cpp,flashkard/quizwidget.h,flashkard/guesswidget.cpp,flashkard/ \
guesswidget.h,flashkard/flashcardswidget.cpp,flashkard/flashcardswidget.h,flashkard/ca \
rd.cpp,flashkard/card.h,flashkard/xmlparser.cpp,flashkard/xmlparser.h,flashkard/xmlwriter.cpp,flashkard/xmlwriter.h,flashkard/flineedit.cpp,flashkard/flineedit.h
  sub_dirs=pics
 type=prog_main
 
@@ -173,6 +173,18 @@ dist=true
 install=false
 install_location=
 type=DATA
+
+[flashkard/flineedit.cpp]
+dist=true
+install=false
+install_location=
+type=SOURCE
+
+[flashkard/flineedit.h]
+dist=true
+install=false
+install_location=
+type=HEADER
 
 [flashkard/guesswidget.cpp]
 dist=true
Index: flashkard/flashkard.kdevses
===================================================================
RCS file: /home/kde/kdeedu/flashkard/flashkard.kdevses,v
retrieving revision 1.1
diff -u -3 -p -r1.1 flashkard.kdevses
--- flashkard/flashkard.kdevses	11 Apr 2002 07:29:42 -0000	1.1
+++ flashkard/flashkard.kdevses	28 Apr 2002 12:42:18 -0000
@@ -3,5 +3,12 @@
 <KDevPrjSession>
  <LastCompileConfig>(Default)</LastCompileConfig>
  <Mainframe MaximizeMode="1" />
- <DocsAndViews NumberOfDocuments="0" />
+ <DocsAndViews NumberOfDocuments="2" >
+  <Doc0 CursorPosLine="35" Type="KWriteDoc" NumberOfViews="1" CursorPosCol="8" \
FileName="/home/cfaun/kdeedu/flashkard/flashkard/flineedit.cpp" > +   <View0 \
Top="132" Width="764" Attach="1" Height="421" Left="132" Focus="1" Type="KWriteView" \
MinMaxMode="2" /> +  </Doc0>
+  <Doc1 Type="CDocBrowser" NumberOfViews="1" \
FileName="/usr/local/qt/doc/html/qt.html#Key-enum" > +   <View Top="68" Width="124" \
Attach="1" Height="115" Left="47" Focus="0" Type="KHTMLView" MinMaxMode="0" /> +  \
</Doc1> + </DocsAndViews>
 </KDevPrjSession>
Index: flashkard/flashkard/Makefile.am
===================================================================
RCS file: /home/kde/kdeedu/flashkard/flashkard/Makefile.am,v
retrieving revision 1.1
diff -u -3 -p -r1.1 Makefile.am
--- flashkard/flashkard/Makefile.am	11 Apr 2002 07:29:42 -0000	1.1
+++ flashkard/flashkard/Makefile.am	28 Apr 2002 12:42:18 -0000
@@ -1,11 +1,14 @@
 ####### kdevelop will overwrite this part!!! (begin)##########
 bin_PROGRAMS = flashkard
-flashkard_SOURCES = xmlwriter.cpp xmlparser.cpp card.cpp flashcardswidget.cpp \
guesswidget.cpp quizwidget.cpp datawidget.cpp flashkard.cpp main.cpp  +
+## INCLUDES were found outside kdevelop specific part
+
+flashkard_SOURCES = flineedit.cpp xmlwriter.cpp xmlparser.cpp card.cpp \
flashcardswidget.cpp guesswidget.cpp quizwidget.cpp datawidget.cpp flashkard.cpp \
main.cpp   flashkard_LDADD   =  $(LIB_KFILE) $(LIB_KDEUI) $(LIB_KDECORE) $(LIB_QT) \
$(LIBSOCKET)  
 SUBDIRS = pics 
 
-EXTRA_DIST = main.cpp flashkard.cpp flashkard.h flashkard.desktop datawidget.cpp \
datawidget.h flashkardui.rc quizwidget.cpp quizwidget.h guesswidget.cpp guesswidget.h \
flashcardswidget.cpp flashcardswidget.h card.cpp card.h xmlparser.cpp xmlparser.h \
xmlwriter.cpp xmlwriter.h  +EXTRA_DIST = main.cpp flashkard.cpp flashkard.h \
flashkard.desktop datawidget.cpp datawidget.h flashkardui.rc quizwidget.cpp \
quizwidget.h guesswidget.cpp guesswidget.h flashcardswidget.cpp flashcardswidget.h \
card.cpp card.h xmlparser.cpp xmlparser.h xmlwriter.cpp xmlwriter.h flineedit.cpp \
flineedit.h   
 install-data-local:
 	$(mkinstalldirs) $(kde_appsdir)/Edutainment/
Index: flashkard/flashkard/datawidget.cpp
===================================================================
RCS file: /home/kde/kdeedu/flashkard/flashkard/datawidget.cpp,v
retrieving revision 1.8
diff -u -3 -p -r1.8 datawidget.cpp
--- flashkard/flashkard/datawidget.cpp	20 Apr 2002 03:33:08 -0000	1.8
+++ flashkard/flashkard/datawidget.cpp	28 Apr 2002 12:42:18 -0000
@@ -113,10 +113,10 @@ void DataWidget::setupLayout()
   backLabel->setAlignment(Qt::AlignHCenter);
   labelLayout->addWidget(backLabel , 0, 1);
 
-  frontBox = new KLineEdit(this, "frontBox");
+  frontBox = new FLineEdit(this, "frontBox");
   labelLayout->addWidget(frontBox, 1, 0);
 
-  backBox = new KLineEdit(this, "backBox");
+  backBox = new FLineEdit(this, "backBox");
   labelLayout->addWidget(backBox, 1, 1);
 
   connect(frontBox, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged()));
@@ -145,12 +145,12 @@ void DataWidget::setupLayout()
 bool DataWidget::eventFilter(QObject *object, QEvent *event)
 {
   if(event && event->type() == QEvent::FocusIn) {
-    if(KLineEdit *lineEdit = dynamic_cast<KLineEdit *>(object))
+    if(FLineEdit *lineEdit = dynamic_cast<FLineEdit *>(object))
       emit(lineEditFocusIn(lineEdit));
   }
   if(event && event->type() == QEvent::FocusOut) {
     QFocusEvent *focusEvent = static_cast<QFocusEvent *>(event);
-    if(dynamic_cast<KLineEdit *>(object) && focusEvent->reason() != \
QFocusEvent::Popup) +    if(dynamic_cast<FLineEdit *>(object) && focusEvent->reason() \
!= QFocusEvent::Popup)  emit(lineEditFocusOut());
   }
   return(QWidget::eventFilter(object, event));
Index: flashkard/flashkard/datawidget.h
===================================================================
RCS file: /home/kde/kdeedu/flashkard/flashkard/datawidget.h,v
retrieving revision 1.4
diff -u -3 -p -r1.4 datawidget.h
--- flashkard/flashkard/datawidget.h	20 Apr 2002 03:33:08 -0000	1.4
+++ flashkard/flashkard/datawidget.h	28 Apr 2002 12:42:18 -0000
@@ -17,7 +17,7 @@
 #define DATAWIDGET_H
 
 #include <klistview.h>
-#include <klineedit.h>
+#include <flineedit.h>
 
 #include <qwidget.h>
 
@@ -41,7 +41,7 @@ private:
   bool eventFilter(QObject *object, QEvent *event);
   
   KListView *cardListView;
-  KLineEdit *frontBox, *backBox;
+  FLineEdit *frontBox, *backBox;
   
 private slots:
   void changeSelection(QListViewItem *);
Index: flashkard/flashkard/flashkard.cpp
===================================================================
RCS file: /home/kde/kdeedu/flashkard/flashkard/flashkard.cpp,v
retrieving revision 1.7
diff -u -3 -p -r1.7 flashkard.cpp
--- flashkard/flashkard/flashkard.cpp	20 Apr 2002 03:33:08 -0000	1.7
+++ flashkard/flashkard/flashkard.cpp	28 Apr 2002 12:42:19 -0000
@@ -59,15 +59,6 @@ void FlashKard::dataChanged()
   changed = true;
 }
 
-void FlashKard::selectionChanged()
-{
-  //  kdDebug() << "FlashKard::selectionChanged()" << endl;
-  if((data && data->hasSelectedText()) || (quiz && quiz->hasSelectedText()))
-    enableCutCopy();
-  else
-    disableCutCopy();
-}
-
 ////////////////////////////////////////////////////////////////////////////////
 // private member implementations
 ////////////////////////////////////////////////////////////////////////////////
@@ -80,11 +71,6 @@ void FlashKard::setupActions()
   KStdAction::save(this, SLOT(fileSave()), actionCollection());
   KStdAction::saveAs(this, SLOT(fileSaveAs()), actionCollection());
   KStdAction::quit(this, SLOT(quit()), actionCollection()); 
-
-  // edit menu
-  cutAction = KStdAction::cut(this, SLOT(cut()), actionCollection());
-  copyAction = KStdAction::copy(this, SLOT(copy()), actionCollection());
-  pasteAction = KStdAction::paste(this, SLOT(paste()), actionCollection());
   
   // function menu
   showDataAction = new KAction(i18n("Data Entry"), "edit", 0, this, \
SLOT(showData()), actionCollection(), "showData"); @@ -100,9 +86,6 @@ void \
FlashKard::setupActions()  connect(quizModeAction, SIGNAL(activated(int)), this, \
SLOT(changeQuizMode(int)));  
   createGUI();
-
-  disableCutCopy();
-  disablePaste();
 }
 
 void FlashKard::setupLayout()
@@ -111,9 +94,6 @@ void FlashKard::setupLayout()
   data = new DataWidget(this, "data");
 
   connect(data, SIGNAL(dataChanged()), this, SLOT(dataChanged()));
-  connect(data, SIGNAL(selectionChanged()), this, SLOT(selectionChanged()));
-  connect(data, SIGNAL(lineEditFocusIn(KLineEdit *)), this, \
                SLOT(enablePaste(KLineEdit *)));
-  connect(data, SIGNAL(lineEditFocusOut()), this, SLOT(disablePaste()));
 
   showData();
 }
@@ -236,6 +216,8 @@ void FlashKard::fileSave()
 void FlashKard::fileSaveAs()
 {
   fileName = KFileDialog::getSaveFileName(QString::null, fileMask, this, \
QString::null); +  if(fileName.find(".kvml") == -1)
+    fileName += ".kvml";
   if(!fileName.isEmpty())
     fileSave();
 }
@@ -245,64 +227,6 @@ void FlashKard::quit()
   kapp->quit();
 }
 
-// edit menu
-
-void FlashKard::cut()
-{
-  if(data && data->isVisible())
-    data->cut();
-  else if(quiz && quiz->isVisible())
-    quiz->cut();
-}
-
-void FlashKard::copy()
-{
-  if(data && data->isVisible())
-    data->copy();
-  else if(quiz && quiz->isVisible())
-    quiz->copy();
-}
-
-void FlashKard::paste()
-{
-  if(focusedLineEdit)
-    focusedLineEdit->paste();
-}
-
-void FlashKard::enableCutCopy()
-{
-  if(cutAction && copyAction) {
-    cutAction->setEnabled(true);
-    copyAction->setEnabled(true);
-  }
-}
-
-void FlashKard::disableCutCopy()
-{
-  if(cutAction && copyAction) {
-    cutAction->setEnabled(false);
-    copyAction->setEnabled(false);
-  }
-}
-
-void FlashKard::enablePaste(KLineEdit *lineEdit)
-{
-  if(lineEdit && pasteAction) {
-    //    kdDebug() << "FlashKard::enablePaste()" << endl;
-    focusedLineEdit = lineEdit;
-    pasteAction->setEnabled(true);
-  }
-}
-
-void FlashKard::disablePaste()
-{
-  if(pasteAction) {
-    //    kdDebug() << "FlashKard::disablePaste()" << endl;
-    focusedLineEdit = 0;
-    pasteAction->setEnabled(false);
-  }
-}
-
 void FlashKard::showData()
 {
   statusBar()->hide();
@@ -369,9 +293,6 @@ void FlashKard::changeQuizMode(int id)
     quiz = 0;
     break;
   }
-
-  connect(quiz, SIGNAL(selectionChanged()), this, SLOT(selectionChanged()));
-  connect(quiz, SIGNAL(lineEditFocusIn(KLineEdit *)), this, \
SLOT(enablePaste(KLineEdit *)));  
   if(visible) 
     showQuiz();
Index: flashkard/flashkard/flashkard.h
===================================================================
RCS file: /home/kde/kdeedu/flashkard/flashkard/flashkard.h,v
retrieving revision 1.4
diff -u -3 -p -r1.4 flashkard.h
--- flashkard/flashkard/flashkard.h	20 Apr 2002 03:33:08 -0000	1.4
+++ flashkard/flashkard/flashkard.h	28 Apr 2002 12:42:19 -0000
@@ -41,7 +41,6 @@ public:
 
 public slots:
   void dataChanged();
-  void selectionChanged();
 
 private:
   void setupActions();
@@ -76,16 +75,6 @@ private slots:
   void fileSaveAs();
   void quit();
 
-  // edit menu
-
-  void cut();
-  void copy();
-  void paste();
-
-  void enableCutCopy();
-  void disableCutCopy();
-  void enablePaste(KLineEdit *lineEdit);
-  void disablePaste();
 
   // other private slots
 
Index: flashkard/flashkard/flashkardui.rc
===================================================================
RCS file: /home/kde/kdeedu/flashkard/flashkard/flashkardui.rc,v
retrieving revision 1.1
diff -u -3 -p -r1.1 flashkardui.rc
--- flashkard/flashkard/flashkardui.rc	11 Apr 2002 07:29:42 -0000	1.1
+++ flashkard/flashkard/flashkardui.rc	28 Apr 2002 12:42:19 -0000
@@ -2,7 +2,7 @@
 <kpartgui name="flashkard">
 
 <MenuBar>
-	<Menu name="Function"><text>F&amp;unction</text>
+	<Menu name="Function"><text>Function</text>
 		<Action name="showData"/>
 		<Action name="showQuiz"/>
 	</Menu>
@@ -16,10 +16,6 @@
 	<Action name="file_open"/>
 	<Action name="openDir"/>
 	<Action name="file_save"/>
-	<Separator lineSeparator="true"/>
-	<Action name="edit_cut"/>
-	<Action name="edit_copy"/>
-	<Action name="edit_paste"/>
 	<Separator lineSeparator="true"/>
 	<Action name="showData"/>
 	<Action name="showQuiz"/>
Index: flashkard/flashkard/guesswidget.cpp
===================================================================
RCS file: /home/kde/kdeedu/flashkard/flashkard/guesswidget.cpp,v
retrieving revision 1.5
diff -u -3 -p -r1.5 guesswidget.cpp
--- flashkard/flashkard/guesswidget.cpp	20 Apr 2002 03:33:08 -0000	1.5
+++ flashkard/flashkard/guesswidget.cpp	28 Apr 2002 12:42:19 -0000
@@ -33,6 +33,7 @@ GuessWidget::GuessWidget(KStatusBar *sta
 {
   random = randomQuiz;
   answer = QString::null;
+  numCorrect = 0;
 
   showFeedbackLabel();
   setupLayout();
@@ -79,7 +80,7 @@ void GuessWidget::setupLayout()
 
   QHBoxLayout *guessLayout = new QHBoxLayout(layout(), 3);
   
-  guessLineEdit = new KLineEdit(this);
+  guessLineEdit = new FLineEdit(this);
   guessLayout->addWidget(guessLineEdit);
 
   connect(guessLineEdit, SIGNAL(selectionChanged()), this, \
SIGNAL(selectionChanged())); @@ -112,13 +113,15 @@ void GuessWidget::checkAnswer()
 {
   if(guessLineEdit->text() == answer) {
     setFeedbackMessage(i18n("Correct!"));
-    getCard(random);
-    guessLineEdit->setFocus();
+    numCorrect++;
   }
-  else {
-    setFeedbackMessage(i18n("Incorrect."));    
+  else
+    setFeedbackMessage(i18n("Incorrect."));
+
+    getCard(random, numCorrect);
+    if (last == true)
+      numCorrect = 0;
     guessLineEdit->setFocus();
-  }
 }
 
 void GuessWidget::showAnswer()
Index: flashkard/flashkard/guesswidget.h
===================================================================
RCS file: /home/kde/kdeedu/flashkard/flashkard/guesswidget.h,v
retrieving revision 1.2
diff -u -3 -p -r1.2 guesswidget.h
--- flashkard/flashkard/guesswidget.h	19 Apr 2002 09:51:29 -0000	1.2
+++ flashkard/flashkard/guesswidget.h	28 Apr 2002 12:42:19 -0000
@@ -17,7 +17,7 @@
 #define GUESSWIDGET_H
 
 #include <kstatusbar.h>
-#include <klineedit.h>
+#include <flineedit.h>
 
 #include <qwidget.h>
 #include <qstring.h>
@@ -41,9 +41,10 @@ private:
   virtual void showCard(Card card);
   
   bool random;
+  int numCorrect;
   QString answer;
   QLabel *cardLabel;
-  KLineEdit *guessLineEdit;
+  FLineEdit *guessLineEdit;
 
 private slots:
   void checkAnswer();
Index: flashkard/flashkard/quizwidget.cpp
===================================================================
RCS file: /home/kde/kdeedu/flashkard/flashkard/quizwidget.cpp,v
retrieving revision 1.5
diff -u -3 -p -r1.5 quizwidget.cpp
--- flashkard/flashkard/quizwidget.cpp	20 Apr 2002 03:33:08 -0000	1.5
+++ flashkard/flashkard/quizwidget.cpp	28 Apr 2002 12:42:19 -0000
@@ -42,6 +42,7 @@ QuizWidget::QuizWidget(KStatusBar *statu
 
   progressBar = 0;
   feedbackLabel = 0;
+  last = false;
 
   setupLayout();
 }
@@ -93,12 +94,28 @@ QFont QuizWidget::labelFont()
   return(font);
 }
 
-Card QuizWidget::getCard(bool random)
+Card QuizWidget::getCard(bool random, int numCorrect)
 {
+  if(numCorrect !=-1)
+    last = false;
   if(!completeCardList->isEmpty()) {
     if(remainingCardList.isEmpty()) {
-      KMessageBox::information( this, i18n("Restarting the deck."), \
                i18n("FlashKard"));
-      remainingCardList = *completeCardList;
+      if(numCorrect != -1) {
+        progressBar->setValue(100);
+        last = true;
+        int perNum = 100*(numCorrect/completeCardList->count());
+        int total = completeCardList->count();
+        QString perStr;
+        perStr.sprintf("The percentage you got correct was %d%%.", perNum);
+        KMessageBox::information(this, i18n("Restarting the deck.") + perStr);
+        remainingCardList = *completeCardList;
+      }
+      else
+      {
+          progressBar->setValue(100);
+          KMessageBox::information( this, i18n("Restarting the deck."), \
i18n("FlashKard")); +          remainingCardList = *completeCardList;
+      }
     }
     
     int cardNumber;
@@ -113,7 +130,7 @@ Card QuizWidget::getCard(bool random)
     showCard(card);
 
     if(completeCardList->count() > 0)
-      progressBar->setValue(int(100.0 * (1.0 - float(remainingCardList.count()) / \
float(completeCardList->count() - 1)) + .5)); +      progressBar->setValue(int(100.0 \
* (float((completeCardList->count()-1)-remainingCardList.count()) / \
float(completeCardList->count()))));  
     return(card);
   }
Index: flashkard/flashkard/quizwidget.h
===================================================================
RCS file: /home/kde/kdeedu/flashkard/flashkard/quizwidget.h,v
retrieving revision 1.3
diff -u -3 -p -r1.3 quizwidget.h
--- flashkard/flashkard/quizwidget.h	20 Apr 2002 03:33:08 -0000	1.3
+++ flashkard/flashkard/quizwidget.h	28 Apr 2002 12:42:19 -0000
@@ -39,13 +39,14 @@ public: 
   virtual bool hasSelectedText() = 0;
 
 public slots:
-  Card getCard(bool random = true);
+  Card getCard(bool random = true, int numCorrect = -1);
 
 protected:
   void setFeedbackMessage(const QString message);
   void showFeedbackLabel(bool show = true);
   QFont labelFont();
   QBoxLayout *layout();
+  bool last;
   bool eventFilter(QObject *object, QEvent *event);
 
 private:


_______________________________________________
kde-edu-devel mailing list
kde-edu-devel@mail.kde.org
http://mail.kde.org/mailman/listinfo/kde-edu-devel

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic