#ifndef PIRKEYSETMANAGER_H
#define PIRKEYSETMANAGER_H
-#include "pirkeysetmetadata.h"
-//#include "protocol.h"
#include "pirkeynames.h"
-//#include "selectionwindow.h"
-#include "pirselectkeysetform.h"
-#include "pirkeysetwidgetitem.h"
+#include "pirmakenames.h"
-//#include <QtCore/QCoreApplication>
+#include <QString>
#include <QThread>
-//#include <QStringList>
+
+class QObject;
+class PIRSelectKeysetForm;
+class PIRKeysetWidgetItem;
#include <map>
+class PIRKeysetMetaData;
+
+typedef std::map<unsigned int, PIRKeysetMetaData *> PIRKeysetCollection;
-typedef std::map<int, PIRKeysetMetaData *> PIRKeysetCollection;
+// Maps used to locate metadata using QSettings values:
+typedef std::map<QString, unsigned int> PIRKeysetNameIndex;
+typedef std::map<QString, PIRKeysetNameIndex> PIRKeysetMakeIndex;
class PIRKeysetManager
{
public:
- PIRKeysetManager(
- QObject *guiObject);
+ PIRKeysetManager();
~PIRKeysetManager();
void populateGuiWidget(
- PIRSelectKeysetForm *widget);
+ PIRSelectKeysetForm *widget) const;
+
+ bool keysetExists(
+ unsigned int keysetID) const;
+
+ bool findKeysetID(
+ QString make,
+ QString name,
+ unsigned int &id) const;
+
+ PIRKeysetWidgetItem *makeKeysetItem(
+ QString make,
+ QString name) const;
bool hasKey(
- int keysetID,
- PIRKeyName name);
+ unsigned int keysetID,
+ PIRKeyName name) const;
PIRMakeName getMake(
- int keysetID);
+ unsigned int keysetID) const;
QString getDisplayName(
- int keysetID);
+ unsigned int keysetID) const;
void populateDeviceTypes(
PIRKeysetWidgetItem *kwi,
- int keysetID);
+ unsigned int keysetID) const;
-private:
- // This needs to be improved:
void populateKeyset(
+ QObject *guiObject,
+ unsigned int keysetID);
+
+private:
+ void setupKeyset(
PIRKeysetMetaData *keyset);
PIRKeysetCollection keysetsInfo;
+ PIRKeysetMakeIndex makeIndex;
// The counter will be used to generate unique ids for each keyset:
unsigned int counter;