17 #include <keduvocdocument.h>
18 #include <keduvocexpression.h>
19 #include <keduvocwordtype.h>
20 #include <keduvocdeclension.h>
22 #include <KMessageBox>
24 using namespace Editor;
34 numberSelection->setItemData(0, KEduVocWordFlag::Singular);
35 numberSelection->setItemData(1, KEduVocWordFlag::Dual);
36 numberSelection->setItemData(2, KEduVocWordFlag::Plural);
37 connect(numberSelection, SIGNAL(currentIndexChanged(
int)),
this, SLOT(
updateEntries()));
39 connect(nextButton, SIGNAL(clicked(
bool)),
this, SLOT(
nextNumber()));
43 foreach(
int index, m_DeclensionLineEdits.keys()) {
44 connect(m_DeclensionLineEdits.value(index), SIGNAL(textChanged(
const QString&)), SLOT(textChanged(
const QString&)));
49 void DeclensionWidget::textChanged(
const QString& text)
51 int valueIndex = m_DeclensionLineEdits.values().indexOf(qobject_cast<KLineEdit*>(sender()));
52 int key = m_DeclensionLineEdits.keys().value(valueIndex) | currentAdditionalWordFlag();
53 m_entry->translation(m_identifier)->declension()->setDeclension(text, (KEduVocWordFlag::Flags)key);
60 foreach(
int key, m_DeclensionLineEdits.keys()) {
61 m_DeclensionLineEdits.value(key)->setText(m_entry->translation(m_identifier)->declension()->declension((KEduVocWordFlag::Flags)(key|currentAdditionalWordFlag())).text());
72 if (m_identifier != identifier) {
84 if (entry->translation(m_identifier)->wordType()) {
85 KEduVocWordFlags wordType = entry->translation(m_identifier)->wordType()->wordType();
86 if (wordType & KEduVocWordFlag::Noun || wordType & KEduVocWordFlag::Adjective) {
90 if (!entry->translation(m_identifier)->declension()) {
91 entry->translation(m_identifier)->setDeclension(
new KEduVocDeclension);
104 int DeclensionWidget::currentAdditionalWordFlag()
106 if (m_entry->translation(m_identifier)->wordType()->wordType() & KEduVocWordFlag::Noun)
108 if (m_entry->translation(m_identifier)->wordType()->wordType() & KEduVocWordFlag::Feminine)
109 return KEduVocWordFlag::Feminine;
110 if (m_entry->translation(m_identifier)->wordType()->wordType() & KEduVocWordFlag::Masculine)
111 return KEduVocWordFlag::Masculine;
112 if (m_entry->translation(m_identifier)->wordType()->wordType() & KEduVocWordFlag::Neuter)
113 return KEduVocWordFlag::Neuter;
116 return numberSelection->itemData(numberSelection->currentIndex()).toInt();
121 int newIndex = numberSelection->currentIndex()+1;
122 if (newIndex >= numberSelection->count())
125 numberSelection->setCurrentIndex(newIndex);
128 void DeclensionWidget::setupLineEdits()
130 m_DeclensionLineEdits.clear();
132 if (m_entry == 0 || !m_entry->translation(m_identifier) || !m_entry->translation(m_identifier)->wordType()
133 || m_entry->translation(m_identifier)->wordType()->wordType() & KEduVocWordFlag::Noun)
135 label_3->setText(i18n(
"Singular"));
136 label_4->setText(i18n(
"Dual"));
137 label_5->setText(i18n(
"Plural"));
140 for (
int i = 0; i < numberLayout->count(); ++i)
142 numberLayout->itemAt(i)->widget()->hide();
145 m_DeclensionLineEdits[KEduVocWordFlag::Singular | KEduVocWordFlag::Nominative] = masculine_1;
146 m_DeclensionLineEdits[KEduVocWordFlag::Singular | KEduVocWordFlag::Genitive] = masculine_2;
147 m_DeclensionLineEdits[KEduVocWordFlag::Singular | KEduVocWordFlag::Dative] = masculine_3;
148 m_DeclensionLineEdits[KEduVocWordFlag::Singular | KEduVocWordFlag::Accusative] = masculine_4;
149 m_DeclensionLineEdits[KEduVocWordFlag::Singular | KEduVocWordFlag::Ablative] = masculine_5;
150 m_DeclensionLineEdits[KEduVocWordFlag::Singular | KEduVocWordFlag::Locative] = masculine_6;
151 m_DeclensionLineEdits[KEduVocWordFlag::Singular | KEduVocWordFlag::Vocative] = masculine_7;
153 m_DeclensionLineEdits[KEduVocWordFlag::Dual | KEduVocWordFlag::Nominative] = feminine_1;
154 m_DeclensionLineEdits[KEduVocWordFlag::Dual | KEduVocWordFlag::Genitive] = feminine_2;
155 m_DeclensionLineEdits[KEduVocWordFlag::Dual | KEduVocWordFlag::Dative] = feminine_3;
156 m_DeclensionLineEdits[KEduVocWordFlag::Dual | KEduVocWordFlag::Accusative] = feminine_4;
157 m_DeclensionLineEdits[KEduVocWordFlag::Dual | KEduVocWordFlag::Ablative] = feminine_5;
158 m_DeclensionLineEdits[KEduVocWordFlag::Dual | KEduVocWordFlag::Locative] = feminine_6;
159 m_DeclensionLineEdits[KEduVocWordFlag::Dual | KEduVocWordFlag::Vocative] = feminine_7;
161 m_DeclensionLineEdits[KEduVocWordFlag::Plural | KEduVocWordFlag::Nominative] = neuter_1;
162 m_DeclensionLineEdits[KEduVocWordFlag::Plural | KEduVocWordFlag::Genitive] = neuter_2;
163 m_DeclensionLineEdits[KEduVocWordFlag::Plural | KEduVocWordFlag::Dative] = neuter_3;
164 m_DeclensionLineEdits[KEduVocWordFlag::Plural | KEduVocWordFlag::Accusative] = neuter_4;
165 m_DeclensionLineEdits[KEduVocWordFlag::Plural | KEduVocWordFlag::Ablative] = neuter_5;
166 m_DeclensionLineEdits[KEduVocWordFlag::Plural | KEduVocWordFlag::Locative] = neuter_6;
167 m_DeclensionLineEdits[KEduVocWordFlag::Plural | KEduVocWordFlag::Vocative] = neuter_7;
171 label_3->setText(i18n(
"Masculine"));
172 label_4->setText(i18n(
"Feminine"));
173 label_5->setText(i18n(
"Neuter"));
176 for (
int i = 0; i < numberLayout->count(); ++i)
178 numberLayout->itemAt(i)->widget()->show();
181 m_DeclensionLineEdits[KEduVocWordFlag::Masculine | KEduVocWordFlag::Nominative] = masculine_1;
182 m_DeclensionLineEdits[KEduVocWordFlag::Masculine | KEduVocWordFlag::Genitive] = masculine_2;
183 m_DeclensionLineEdits[KEduVocWordFlag::Masculine | KEduVocWordFlag::Dative] = masculine_3;
184 m_DeclensionLineEdits[KEduVocWordFlag::Masculine | KEduVocWordFlag::Accusative] = masculine_4;
185 m_DeclensionLineEdits[KEduVocWordFlag::Masculine | KEduVocWordFlag::Ablative] = masculine_5;
186 m_DeclensionLineEdits[KEduVocWordFlag::Masculine | KEduVocWordFlag::Locative] = masculine_6;
187 m_DeclensionLineEdits[KEduVocWordFlag::Masculine | KEduVocWordFlag::Vocative] = masculine_7;
189 m_DeclensionLineEdits[KEduVocWordFlag::Feminine | KEduVocWordFlag::Nominative] = feminine_1;
190 m_DeclensionLineEdits[KEduVocWordFlag::Feminine | KEduVocWordFlag::Genitive] = feminine_2;
191 m_DeclensionLineEdits[KEduVocWordFlag::Feminine | KEduVocWordFlag::Dative] = feminine_3;
192 m_DeclensionLineEdits[KEduVocWordFlag::Feminine | KEduVocWordFlag::Accusative] = feminine_4;
193 m_DeclensionLineEdits[KEduVocWordFlag::Feminine | KEduVocWordFlag::Ablative] = feminine_5;
194 m_DeclensionLineEdits[KEduVocWordFlag::Feminine | KEduVocWordFlag::Locative] = feminine_6;
195 m_DeclensionLineEdits[KEduVocWordFlag::Feminine | KEduVocWordFlag::Vocative] = feminine_7;
197 m_DeclensionLineEdits[KEduVocWordFlag::Neuter | KEduVocWordFlag::Nominative] = neuter_1;
198 m_DeclensionLineEdits[KEduVocWordFlag::Neuter | KEduVocWordFlag::Genitive] = neuter_2;
199 m_DeclensionLineEdits[KEduVocWordFlag::Neuter | KEduVocWordFlag::Dative] = neuter_3;
200 m_DeclensionLineEdits[KEduVocWordFlag::Neuter | KEduVocWordFlag::Accusative] = neuter_4;
201 m_DeclensionLineEdits[KEduVocWordFlag::Neuter | KEduVocWordFlag::Ablative] = neuter_5;
202 m_DeclensionLineEdits[KEduVocWordFlag::Neuter | KEduVocWordFlag::Locative] = neuter_6;
203 m_DeclensionLineEdits[KEduVocWordFlag::Neuter | KEduVocWordFlag::Vocative] = neuter_7;
207 #include "declensionwidget.moc"