4cc5f42fae065048a34f5912444b90c345842f25
[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 populateSelectionWidgets(
32     PIRSelectKeysetForm *skf,
33     PIRSelectDeviceForm *sdf) const;
34
35   bool keysetExists(
36     unsigned int keysetID) const;
37
38   bool findKeysetID(
39     QString make,
40     QString name,
41     unsigned int &id) const;
42
43   PIRKeysetWidgetItem *makeKeysetItem(
44     QString make,
45     QString name) const;
46
47   bool hasKey(
48     unsigned int keysetID,
49     PIRKeyName name) const;
50
51   PIRMakeName getMake(
52     unsigned int keysetID) const;
53
54   QString getDisplayName(
55     unsigned int keysetID) const;
56
57 /*
58   void populateDeviceTypes(
59     PIRKeysetWidgetItem *kwi,
60     unsigned int keysetID) const;
61 */
62
63   void populateKeyset(
64     QObject *guiObject,
65     unsigned int keysetID);
66
67 private:
68   void setupKeyset(
69     PIRKeysetMetaData *keyset);
70
71   PIRKeysetCollection keysetsInfo;
72   PIRKeysetMakeIndex makeIndex;
73
74   // The counter will be used to generate unique ids for each keyset:
75   unsigned int counter;
76
77   QThread commandThread;
78 };
79
80 #endif // PIRKEYSETMANAGER_H