Memory Management Improved
[pierogi] / pirkeysetmanager.h
1 #ifndef PIRKEYSETMANAGER_H
2 #define PIRKEYSETMANAGER_H
3
4 #include "pirkeynames.h"
5 #include "pirmakenames.h"
6
7 #include <QString>
8 #include <QThread>
9
10 class QObject;
11 class PIRSelectKeysetForm;
12 class PIRKeysetWidgetItem;
13
14 #include <map>
15 class PIRKeysetMetaData;
16
17 typedef std::map<unsigned int, PIRKeysetMetaData *> PIRKeysetCollection;
18
19 // Maps used to locate metadata using QSettings values:
20 typedef std::map<QString, unsigned int> PIRKeysetNameIndex;
21 typedef std::map<QString, PIRKeysetNameIndex> PIRKeysetMakeIndex;
22
23 class PIRKeysetManager
24 {
25 public:
26   PIRKeysetManager();
27
28   ~PIRKeysetManager();
29
30   void populateGuiWidget(
31     PIRSelectKeysetForm *widget) const;
32
33   bool keysetExists(
34     unsigned int keysetID) const;
35
36   bool findKeysetID(
37     QString make,
38     QString name,
39     unsigned int &id) const;
40
41   PIRKeysetWidgetItem *makeKeysetItem(
42     QString make,
43     QString name) const;
44
45   bool hasKey(
46     unsigned int keysetID,
47     PIRKeyName name) const;
48
49   PIRMakeName getMake(
50     unsigned int keysetID) const;
51
52   QString getDisplayName(
53     unsigned int keysetID) const;
54
55   void populateDeviceTypes(
56     PIRKeysetWidgetItem *kwi,
57     unsigned int keysetID) const;
58
59   void populateKeyset(
60     QObject *guiObject,
61     unsigned int keysetID);
62
63 private:
64   void setupKeyset(
65     PIRKeysetMetaData *keyset);
66
67   PIRKeysetCollection keysetsInfo;
68   PIRKeysetMakeIndex makeIndex;
69
70   // The counter will be used to generate unique ids for each keyset:
71   unsigned int counter;
72
73   QThread commandThread;
74 };
75
76 #endif // PIRKEYSETMANAGER_H