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);
43 foreach(
int index, m_DeclensionLineEdits.
keys()) {
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) {
134 label_3->setText(i18n(
"Singular"));
135 label_4->setText(i18n(
"Dual"));
136 label_5->setText(i18n(
"Plural"));
139 for (
int i = 0; i < numberLayout->count(); ++i) {
140 numberLayout->itemAt(i)->widget()->hide();
143 m_DeclensionLineEdits[KEduVocWordFlag::Singular | KEduVocWordFlag::Nominative] = masculine_1;
144 m_DeclensionLineEdits[KEduVocWordFlag::Singular | KEduVocWordFlag::Genitive] = masculine_2;
145 m_DeclensionLineEdits[KEduVocWordFlag::Singular | KEduVocWordFlag::Dative] = masculine_3;
146 m_DeclensionLineEdits[KEduVocWordFlag::Singular | KEduVocWordFlag::Accusative] = masculine_4;
147 m_DeclensionLineEdits[KEduVocWordFlag::Singular | KEduVocWordFlag::Ablative] = masculine_5;
148 m_DeclensionLineEdits[KEduVocWordFlag::Singular | KEduVocWordFlag::Locative] = masculine_6;
149 m_DeclensionLineEdits[KEduVocWordFlag::Singular | KEduVocWordFlag::Vocative] = masculine_7;
151 m_DeclensionLineEdits[KEduVocWordFlag::Dual | KEduVocWordFlag::Nominative] = feminine_1;
152 m_DeclensionLineEdits[KEduVocWordFlag::Dual | KEduVocWordFlag::Genitive] = feminine_2;
153 m_DeclensionLineEdits[KEduVocWordFlag::Dual | KEduVocWordFlag::Dative] = feminine_3;
154 m_DeclensionLineEdits[KEduVocWordFlag::Dual | KEduVocWordFlag::Accusative] = feminine_4;
155 m_DeclensionLineEdits[KEduVocWordFlag::Dual | KEduVocWordFlag::Ablative] = feminine_5;
156 m_DeclensionLineEdits[KEduVocWordFlag::Dual | KEduVocWordFlag::Locative] = feminine_6;
157 m_DeclensionLineEdits[KEduVocWordFlag::Dual | KEduVocWordFlag::Vocative] = feminine_7;
159 m_DeclensionLineEdits[KEduVocWordFlag::Plural | KEduVocWordFlag::Nominative] = neuter_1;
160 m_DeclensionLineEdits[KEduVocWordFlag::Plural | KEduVocWordFlag::Genitive] = neuter_2;
161 m_DeclensionLineEdits[KEduVocWordFlag::Plural | KEduVocWordFlag::Dative] = neuter_3;
162 m_DeclensionLineEdits[KEduVocWordFlag::Plural | KEduVocWordFlag::Accusative] = neuter_4;
163 m_DeclensionLineEdits[KEduVocWordFlag::Plural | KEduVocWordFlag::Ablative] = neuter_5;
164 m_DeclensionLineEdits[KEduVocWordFlag::Plural | KEduVocWordFlag::Locative] = neuter_6;
165 m_DeclensionLineEdits[KEduVocWordFlag::Plural | KEduVocWordFlag::Vocative] = neuter_7;
167 label_3->setText(i18n(
"Masculine"));
168 label_4->setText(i18n(
"Feminine"));
169 label_5->setText(i18n(
"Neuter"));
172 for (
int i = 0; i < numberLayout->count(); ++i) {
173 numberLayout->itemAt(i)->widget()->show();
176 m_DeclensionLineEdits[KEduVocWordFlag::Masculine | KEduVocWordFlag::Nominative] = masculine_1;
177 m_DeclensionLineEdits[KEduVocWordFlag::Masculine | KEduVocWordFlag::Genitive] = masculine_2;
178 m_DeclensionLineEdits[KEduVocWordFlag::Masculine | KEduVocWordFlag::Dative] = masculine_3;
179 m_DeclensionLineEdits[KEduVocWordFlag::Masculine | KEduVocWordFlag::Accusative] = masculine_4;
180 m_DeclensionLineEdits[KEduVocWordFlag::Masculine | KEduVocWordFlag::Ablative] = masculine_5;
181 m_DeclensionLineEdits[KEduVocWordFlag::Masculine | KEduVocWordFlag::Locative] = masculine_6;
182 m_DeclensionLineEdits[KEduVocWordFlag::Masculine | KEduVocWordFlag::Vocative] = masculine_7;
184 m_DeclensionLineEdits[KEduVocWordFlag::Feminine | KEduVocWordFlag::Nominative] = feminine_1;
185 m_DeclensionLineEdits[KEduVocWordFlag::Feminine | KEduVocWordFlag::Genitive] = feminine_2;
186 m_DeclensionLineEdits[KEduVocWordFlag::Feminine | KEduVocWordFlag::Dative] = feminine_3;
187 m_DeclensionLineEdits[KEduVocWordFlag::Feminine | KEduVocWordFlag::Accusative] = feminine_4;
188 m_DeclensionLineEdits[KEduVocWordFlag::Feminine | KEduVocWordFlag::Ablative] = feminine_5;
189 m_DeclensionLineEdits[KEduVocWordFlag::Feminine | KEduVocWordFlag::Locative] = feminine_6;
190 m_DeclensionLineEdits[KEduVocWordFlag::Feminine | KEduVocWordFlag::Vocative] = feminine_7;
192 m_DeclensionLineEdits[KEduVocWordFlag::Neuter | KEduVocWordFlag::Nominative] = neuter_1;
193 m_DeclensionLineEdits[KEduVocWordFlag::Neuter | KEduVocWordFlag::Genitive] = neuter_2;
194 m_DeclensionLineEdits[KEduVocWordFlag::Neuter | KEduVocWordFlag::Dative] = neuter_3;
195 m_DeclensionLineEdits[KEduVocWordFlag::Neuter | KEduVocWordFlag::Accusative] = neuter_4;
196 m_DeclensionLineEdits[KEduVocWordFlag::Neuter | KEduVocWordFlag::Ablative] = neuter_5;
197 m_DeclensionLineEdits[KEduVocWordFlag::Neuter | KEduVocWordFlag::Locative] = neuter_6;
198 m_DeclensionLineEdits[KEduVocWordFlag::Neuter | KEduVocWordFlag::Vocative] = neuter_7;
202 #include "declensionwidget.moc"
QList< T > values() const
QList< Key > keys() const
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
const T value(const Key &key) const