moved kdeaccessibility kdeaddons kdeadmin kdeartwork kdebindings kdeedu kdegames...
[kdeedu.git] / kverbos / kverbos / kverbedit.cpp
blobb0d4352eade71887bde6565d228648b3af31d32a
1 /***************************************************************************
2 kverbedit.cpp - description
3 -------------------
4 begin : Sat Dec 15 2001
5 copyright : (C) 2001 by Arnold Kraschinski
6 email : arnold.k67@gmx.de
7 ***************************************************************************/
9 /***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
18 #include <qlistview.h>
20 #include "kverbedit.h"
21 #include "kerfassen.h"
23 /** An die Dialogklasse wird direkt der Zeiger auf die Verbliste bergeben, damit
24 * die Liste der Verben bearbeitet werden kann. Zu Beginn mssen alle Verben
25 * aus der Liste in eine dialogeigene Liste und die QListView bertragen werden.
27 KVerbEdit::KVerbEdit(spanishVerbList& l, QWidget* parent /*= 0*/, const char* name /*= 0*/, bool modal /*= FALSE*/, WFlags fl /*= 0*/)
28 : QVerbEdit(parent, name, modal, fl), list(l)
30 // Die Spaltenbreiten anpassen
31 ListView1->setColumnWidthMode(0, QListView::Manual);
32 ListView1->setColumnWidthMode(1, QListView::Manual);
33 int br = width() / 20 * 9;
34 QString brstr;
35 brstr.setNum(br);
36 ListView1->setColumnWidth(0, br);
37 ListView1->setColumnWidth(1, br);
38 // Eine Kopie der Liste erstellen und die Liste in die Ansicht bringen
39 changed = false;
40 listToView();
43 KVerbEdit::~KVerbEdit()
47 // kopiert die Liste in die ListView.
48 void KVerbEdit::listToView()
50 ListView1->clear();
51 if (!list.isEmpty())
53 spanishVerbList::Iterator it;
54 for (it = list.begin(); it != list.end(); ++it)
56 QListViewItem* pItem;
57 pItem = new QListViewItem( ListView1, (*it).getSpanish(), (*it).getForeign());
58 ListView1->insertItem(pItem);
64 // !!SLOTS!! Ab hier werden die slots der Klasse implementiert. !!SLOTS!!
66 // Wird durch den OK-Button aufgerufen und beendet den Dialog.
67 // �derungen werden bernommen.
68 void KVerbEdit::slotDlgEnde()
70 done(0);
73 // Wird durch den Cancel-Button aufgerufen und beendet den Dialog ohne
74 // �derungen zu bernehmen.
75 void KVerbEdit::slotCancel()
77 done(0);
80 // Ein Verb in der Liste bearbeiten oder neue Verben in die Liste aufnehmen.
81 // Feststellen welches Verb in der Liste markiert ist und dieses Verb aus der Liste suchen.
82 // An den Dialog wird ein Listeniterator bergeben.
83 void KVerbEdit::slotEditVerb()
85 QListViewItem* pi = ListView1->selectedItem();
86 // it's a sorted list, so binary search works.
87 // v is not a real verb it is only used for the search. v doesn't have any forms but
88 // that isn't important to compare.
89 int m = -1;
90 if (pi != 0)
92 verbSpanish v;
93 v.setSpanish(pi->text(0));
94 v.setForeign(pi->text(1));
95 int left = 0;
96 int right = list.count() -1;
97 m = 0;
98 while (!(v == list[m])&&(left <= right))
100 m = (left + right) / 2;
101 if (v < list[m])
103 right = m - 1;
105 else
107 left = m + 1;
110 // It shouldn't occur that the verb doesn't exist.
111 if (!(v == list[m]))
112 m = -1;
114 KErfassen* pDlgErfassen = new KErfassen(list, m, this, "erfassen", true);
115 pDlgErfassen->exec();
116 changed = changed || pDlgErfassen->wasChanged();
117 if (pDlgErfassen->wasChanged())
119 list = pDlgErfassen->getList();
120 listToView();
122 delete pDlgErfassen;
123 pDlgErfassen = 0;
126 // Das in der Listenansicht ausgew�lte Verb wird gel�cht.
127 void KVerbEdit::slotDelete()
129 QListViewItem* pi = ListView1->selectedItem();
130 if (0 != pi)
132 // Das Listenelement hersuchen
133 bool found = false;
134 spanishVerbList::Iterator it = list.begin();
135 while ((it != list.end()) && (!found))
137 if (((*it).getSpanish() == pi->text(0)) && ((*it).getForeign() == pi->text(1)))
139 found = true;
141 else
142 it++;
144 if (found)
146 list.remove(it);
147 // Das Verb auch aus der Listenansicht streichen
148 ListView1->takeItem(pi);
149 changed = true;