QCAD
Open Source 2D CAD
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RResourceList.h
Go to the documentation of this file.
1 
20 #ifndef RRESOURCELIST_H
21 #define RRESOURCELIST_H
22 
23 #include "core_global.h"
24 
25 #include <QString>
26 #include <QMap>
27 #include <QFileInfo>
28 
29 #include "RS.h"
30 
36 template <class T>
38 public:
39 // void init() {
40 // }
41 
42  void uninit() {
43  QMapIterator<QString, T*> it(resMap);
44 
45  while (it.hasNext()) {
46  it.next();
47  delete it.value();
48  }
49 
50  resMap.clear();
51  }
52 
56  QStringList getNames() {
57  return resMap.keys();
58  }
59 
64  T* get(const QString& resName) {
65  if (!RS::mapContainsCaseInsensitive(resMap, resName)) {
66  if (RS::mapContainsCaseInsensitive(resSubstitutionMap, resName)) {
67  return get(resSubstitutionMap.value(resName));
68  }
69  return NULL;
70  }
71 
72  T* res = RS::mapValueCaseInsensitive(resMap, resName);
73  if (res==NULL) {
74  qWarning("RResourceList::get: list contains NULL resource.");
75  Q_ASSERT(false);
76  return NULL;
77  }
78 
79  if (!res->isLoaded()) {
80  res->load();
81  }
82 
83  return res;
84  }
85 
86 public:
87  QMap<QString, T*> resMap;
88  QMap<QString, QString> resSubstitutionMap;
89 };
90 
91 //template <class T> QMap<QString, T*> RResourceList<T>::resMap;
92 //template <class T> QMap<QString, QString> RResourceList<T>::resSubstitutionMap;
93 
94 #endif