Interim Update
[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 PIRSelectDeviceForm;
13 class PIRKeysetWidgetItem;
14
15 #include <map>
16 class PIRKeysetMetaData;
17
18 typedef std::map<unsigned int, PIRKeysetMetaData *> PIRKeysetCollection;
19
20 // Maps used to locate metadata using QSettings values:
21 typedef std::map<QString, unsigned int> PIRKeysetNameIndex;
22 typedef std::map<QString, PIRKeysetNameIndex> PIRKeysetMakeIndex;
23
24 class PIRKeysetManager
25 {
26 public:
27   PIRKeysetManager();
28
29   ~PIRKeysetManager();
30
31   void populateSelectionWidget(
32     PIRSelectKeysetForm *skf) const;
33
34   bool keysetExists(
35     unsigned int keysetID) const;
36
37   bool findKeysetID(
38     QString make,
39     QString name,
40     unsigned int &id) const;
41
42   PIRKeysetWidgetItem *makeKeysetItem(
43     QString make,
44     QString name) const;
45
46   bool hasKey(
47     unsigned int keysetID,
48     PIRKeyName name) const;
49
50   PIRMakeName getMake(
51     unsigned int keysetID) const;
52
53   QString getDisplayName(
54     unsigned int keysetID) const;
55
56 /*
57   void populateDeviceTypes(
58     PIRKeysetWidgetItem *kwi,
59     unsigned int keysetID) const;
60 */
61
62   void populateKeyset(
63     QObject *guiObject,
64     unsigned int keysetID);
65
66 private:
67   void setupKeyset(
68     PIRKeysetMetaData *keyset);
69
70   PIRKeysetCollection keysetsInfo;
71   PIRKeysetMakeIndex makeIndex;
72
73   // The counter will be used to generate unique ids for each keyset:
74   unsigned int counter;
75
76   QThread commandThread;
77 };
78
79 #endif // PIRKEYSETMANAGER_H