1 /***************************************************************************
2 kverbedit.cpp - description
4 begin : Sat Dec 15 2001
5 copyright : (C) 2001 by Arnold Kraschinski
6 email : arnold.k67@gmx.de
7 ***************************************************************************/
9 /***************************************************************************
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. *
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;
36 ListView1
->setColumnWidth(0, br
);
37 ListView1
->setColumnWidth(1, br
);
38 // Eine Kopie der Liste erstellen und die Liste in die Ansicht bringen
43 KVerbEdit::~KVerbEdit()
47 // kopiert die Liste in die ListView.
48 void KVerbEdit::listToView()
53 spanishVerbList::Iterator it
;
54 for (it
= list
.begin(); it
!= list
.end(); ++it
)
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()
73 // Wird durch den Cancel-Button aufgerufen und beendet den Dialog ohne
74 // �derungen zu bernehmen.
75 void KVerbEdit::slotCancel()
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.
93 v
.setSpanish(pi
->text(0));
94 v
.setForeign(pi
->text(1));
96 int right
= list
.count() -1;
98 while (!(v
== list
[m
])&&(left
<= right
))
100 m
= (left
+ right
) / 2;
110 // It shouldn't occur that the verb doesn't exist.
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();
126 // Das in der Listenansicht ausgew�lte Verb wird gel�cht.
127 void KVerbEdit::slotDelete()
129 QListViewItem
* pi
= ListView1
->selectedItem();
132 // Das Listenelement hersuchen
134 spanishVerbList::Iterator it
= list
.begin();
135 while ((it
!= list
.end()) && (!found
))
137 if (((*it
).getSpanish() == pi
->text(0)) && ((*it
).getForeign() == pi
->text(1)))
147 // Das Verb auch aus der Listenansicht streichen
148 ListView1
->takeItem(pi
);