summaryrefslogtreecommitdiffstats
path: root/kvoctrain/kvoctrain/entry-dialogs/TenseEntryPage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kvoctrain/kvoctrain/entry-dialogs/TenseEntryPage.cpp')
-rw-r--r--kvoctrain/kvoctrain/entry-dialogs/TenseEntryPage.cpp317
1 files changed, 317 insertions, 0 deletions
diff --git a/kvoctrain/kvoctrain/entry-dialogs/TenseEntryPage.cpp b/kvoctrain/kvoctrain/entry-dialogs/TenseEntryPage.cpp
new file mode 100644
index 00000000..30fa4fdd
--- /dev/null
+++ b/kvoctrain/kvoctrain/entry-dialogs/TenseEntryPage.cpp
@@ -0,0 +1,317 @@
+/***************************************************************************
+
+ tenses of irreg. verbs dialog page
+
+ -----------------------------------------------------------------------
+
+ begin : Sat Nov 27 20:20:34 1999
+
+ copyright : (C) 1999-2001 Ewald Arnold <kvoctrain@ewald-arnold.de>
+ (C) 2001 The KDE-EDU team
+ (C) 2005 Peter Hedlund <peter.hedlund@kdemail.net>
+
+ -----------------------------------------------------------------------
+
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <qcombobox.h>
+#include <qcheckbox.h>
+#include <qpushbutton.h>
+#include <qlineedit.h>
+
+#include <langset.h>
+
+#include "TenseEntryPage.h"
+#include "EntryDlg.h"
+
+TenseEntryPage::TenseEntryPage
+(
+ EntryDlg *_dlgbook,
+ bool multi_sel,
+ const Conjugation &con_prefix,
+ const Conjugation &conjug,
+ QWidget *parent,
+ const char *name
+)
+ : TenseEntryPageForm( parent, name ), multi_mode(multi_sel), dlgbook(_dlgbook)
+{
+
+ connect( third_p_common, SIGNAL(toggled(bool)), SLOT(slotThirdPCommonToggled(bool)) );
+ connect( third_s_common, SIGNAL(toggled(bool)), SLOT(slotThirdSCommonToggled(bool)) );
+ connect( b_next, SIGNAL(clicked()), SLOT(slotNextConj()) );
+ connect( tensebox, SIGNAL(activated(int)), SLOT(slotTenseSelected(int)) );
+
+ connect( thirdN_plural, SIGNAL(textChanged(const QString&)), SLOT(thirdNPluralChanged(const QString&)) );
+ connect( thirdN_singular, SIGNAL(textChanged(const QString&)), SLOT(thirdNSingularChanged(const QString&)) );
+ connect( thirdM_plural, SIGNAL(textChanged(const QString&)), SLOT(thirdMPluralChanged(const QString&)) );
+ connect( thirdM_singular, SIGNAL(textChanged(const QString&)), SLOT(thirdMSingularChanged(const QString&)) );
+ connect( thirdF_plural, SIGNAL(textChanged(const QString&)), SLOT(thirdFPluralChanged(const QString&)) );
+ connect( thirdF_singular, SIGNAL(textChanged(const QString&)), SLOT(thirdFSingularChanged(const QString&)) );
+ connect( second_plural, SIGNAL(textChanged(const QString&)), SLOT(secondPluralChanged(const QString&)) );
+ connect( second_singular, SIGNAL(textChanged(const QString&)), SLOT(secondSingularChanged(const QString&)) );
+ connect( first_plural, SIGNAL(textChanged(const QString&)), SLOT(firstPluralChanged(const QString&)) );
+ connect( first_singular, SIGNAL(textChanged(const QString&)), SLOT(firstSingularChanged(const QString&)) );
+
+ prefix = con_prefix;
+ selection = "";
+/*
+ // FIXME: fill labels with prefixes ?
+
+ label_first_plural->setText (con_prefix.pers1Plural (CONJ_PREFIX));
+ label_first_singular->setText (con_prefix.pers1Singular (CONJ_PREFIX));
+ label_second_singular->setText (con_prefix.pers2Singular (CONJ_PREFIX));
+ label_second_plural->setText (con_prefix.pers2Plural (CONJ_PREFIX));
+ label_thirdF_plural->setText (con_prefix.pers3FemalePlural (CONJ_PREFIX));
+ label_thirdF_singular->setText (con_prefix.pers3FemaleSingular (CONJ_PREFIX));
+ label_thirdM_singular->setText (con_prefix.pers3MaleSingular (CONJ_PREFIX));
+ label_thirdN_singular->setText (con_prefix.pers3NaturalSingular (CONJ_PREFIX));
+ label_thirdN_plural->setText (con_prefix.pers3NaturalPlural (CONJ_PREFIX));
+ label_thirdM_plural->setText (con_prefix.pers3MalePlural (CONJ_PREFIX));
+*/
+
+ setData(multi_sel, conjug);
+}
+
+
+void TenseEntryPage::setData(bool /*multi_sel*/, const Conjugation &conjug)
+{
+ if (multi_mode)
+ tensebox->setEnabled(false);
+
+ for (int i = 0; i < Conjugation::numTenses(); i++)
+ tensebox->insertItem (Conjugation::getName(i) );
+
+ conjugations = conjug;
+ slotTenseSelected(0);
+ updateFields();
+
+ setModified(false);
+}
+
+
+void TenseEntryPage::firstPluralChanged(const QString& s)
+{
+ conjugations.setPers1Plural (selection, s);
+ updateFields();
+ setModified(true);
+}
+
+
+void TenseEntryPage::firstSingularChanged(const QString& s)
+{
+ conjugations.setPers1Singular (selection, s);
+ updateFields();
+ setModified(true);
+}
+
+
+void TenseEntryPage::secondSingularChanged(const QString& s)
+{
+ conjugations.setPers2Singular (selection, s);
+ updateFields();
+ setModified(true);
+}
+
+
+void TenseEntryPage::secondPluralChanged(const QString& s)
+{
+ conjugations.setPers2Plural (selection, s);
+ updateFields();
+ setModified(true);
+}
+
+
+void TenseEntryPage::thirdFPluralChanged(const QString& s)
+{
+ conjugations.setPers3FemalePlural (selection, s);
+ updateFields();
+ setModified(true);
+}
+
+
+void TenseEntryPage::thirdFSingularChanged(const QString& s)
+{
+ conjugations.setPers3FemaleSingular (selection, s);
+ updateFields();
+ setModified(true);
+}
+
+
+void TenseEntryPage::thirdMSingularChanged(const QString& s)
+{
+ conjugations.setPers3MaleSingular (selection, s);
+ updateFields();
+ setModified(true);
+}
+
+
+void TenseEntryPage::thirdNSingularChanged(const QString& s)
+{
+ conjugations.setPers3NaturalSingular(selection, s);
+ updateFields();
+ setModified(true);
+}
+
+
+void TenseEntryPage::thirdNPluralChanged(const QString& s)
+{
+ conjugations.setPers3NaturalPlural (selection, s);
+ updateFields();
+ setModified(true);
+}
+
+
+void TenseEntryPage::thirdMPluralChanged(const QString& s)
+{
+ conjugations.setPers3MalePlural (selection, s);
+ updateFields();
+ setModified(true);
+}
+
+
+void TenseEntryPage::slotTenseSelected(int sel)
+{
+ if (multi_mode)
+ {
+ b_next->setEnabled(false);
+ third_s_common->setEnabled(false);
+ third_p_common->setEnabled(false);
+ first_plural->setEnabled(false);
+ first_singular->setEnabled(false);
+ second_singular->setEnabled(false);
+ second_plural->setEnabled(false);
+ thirdF_plural->setEnabled(false);
+ thirdF_singular->setEnabled(false);
+ thirdM_singular->setEnabled(false);
+ thirdN_singular->setEnabled(false);
+ thirdN_plural->setEnabled(false);
+ thirdM_plural->setEnabled(false);
+ }
+ else
+ {
+ selection = Conjugation::getAbbrev(sel);
+ first_plural->setText (conjugations.pers1Plural (selection ));
+ first_singular->setText (conjugations.pers1Singular (selection ));
+ second_plural->setText (conjugations.pers2Plural (selection ));
+ second_singular->setText (conjugations.pers2Singular (selection ));
+ thirdF_plural->setText (conjugations.pers3FemalePlural (selection ));
+ thirdF_singular->setText (conjugations.pers3FemaleSingular (selection ));
+ thirdM_plural->setText (conjugations.pers3MalePlural (selection));
+ thirdM_singular->setText (conjugations.pers3MaleSingular (selection ));
+ thirdN_plural->setText (conjugations.pers3NaturalPlural (selection));
+ thirdN_singular->setText (conjugations.pers3NaturalSingular (selection ));
+
+ bool common = conjugations.pers3SingularCommon(selection);
+ third_s_common->setChecked(common);
+ thirdM_singular->setEnabled(!common);
+ thirdN_singular->setEnabled(!common);
+
+ common = conjugations.pers3PluralCommon(selection);
+ third_p_common->setChecked(common);
+ thirdN_plural->setEnabled(!common);
+ thirdM_plural->setEnabled(!common);
+ }
+}
+
+
+void TenseEntryPage::slotThirdSCommonToggled(bool common)
+{
+ conjugations.setPers3SingularCommon(selection, common);
+ thirdM_singular->setEnabled(!common);
+ thirdN_singular->setEnabled(!common);
+ setModified(true);
+}
+
+
+void TenseEntryPage::slotThirdPCommonToggled(bool common)
+{
+ conjugations.setPers3PluralCommon(selection, common);
+ thirdN_plural->setEnabled(!common);
+ thirdM_plural->setEnabled(!common);
+ setModified(true);
+}
+
+
+void TenseEntryPage::slotNextConj()
+{
+ int j;
+ for (int i = tensebox->currentItem()+1; i < tensebox->count(); i++) {
+
+ for (j = 0; j < conjugations.numEntries(); j++ ) {
+ if (Conjugation::getAbbrev(i) == conjugations.getType(j)) {
+ tensebox->setCurrentItem (i);
+ slotTenseSelected(i);
+ return;
+ }
+ }
+ }
+
+ for (int i = 0; i < tensebox->currentItem()-1; i++) {
+ for (j = 0; j < conjugations.numEntries(); j++ ) {
+ if (Conjugation::getAbbrev(i) == conjugations.getType(j)) {
+ tensebox->setCurrentItem (i);
+ slotTenseSelected(i);
+ return;
+ }
+ }
+ }
+}
+
+
+Conjugation TenseEntryPage::getConjugation()
+{
+ conjugations.cleanUp();
+ return conjugations;
+}
+
+
+void TenseEntryPage::updateFields()
+{
+ b_next->setEnabled(conjugations.numEntries() > 1); // next button
+}
+
+
+bool TenseEntryPage::isModified()
+{
+ return modified;
+}
+
+
+void TenseEntryPage::setEnabled(int enable)
+{
+ bool ena = enable == EntryDlg::EnableAll;
+
+ b_next->setEnabled(ena);
+ tensebox->setEnabled(ena);
+ third_s_common->setEnabled(ena);
+ third_p_common->setEnabled(ena);
+ first_plural->setEnabled(ena);
+ first_singular->setEnabled(ena);
+ second_singular->setEnabled(ena);
+ second_plural->setEnabled(ena);
+ thirdF_plural->setEnabled(ena);
+ thirdF_singular->setEnabled(ena);
+ thirdM_singular->setEnabled(ena);
+ thirdN_singular->setEnabled(ena);
+ thirdN_plural->setEnabled(ena);
+ thirdM_plural->setEnabled(ena);
+}
+
+
+void TenseEntryPage::setModified(bool mod)
+{
+ modified = mod;
+ if (mod)
+ emit sigModified();
+}
+
+#include "TenseEntryPage.moc"