18 #ifndef _KRADIO_LIBKRADIO_GUI_GUI_LIST_HELPER_H_
19 #define _KRADIO_LIBKRADIO_GUI_GUI_LIST_HELPER_H_
25 #include <kdemacros.h>
27 #include <QtCore/QMap>
28 #include <QtCore/QList>
29 #include <QtCore/QString>
30 #include <QtCore/QObject>
31 #include <QtCore/QVariant>
32 #include <QtCore/QObject>
44 virtual void slotOK() = 0;
45 virtual void slotCancel() = 0;
48 virtual void slotUserSelection() = 0;
51 void emitSigDirtyChanged(
bool d);
54 void sigDirtyChanged (
bool dirty);
61 enum SORT_KEY { SORT_BY_ID, SORT_BY_DESCR, SORT_NONE };
64 GUIListHelper (TLIST *list,
const QMap<TID, QString> &data, SORT_KEY skey);
65 GUIListHelper (TLIST *list,
const QList<QString> &data, SORT_KEY skey);
68 void setList(TLIST *list) { m_List = list; }
70 void setCurrentItemID(
const TID &
id);
71 void setOrgItemID (
const TID &
id);
74 void alternativesChanged(
const TData &data);
76 const TID getCurrentItemID()
const;
78 int count()
const {
return m_List ? m_List->count() : 0; }
87 void setData(
const QMap<TID, QString> &data);
88 void setData(
const QList<QString> &data);
89 bool containsItemID(
const TID &
id)
const {
return m_List && m_List->findData(
id) >= 0; }
92 void setUserDirty(
bool dirty) { setDirty(dirty, m_alternativeDirty); }
95 void setDirty(
bool userDirty,
bool alternativesDirty)
96 { m_userDirty = userDirty;
97 m_alternativeDirty = alternativesDirty;
128 bool operator > (
const THelpData &d)
const {
return (skey == SORT_BY_ID) ?
id > d.
id : descr > d.
descr; }
129 bool operator < (
const THelpData &d)
const {
return (skey == SORT_BY_ID) ?
id < d.
id : descr < d.
descr; }
135 template <
class TLIST,
class TID>
140 m_alternativeDirty(false),
141 m_ignoreGUIChange(false)
148 template <
class TLIST,
class TID>
153 m_alternativeDirty(false),
154 m_ignoreGUIChange(false)
161 template <
class TLIST,
class TID>
166 m_alternativeDirty(false),
167 m_ignoreGUIChange(false)
177 template <
class TLIST,
class TID>
181 setOrgItemID(getCurrentItemID());
183 setDirty(
false, !m_userDirty && m_alternativeDirty);
186 template <
class TLIST,
class TID>
189 setDirty(
false,
false);
190 setCurrentItemID(m_orgID);
193 template <
class TLIST,
class TID>
196 if (m_ignoreGUIChange)
198 m_userSelID = getCurrentItemID();
199 setDirty(
true,
false);
202 template <
class TLIST,
class TID>
203 template <
class TData>
209 setAlternativeDirty(
false);
213 setCurrentItemID(m_orgID);
216 setCurrentItemID(m_userSelID);
222 template <
class TLIST,
class TID>
226 QList<THelpData> help_list;
227 for (
typename QMap<TID, QString>::const_iterator it = data.begin(); it != data.end(); ++it) {
228 help_list.push_back(
THelpData(it.key(), it.value(), m_skey));
230 if (m_skey != SORT_NONE) {
235 foreach (item, help_list) {
236 m_List->addItem(item.
descr, item.
id);
241 template <
class TLIST,
class TID>
245 QList<QString> data = _data;
246 if (m_skey != SORT_NONE) {
251 foreach (item, data) {
252 m_List->addItem(item, item);
257 template <
class TLIST,
class TID>
260 bool oldIgnoreGUIChange = m_ignoreGUIChange;
261 m_ignoreGUIChange =
true;
263 int idx = m_List->findData(
id);
265 m_List->setCurrentIndex(idx);
267 m_List->setCurrentIndex(0);
268 setAlternativeDirty();
271 m_ignoreGUIChange = oldIgnoreGUIChange;
274 template <
class TLIST,
class TID>
279 setCurrentItemID(m_orgID);
283 template <
class TLIST,
class TID>
286 int idx = m_List->currentIndex();
288 const QVariant &data = m_List->itemData(idx);
289 return data.value<TID>();