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