parley
FromToEntryPage.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
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
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
00141 foreach ( int entry, m_entries) {
00142
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
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
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
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
00195 KEduVocTranslation * trans = &m_doc->entry(m_entries.value(0))->translation(m_translationTo);
00196 trans->setFalseFriend(m_translationFrom, fauxami_line->text());
00197 }
00198
00199
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
00231 }
00232
00233
00234 #include "FromToEntryPage.moc"
00235