• Skip to content
  • Skip to link menu
KDE 4.2 API Reference
  • KDE API Reference
  • kdeedu
  • Sitemap
  • Contact Us
 

parley

FromToEntryPage.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002 
00003                      edit properties from/to original
00004 
00005     -----------------------------------------------------------------------
00006 
00007     begin         : Mon Jun 28 21:02:16 1999
00008 
00009     copyright     : (C) 1999-2001 Ewald Arnold <kvoctrain@ewald-arnold.de>
00010                     (C) 2005-2007 Peter Hedlund <peter.hedlund@kdemail.net>
00011                     (C) 2007 Frederik Gladhorn <frederik.gladhorn@kdemail.net>
00012 
00013     -----------------------------------------------------------------------
00014 
00015  ***************************************************************************/
00016 
00017 /***************************************************************************
00018  *                                                                         *
00019  *   This program is free software; you can redistribute it and/or modify  *
00020  *   it under the terms of the GNU General Public License as published by  *
00021  *   the Free Software Foundation; either version 2 of the License, or     *
00022  *   (at your option) any later version.                                   *
00023  *                                                                         *
00024  ***************************************************************************/
00025 
00026 #include "FromToEntryPage.h"
00027 
00028 #include <QPushButton>
00029 #include <QGroupBox>
00030 
00031 #include <klocale.h>
00032 #include <KComboBox>
00033 #include <KLineEdit>
00034 
00035 #include "practice/testentrymanager.h"
00036 #include "EntryDlg.h"
00037 
00038 FromToEntryPage::FromToEntryPage(KEduVocDocument *doc, int fromIdentifier, int toIdentifier, QWidget *parent) : QWidget(parent)
00039 {
00040     m_doc = doc;
00041 
00042     m_translationFrom = fromIdentifier;
00043     m_translationTo = toIdentifier;
00044 
00045     setupUi(this);
00046 
00047     connect(fauxami_line, SIGNAL(textChanged(const QString&)), this, SLOT(slotFalseFriendChanged(const QString &)));
00048 
00049     connect(never, SIGNAL(clicked()), this, SLOT(slotNever()));
00050     connect(today, SIGNAL(clicked()), this, SLOT(slotToday()));
00051     connect(gradebox, SIGNAL(activated(int)), this, SLOT(slotGradeSelected(int)));
00052 
00053     connect(queryDateEdit, SIGNAL(dateChanged(const QDate &)), this, SLOT(slotDateChanged(const QDate &)));
00054     connect(totalCountEdit, SIGNAL(valueChanged(int)), this, SLOT(totalCountChanged(int)));
00055     connect(badCountEdit, SIGNAL(valueChanged(int)), this, SLOT(badCountChanged(int)));
00056 
00057     connect(resetGradesButton, SIGNAL(clicked()), SLOT(slotResetGrades()));
00058 
00059     for (int i = 0; i <= KV_MAX_GRADE; i++) {
00060         gradebox->addItem(TestEntryManager::gradeStr(i));
00061     }
00062 
00063 }
00064 
00065 
00066 void FromToEntryPage::slotFalseFriendChanged(const QString& s)
00067 {
00068     Q_UNUSED(s)
00069     emit sigModified();
00070 }
00071 
00072 
00073 void FromToEntryPage::slotGradeSelected(int g)
00074 {
00075     m_gradeChanged=true;
00076     Q_UNUSED(g)
00077     emit sigModified();
00078 }
00079 
00080 
00081 void FromToEntryPage::slotToday()
00082 {
00083     m_practiceDateChanged=true;
00084     queryDateEdit->setDateTime(QDateTime::currentDateTime());
00085     emit sigModified();
00086 }
00087 
00088 
00089 void FromToEntryPage::slotNever()
00090 {
00091     m_practiceDateChanged=true;
00092     queryDateEdit->setDate(queryDateEdit->minimumDate());
00093     queryDateEdit->setTime(queryDateEdit->minimumTime());
00094     emit sigModified();
00095 }
00096 
00097 
00098 void FromToEntryPage::slotDateChanged(const QDate & d)
00099 {
00100     m_practiceDateChanged=true;
00101     Q_UNUSED(d)
00102     emit sigModified();
00103 }
00104 
00105 void FromToEntryPage::totalCountChanged(int count)
00106 {
00107     m_totalCountChanged=true;
00108     Q_UNUSED(count)
00109     emit sigModified();
00110 }
00111 
00112 void FromToEntryPage::badCountChanged(int count)
00113 {
00114     m_wrongCountChanged=true;
00115     Q_UNUSED(count)
00116     emit sigModified();
00117 }
00118 
00119 
00120 void FromToEntryPage::setData(const QList<int>& entries)
00121 {
00122     m_entries = entries;
00123 
00124     // only set Grades as title for now:
00125     direc_label->setTitle(QString(i18n("Grades from %1 to %2", m_doc->identifier(m_translationFrom).name(), m_doc->identifier(m_translationTo).name())));
00126 
00127     KEduVocExpression *firstEntry = m_doc->entry(m_entries.value(0));
00128 
00129     queryDateEdit->setDateTime(
00130         firstEntry->translation(m_translationTo)
00131         .gradeFrom(m_translationFrom).practiceDate() );
00132 
00133     gradebox->setCurrentIndex(firstEntry->translation(m_translationTo).gradeFrom(m_translationFrom).grade());
00134 
00135     totalCountEdit->setValue(firstEntry->translation(m_translationTo).gradeFrom(m_translationFrom).practiceCount());
00136 
00137     badCountEdit->setValue(firstEntry->translation(m_translationTo).gradeFrom(m_translationFrom).badCount());
00138 
00139     if ( m_entries.count() > 1 ) {
00140         // fill enabled fields if equal for all edited entries, otherwise empty.
00141         foreach ( int entry, m_entries) {
00142             // grade
00143             KEduVocExpression *currentEntry = m_doc->entry(entry);
00144             if ( firstEntry->translation(m_translationTo)
00145                     .gradeFrom(m_translationFrom).grade()
00146                     != currentEntry->translation(m_translationTo)
00147                     .gradeFrom(m_translationFrom).grade() ) {
00148                 gradebox->setCurrentIndex(-1);
00149             }
00150             // date
00151             if ( firstEntry->translation(m_translationTo)
00152                     .gradeFrom(m_translationFrom).practiceDate()
00153                     != currentEntry->translation(m_translationTo)
00154                     .gradeFrom(m_translationFrom).practiceDate() ) {
00155                 queryDateEdit->setDate(queryDateEdit->minimumDate());
00156                 queryDateEdit->setTime(queryDateEdit->minimumTime());
00157             }
00158 
00159             // total count
00160             if ( firstEntry->translation(m_translationTo)
00161                     .gradeFrom(m_translationFrom).practiceCount()
00162                     != currentEntry->translation(m_translationTo)
00163                     .gradeFrom(m_translationFrom).practiceCount() ) {
00164                 totalCountEdit->clear();
00165             }
00166 
00167             // wrong count
00168             if ( firstEntry->translation(m_translationTo)
00169                     .gradeFrom(m_translationFrom).badCount()
00170                     != currentEntry->translation(m_translationTo)
00171                     .gradeFrom(m_translationFrom).badCount() ) {
00172                 badCountEdit->clear();
00173             }
00174 
00175         }
00176         fauxami_line->setEnabled(false);
00177         fauxami_line->setText(QString());
00178     } else {
00179         fauxami_line->setEnabled(true);
00180         fauxami_line->setText(firstEntry->translation( m_translationTo ).falseFriend( m_translationFrom ) );
00181     }
00182 
00183     m_gradeChanged=false;
00184     m_practiceDateChanged=false;
00185     m_totalCountChanged=false;
00186     m_wrongCountChanged=false;
00187 
00188 }
00189 
00190 void FromToEntryPage::commitData()
00191 {
00192 kDebug() << "Grade page commit data: " << m_translationFrom << m_translationTo;
00193     if ( m_entries.count() == 1 ) {
00194     // these things are only changed when editing a single entry
00195         KEduVocTranslation * trans = &m_doc->entry(m_entries.value(0))->translation(m_translationTo);
00196         trans->setFalseFriend(m_translationFrom, fauxami_line->text());
00197     }
00198 
00199     // things that are changed for multiple or single entries
00200     foreach(int entry, m_entries) {
00201         if ( m_gradeChanged ) {
00202             m_doc->entry(entry)->translation(m_translationTo).gradeFrom(m_translationFrom).setGrade( gradebox->currentIndex() );
00203         }
00204         if ( m_totalCountChanged ) {
00205             m_doc->entry(entry)->translation(m_translationTo).gradeFrom(m_translationFrom).setPracticeCount( totalCountEdit->value() );
00206         }
00207         if ( m_wrongCountChanged ) {
00208             m_doc->entry(entry)->translation(m_translationTo).gradeFrom(m_translationFrom).setBadCount( badCountEdit->value() );
00209         }
00210         if ( m_practiceDateChanged ) {
00211             m_doc->entry(entry)->translation(m_translationTo).gradeFrom(m_translationFrom).setPracticeDate( queryDateEdit->dateTime() );
00212         }
00213     }
00214 }
00215 
00216 void FromToEntryPage::slotResetGrades()
00217 {
00218     queryDateEdit->setDate(queryDateEdit->minimumDate());
00219     queryDateEdit->setTime(queryDateEdit->minimumTime());
00220 
00221     gradebox->setCurrentIndex(KV_MIN_GRADE);
00222     totalCountEdit->setValue(0);
00223     badCountEdit->setValue(0);
00224 
00225     m_gradeChanged=true;
00226     m_practiceDateChanged=true;
00227     m_totalCountChanged=true;
00228     m_wrongCountChanged=true;
00229 
00230 //     emit sigModified();
00231 }
00232 
00233 
00234 #include "FromToEntryPage.moc"
00235 

parley

Skip menu "parley"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

kdeedu

Skip menu "kdeedu"
  • kalzium
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  •   docs
  •   src
  • parley
  •   stepcore
Generated for kdeedu by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal