c961b005210a1e73db0bd674d80d1e11facadd90
[pierogi] / pirkeysetmetadata.h
1 #ifndef PIRKEYSETMETADATA_H
2 #define PIRKEYSETMETADATA_H
3
4 #include "pirkeynames.h"
5 #include "pirmakenames.h"
6 #include "pirdevicetypenames.h"
7
8 #include <map>
9 #include <list>
10
11 class QThread;
12 class QObject;
13
14 class PIRKeysetWidgetItem;
15 class PIRProtocol;
16
17 typedef std::map<PIRKeyName, const char *> KeyCollection;
18
19 class DeviceInfo
20 {
21 public:
22   DeviceInfo(
23     PIRMakeName ma,
24     const char *mo,
25     PIRDeviceTypeName t)
26   : make(ma),
27     model(mo),
28     type(t)
29   {}
30
31   PIRMakeName make;
32   const char *model;
33   PIRDeviceTypeName type;
34 };
35
36 typedef std::list<DeviceInfo> DeviceCollection;
37
38 class PIRKeysetMetaData
39 {
40 public:
41   PIRKeysetMetaData(
42     const char *keysetName,
43     PIRMakeName make,
44     unsigned int index);
45
46   bool hasKey(
47     PIRKeyName name) const;
48
49   unsigned int getID() const;
50
51   PIRMakeName getMake() const;
52
53   const char *getKeysetName() const;
54
55   virtual void populateProtocol(
56     QObject *guiObject) = 0;
57
58   void moveToThread(
59     QThread *thread);
60
61   void populateDeviceTypes(
62     PIRKeysetWidgetItem *kwi) const;
63
64 protected:
65   void addControlledDevice(
66     PIRMakeName make,
67     const char *model,
68     PIRDeviceTypeName type);
69
70   void addDeviceType(
71     PIRDeviceTypeName n);
72
73   void addKey(
74     const char *name,
75     PIRKeyName key,
76     unsigned long data,
77     unsigned int size);
78
79   // Special helper methods for SIRC keys:
80   void addSIRC12Key(
81     const char *name,
82     PIRKeyName key,
83     unsigned int addressData,
84     unsigned int commandData);
85
86   void addSIRC15Key(
87     const char *name,
88     PIRKeyName key,
89     unsigned int addressData,
90     unsigned int commandData);
91
92   void addSIRC20Key(
93     const char *name,
94     PIRKeyName key,
95     unsigned int secondaryAddressData,
96     unsigned int primaryAddressData,
97     unsigned int commandData);
98
99   // Helper method for Sharp keys:
100   void addSharpKey(
101     const char *name,
102     PIRKeyName key,
103     unsigned int addressData,
104     unsigned int commandData);
105
106   void addNECKey(
107     const char *name,
108     PIRKeyName key,
109     unsigned int addressData,
110     unsigned int commandData);
111
112   void addPioneerKey(
113     const char *name,
114     PIRKeyName key,
115     unsigned int addressOne,
116     unsigned int commandOne,
117     unsigned int addressTwo,
118     unsigned int commandTwo);
119
120 /*
121   void addRCAKey(
122     const char *name,
123     PIRKeyName key,
124     unsigned int addressData,
125     unsigned int commandData);
126 */
127
128   void addKaseikyoKey(
129     const char *name,
130     PIRKeyName key,
131     unsigned int addressData,
132     unsigned int commandData);
133
134   void addDishKey(
135     const char *name,
136     PIRKeyName key,
137     unsigned int firstCommand,
138     unsigned int secondCommand);
139
140   void setPreData(
141     unsigned long data,
142     unsigned int bits);
143
144   void setPostData(
145     unsigned long data,
146     unsigned int bits);
147
148   void setKeysetName(
149     const char *name);
150
151   KeyCollection keys;
152
153   DeviceCollection controlledDevices;
154
155   PIRProtocol *threadableProtocol;
156   unsigned int index;
157
158 private:
159   const char *keysetName;
160   PIRMakeName make;
161   PIRDeviceTypeCollection deviceTypes;
162 };
163
164
165 #endif // PIRKEYSETMETADATA_H