kwave  18.07.70
TypesMap.h
Go to the documentation of this file.
1 /***************************************************************************
2  TypesMap.h - Map with index, data, command, description
3  -------------------
4  begin : Feb 05 2001
5  copyright : (C) 2001 by Thomas Eschenbacher
6  email : Thomas Eschenbacher <thomas.eschenbacher@gmx.de>
7  ***************************************************************************/
8 
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  ***************************************************************************/
17 
18 #ifndef TYPES_MAP_H
19 #define TYPES_MAP_H
20 
21 #include "config.h"
22 
23 #include <QList>
24 #include <QMap>
25 #include <QObject>
26 #include <QString>
27 #include <QStringList>
28 
29 #include <KLocalizedString>
30 
31 #include "libkwave/String.h"
32 #include "libkwave/Triple.h"
33 
34 namespace Kwave
35 {
36 
37  template <class IDX, class DATA> class TypesMap
38  {
39  private:
40  typedef QMap <IDX, Kwave::Triple <DATA, QString, QString> > TripleMap;
41 
42  public:
48  :m_list()
49  {
50  }
51 
53  virtual ~TypesMap()
54  {
55  m_list.clear();
56  }
57 
62  virtual void fill() = 0;
63 
72  virtual void append(IDX index, DATA data,
73  const QString &name, const QString &description)
74  {
76  triple(data, name, description);
77  m_list.insert(index, triple);
78  }
79 
81  inline unsigned int count() const {
82  return m_list.count();
83  }
84 
89  IDX findFromData(const DATA &data) const
90  {
91  foreach (const IDX &it, m_list.keys()) {
92  if (m_list[it].first() == data) return it;
93  }
94  return IDX(0);
95  }
96 
101  IDX findFromName(const QString &name) const
102  {
103  foreach (const IDX &it, m_list.keys()) {
104  if (m_list[it].second() == name) return it;
105  }
106  return IDX(0);
107  }
108 
110  DATA data(IDX type) const
111  {
112  Q_ASSERT(m_list.contains(type));
113  return m_list[type].first();
114  }
115 
117  QString name(IDX type) const
118  {
119  Q_ASSERT(m_list.contains(type));
120  return m_list[type].second();
121  }
122 
128  QString description(IDX type, bool localized) const
129  {
130  if (!m_list.contains(type)) return QString();
131  QString s(m_list[type].third());
132  return (localized) ? i18n(s.toLatin1()) : s;
133  }
134 
138  QStringList allNames() const
139  {
140  QStringList names;
141  foreach (const IDX &it, m_list.keys()) {
142  names.append(m_list[it].second());
143  }
144  return names;
145  }
146 
150  QList<IDX> keys() const
151  {
152  return m_list.keys();
153  }
154 
155  private:
156 
158  TripleMap m_list;
159 
160  };
161 }
162 
163 #endif /* TYPES_MAP_H */
164 
165 //***************************************************************************
166 //***************************************************************************
virtual void fill()=0
unsigned int count() const
Definition: TypesMap.h:81
Definition: App.h:33
QString description(IDX type, bool localized) const
Definition: TypesMap.h:128
DATA data(IDX type) const
Definition: TypesMap.h:110
TripleMap m_list
Definition: TypesMap.h:158
QList< IDX > keys() const
Definition: TypesMap.h:150
virtual void append(IDX index, DATA data, const QString &name, const QString &description)
Definition: TypesMap.h:72
QMap< IDX, Kwave::Triple< DATA, QString, QString > > TripleMap
Definition: TypesMap.h:40
QStringList allNames() const
Definition: TypesMap.h:138
QString name(IDX type) const
Definition: TypesMap.h:117
IDX findFromData(const DATA &data) const
Definition: TypesMap.h:89
IDX findFromName(const QString &name) const
Definition: TypesMap.h:101
virtual ~TypesMap()
Definition: TypesMap.h:53