summaryrefslogtreecommitdiffstats
path: root/kvoctrain/kvoctrain/kvoctraintableitem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kvoctrain/kvoctrain/kvoctraintableitem.cpp')
-rw-r--r--kvoctrain/kvoctrain/kvoctraintableitem.cpp154
1 files changed, 154 insertions, 0 deletions
diff --git a/kvoctrain/kvoctrain/kvoctraintableitem.cpp b/kvoctrain/kvoctrain/kvoctraintableitem.cpp
new file mode 100644
index 00000000..9972cd6d
--- /dev/null
+++ b/kvoctrain/kvoctrain/kvoctraintableitem.cpp
@@ -0,0 +1,154 @@
+/***************************************************************************
+
+ table item for the main view
+
+ -----------------------------------------------------------------------
+
+ begin : Mon Dec 27 17:05:53 PST 2004
+
+ copyright : (C) 2004-2005 Peter Hedlund
+
+ email : 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 <qlineedit.h>
+#include <qcombobox.h>
+
+#include <klocale.h>
+#include <kglobalsettings.h>
+
+#include "kvoctraintableitem.h"
+
+
+KVocTrainTableItem::KVocTrainTableItem( QTable *t, EditType et, kvoctrainDoc *doc)
+ : QTableItem( t, et, QString::null )
+{
+ m_doc = doc;
+ // we do not want that this item can be replaced
+ setReplaceable(false);
+}
+
+
+void KVocTrainTableItem::setPosition(int curr_row, int curr_col)
+{
+ setRow(curr_row);
+ setCol(curr_col);
+}
+
+
+void KVocTrainTableItem::setDoc(kvoctrainDoc *doc)
+{
+ m_doc = doc;
+}
+
+
+QWidget *KVocTrainTableItem::createEditor() const
+{
+ if (m_doc != 0 && m_doc->numEntries() != 0 && row() >= 0 && col() >= 0) {
+ switch (col()) {
+ case KV_COL_LESS: {
+ QComboBox *lessonbox = new QComboBox(table()->viewport() );
+ lessonbox->setFont(KGlobalSettings::generalFont());
+ lessonbox->insertItem (m_doc->getLessonDescr(0));
+ for (unsigned i = 1; i <= (unsigned) m_doc->numLessons(); ++i)
+ lessonbox->insertItem (m_doc->getLessonDescr(i));
+ lessonbox->setCurrentItem(m_doc->getEntry(row())->getLesson());
+ return lessonbox;
+ }
+ break;
+
+ case KV_COL_MARK: {
+ QComboBox *statebox = new QComboBox(table()->viewport() );
+ statebox->setFont(KGlobalSettings::generalFont());
+ statebox->insertItem (i18n("state of a row", "Active, Not in Query"));
+ statebox->insertItem (i18n("state of a row", "In Query"));
+ statebox->insertItem (i18n("state of a row", "Inactive"));
+ QSize sz = statebox->sizeHint();
+ sz.setHeight(table()->rowHeight(row()));
+ statebox->setMinimumSize(sz);
+ if (!m_doc->getEntry(row())->isActive() )
+ statebox->setCurrentItem(2);
+ else if (m_doc->getEntry(row())->isInQuery() )
+ statebox->setCurrentItem(1);
+ else
+ statebox->setCurrentItem(0);
+ return statebox;
+ }
+ break;
+
+ default: {
+ QLineEdit *edit = new QLineEdit(table()->viewport() );
+ edit->setFrame(false);
+ if (col() == KV_COL_ORG)
+ edit->setText(m_doc->getEntry(row())->getOriginal());
+ else
+ edit->setText(m_doc->getEntry(row())->getTranslation(col()-KV_COL_ORG));
+ return edit;
+ }
+ }
+ }
+ return 0;
+}
+
+
+void KVocTrainTableItem::setContentFromEditor( QWidget *w )
+{
+ if (m_doc != 0) {
+ if ( w->inherits( "QComboBox" ) ) {
+ if (col() == KV_COL_MARK) {
+ QComboBox *statebox = (QComboBox*) w;
+ kvoctrainExpr *expr = m_doc->getEntry(row());
+ bool inq = false;
+ bool act = true;
+ if (statebox->currentItem() == 0) {
+ inq = false;
+ act = true;
+ }
+ else if (statebox->currentItem() == 1) {
+ inq = true;
+ act = true;
+ }
+ else if (statebox->currentItem() == 2) {
+ inq = false;
+ act = false;
+ }
+ if (inq != expr->isInQuery() ||
+ act != expr->isActive() )
+ m_doc->setModified();
+ expr->setInQuery(inq);
+ expr->setActive(act);
+ }
+ else if (col() == KV_COL_LESS) {
+ QComboBox *lessonbox = (QComboBox*) w;
+ if (m_doc->getEntry(row())->getLesson() != lessonbox->currentItem())
+ m_doc->setModified();
+ m_doc->getEntry(row())->setLesson(lessonbox->currentItem());
+ }
+ }
+ else {
+ QLineEdit *edit = (QLineEdit*) w;
+ if (col() == KV_COL_ORG) {
+ if (m_doc->getEntry(row())->getOriginal() != edit->text())
+ m_doc->setModified();
+ m_doc->getEntry(row())->setOriginal(edit->text());
+ }
+ else {
+ if (m_doc->getEntry(row())->getTranslation(col()-KV_COL_ORG) != edit->text())
+ m_doc->setModified();
+ m_doc->getEntry(row())->setTranslation(col()-KV_COL_ORG, (edit->text()));
+ }
+ }
+ }
+}