Advanced Settings Panel
[pierogi] / pirkeysetmetadata.cpp
index f7076a6..ce7cf00 100644 (file)
@@ -5,9 +5,14 @@
 
 #include <iostream>
 
-// Global helper objects:
+// Global helper object:
 extern PIRMakeMgr makeManager;
-//extern PIRDeviceTypeMgr deviceManager;
+
+// Static member definition:
+PIRDeviceCollection PIRKeysetMetaData::controlledDevices;
+
+// Thread synchronization stuff:
+extern bool commandInFlight;
 
 PIRKeysetMetaData::PIRKeysetMetaData(
   const char *r,
@@ -20,6 +25,13 @@ PIRKeysetMetaData::PIRKeysetMetaData(
 {
 }
 
+
+PIRKeysetMetaData::~PIRKeysetMetaData()
+{
+  clearProtocol();
+}
+
+
 bool PIRKeysetMetaData::hasKey(
   PIRKeyName name) const
 {
@@ -39,8 +51,7 @@ void PIRKeysetMetaData::moveToThread(
 
 
 void PIRKeysetMetaData::populateDevices(
-  unsigned int id,
-  PIRSelectDeviceForm *sdf) const
+  PIRSelectDeviceForm *sdf)
 {
   PIRKeysetWidgetItem *kwi;
 
@@ -49,10 +60,13 @@ void PIRKeysetMetaData::populateDevices(
   while (i != controlledDevices.end())
   {
     // Create a widget for the keyset:
-    QString tempString = makeManager.getMakeString(i->make);
+    QString tempString = makeManager.getMakeString(i->first.make);
     tempString.append(" ");
-    tempString.append(i->model);
-    kwi = new PIRKeysetWidgetItem(tempString, id, i->make, i->type);
+    tempString.append(i->first.model);
+
+    kwi = new PIRKeysetWidgetItem(
+      tempString, i->first.model, i->second, i->first.make, i->first.type);
+
     sdf->addWidgetItem(kwi);
 
     ++i;
@@ -77,14 +91,61 @@ const char *PIRKeysetMetaData::getKeysetName() const
 }
 
 
+unsigned int PIRKeysetMetaData::getCarrierFrequency() const
+{
+  if (!threadableProtocol)
+  {
+    return 0;
+  }
+
+  return threadableProtocol->getCarrierFrequency();
+}
+
+
+void PIRKeysetMetaData::setCarrierFrequency(
+  unsigned int carrierFrequency)
+{
+  if (!threadableProtocol)
+  {
+    return;
+  }
+
+  threadableProtocol->setCarrierFrequency(carrierFrequency);
+}
+
+
+unsigned int PIRKeysetMetaData::getDutyCycle() const
+{
+  if (!threadableProtocol)
+  {
+    return 0;
+  }
+
+  return threadableProtocol->getDutyCycle();
+}
+
+
+void PIRKeysetMetaData::setDutyCycle(
+  unsigned int dutyCycle)
+{
+  if (!threadableProtocol)
+  {
+    return;
+  }
+
+  threadableProtocol->setDutyCycle(dutyCycle);
+}
+
+
 void PIRKeysetMetaData::addControlledDevice(
   PIRMakeName make,
   const char *model,
   PIRDeviceTypeName type)
 {
-  controlledDevices.push_back(DeviceInfo(make, model, type));
-
-  deviceTypes.insert(type);
+  controlledDevices.insert(
+    PIRDCPair(
+      DeviceInfo(make, model, type),
+      index));
 }
 
 
@@ -176,6 +237,20 @@ void PIRKeysetMetaData::addNECKey(
 }
 
 
+void PIRKeysetMetaData::addPanOldKey(
+  const char *name,
+  PIRKeyName key,
+  unsigned int addressData,
+  unsigned int commandData)
+{
+  if (key != Unmapped_Key)
+  {
+    keys[key] = name;
+    threadableProtocol->addPanOldKey(key, addressData, commandData);
+  }
+}
+
+
 void PIRKeysetMetaData::addPioneerKey(
   const char *name,
   PIRKeyName key,
@@ -238,6 +313,20 @@ void PIRKeysetMetaData::addDishKey(
 }
 
 
+void PIRKeysetMetaData::addXMPKey(
+  const char *name,
+  PIRKeyName key,
+  unsigned int firstCommand,
+  unsigned int secondCommand)
+{
+  if (key != Unmapped_Key)
+  {
+    keys[key] = name;
+    threadableProtocol->addXMPKey(key, firstCommand, secondCommand);
+  }
+}
+
+
 void PIRKeysetMetaData::setPreData(
   unsigned long data,
   unsigned int bits)
@@ -259,3 +348,20 @@ void PIRKeysetMetaData::setKeysetName(
 {
   keysetName = n;
 }
+
+
+bool PIRKeysetMetaData::clearProtocol()
+{
+  if (!threadableProtocol)
+  {
+    return true;
+  }
+  else if (!commandInFlight)
+  {
+    delete threadableProtocol;
+    threadableProtocol = 0;
+    return true;
+  }
+
+  return false;
+}