85b99fffe3ce7b9b0184d7fada5a0698491a126c
[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     QObject *guiObject);
28
29   ~PIRKeysetManager();
30
31   void populateGuiWidget(
32     PIRSelectKeysetForm *widget) 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   void populateDeviceTypes(
57     PIRKeysetWidgetItem *kwi,
58     unsigned int keysetID) const;
59
60 private:
61   // This needs to be improved:
62   void populateKeyset(
63     PIRKeysetMetaData *keyset);
64
65   PIRKeysetCollection keysetsInfo;
66   PIRKeysetMakeIndex makeIndex;
67
68   // The counter will be used to generate unique ids for each keyset:
69   unsigned int counter;
70
71   QThread commandThread;
72 };
73
74 #endif // PIRKEYSETMANAGER_H