New GUI, many changes
[pierogi] / keysets / panasonic.cpp
index d77f9bc..47f9de6 100644 (file)
@@ -4,13 +4,24 @@
 
 
 PanasonicCarAudio::PanasonicCarAudio(
-  QObject *guiObject,
   unsigned int index)
   : PIRKeysetMetaData(
       "Car Audio Keyset",
       Panasonic_Make,
       index)
 {
+}
+
+
+void PanasonicCarAudio::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // If the pointer is not null, the keyset must already be populated.
+    return;
+  }
+
   threadableProtocol = new NECProtocol(guiObject, index, true, false);
 
 //  setPreData(0x8156, 16);
@@ -28,13 +39,24 @@ PanasonicCarAudio::PanasonicCarAudio(
 
 
 PanasonicSat1::PanasonicSat1(
-  QObject *guiObject,
   unsigned int index)
   : PIRKeysetMetaData(
       "Satellite Keyset 1",
       Panasonic_Make,
       index)
 {
+}
+
+
+void PanasonicSat1::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // If the pointer is not null, the keyset must already be populated.
+    return;
+  }
+
   threadableProtocol = new KaseikyoProtocol(guiObject, index);
 
 //  setPreData(0x40040140, 32);
@@ -81,11 +103,23 @@ PanasonicSat1::PanasonicSat1(
 
 
 PanasonicSat1a::PanasonicSat1a(
-  QObject *guiObject,
   unsigned int index)
-  : PanasonicSat1(guiObject, index)
+  : PanasonicSat1(index)
 {
   setKeysetName("Satellite Keyset 1a");
+}
+
+
+void PanasonicSat1a::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // If the pointer is not null, the keyset must already be populated.
+    return;
+  }
+
+  PanasonicSat1::populateProtocol(guiObject);
 
   addKaseikyoKey("EXIT", Exit_Key, 0x028, 0xCF);
   addKaseikyoKey("CH+", ChannelUp_Key, 0x028, 0xB2);
@@ -94,13 +128,24 @@ PanasonicSat1a::PanasonicSat1a(
 
 
 PanasonicTV1::PanasonicTV1(
-  QObject *guiObject,
   unsigned int index)
   : PIRKeysetMetaData(
       "TV Keyset 1",
       Panasonic_Make,
       index)
 {
+}
+
+
+void PanasonicTV1::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // If the pointer is not null, the keyset must already be populated.
+    return;
+  }
+
   threadableProtocol = new KaseikyoProtocol(guiObject, index);
 
 //  setPreData(0x400401, 24);
@@ -213,11 +258,24 @@ PanasonicTV1::PanasonicTV1(
 
 
 PanasonicTV1a::PanasonicTV1a(
-  QObject *guiObject,
   unsigned int index)
-  : PanasonicTV1(guiObject, index)
+  : PanasonicTV1(index)
 {
   setKeysetName("TV Keyset 1a");
+}
+
+
+void PanasonicTV1a::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // If the pointer is not null, the keyset must already be populated.
+    return;
+  }
+
+  PanasonicTV1::populateProtocol(guiObject);
+
   // Overwrite some of the keys:
   addKaseikyoKey("OK", Select_Key, 0x008, 0x49);
   addKaseikyoKey("MENU", Menu_Key, 0x008, 0x06);
@@ -225,14 +283,28 @@ PanasonicTV1a::PanasonicTV1a(
 
 
 PanasonicTV1b::PanasonicTV1b(
-  QObject *guiObject,
   unsigned int index)
-  : PanasonicTV1(guiObject, index)
+  : PanasonicTV1(index)
 {
   setKeysetName("TV Keyset 1b");
 
   addControlledDevice(Panasonic_Make, "Viera TX-32LZD80", TV_Device);
   addControlledDevice(Panasonic_Make, "Viera 42PZ700U", TV_Device);
+  addControlledDevice(Panasonic_Make, "Viera 42PZ8ES", TV_Device);
+  addControlledDevice(Panasonic_Make, "Quintrix TX-25MK1C", TV_Device);
+}
+
+
+void PanasonicTV1b::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // If the pointer is not null, the keyset must already be populated.
+    return;
+  }
+
+  PanasonicTV1::populateProtocol(guiObject);
 
   addKaseikyoKey("Info", Info_Key, 0x008, 0x39); // "OSD"
   addKaseikyoKey("OK", Select_Key, 0x008, 0x49);
@@ -245,13 +317,24 @@ PanasonicTV1b::PanasonicTV1b(
 
 
 PanasonicVCR1::PanasonicVCR1(
-  QObject *guiObject,
   unsigned int index)
   : PIRKeysetMetaData(
       "VCR Keyset 1",
       Panasonic_Make,
       index)
 {
+}
+
+
+void PanasonicVCR1::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // If the pointer is not null, the keyset must already be populated.
+    return;
+  }
+
   threadableProtocol = new KaseikyoProtocol(guiObject, index);
 
 //  setPreData(0x400409, 24);
@@ -349,11 +432,23 @@ PanasonicVCR1::PanasonicVCR1(
 
 
 PanasonicVCR1a::PanasonicVCR1a(
-  QObject *guiObject,
   unsigned int index)
-  : PanasonicVCR1(guiObject, index)
+  : PanasonicVCR1(index)
 {
   setKeysetName("VCR Keyset 1a");
+}
+
+
+void PanasonicVCR1a::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // If the pointer is not null, the keyset must already be populated.
+    return;
+  }
+
+  PanasonicVCR1::populateProtocol(guiObject);
 
   addKaseikyoKey("OSD", Info_Key, 0x009, 0x57);
   addKaseikyoKey("AV", Input_Key, 0x009, 0xC0);
@@ -362,11 +457,23 @@ PanasonicVCR1a::PanasonicVCR1a(
 
 
 PanasonicVCR1b::PanasonicVCR1b(
-  QObject *guiObject,
   unsigned int index)
-  : PanasonicVCR1(guiObject, index)
+  : PanasonicVCR1(index)
 {
   setKeysetName("VCR Keyset 1b");
+}
+
+
+void PanasonicVCR1b::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // If the pointer is not null, the keyset must already be populated.
+    return;
+  }
+
+  PanasonicVCR1::populateProtocol(guiObject);
 
   addKaseikyoKey("repeat", Repeat_Key, 0x009, 0xF9);
   addKaseikyoKey("prog", Program_Key, 0x009, 0xFF);
@@ -375,11 +482,23 @@ PanasonicVCR1b::PanasonicVCR1b(
 
 
 PanasonicVCR1c::PanasonicVCR1c(
-  QObject *guiObject,
   unsigned int index)
-  : PanasonicVCR1(guiObject, index)
+  : PanasonicVCR1(index)
 {
   setKeysetName("VCR Keyset 1c");
+}
+
+
+void PanasonicVCR1c::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // If the pointer is not null, the keyset must already be populated.
+    return;
+  }
+
+  PanasonicVCR1::populateProtocol(guiObject);
 
   addKaseikyoKey("rotate", Up_Key, 0x019, 0x02);
   addKaseikyoKey("rotatedown", Down_Key, 0x019, 0x03);
@@ -389,13 +508,24 @@ PanasonicVCR1c::PanasonicVCR1c(
 
 
 PanasonicDVD1::PanasonicDVD1(
-  QObject *guiObject,
   unsigned int index)
   : PIRKeysetMetaData(
       "DVD Keyset 1",
       Panasonic_Make,
       index)
 {
+}
+
+
+void PanasonicDVD1::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // If the pointer is not null, the keyset must already be populated.
+    return;
+  }
+
   threadableProtocol = new KaseikyoProtocol(guiObject, index);
 
 //  setPreData(0x40040D00, 32);
@@ -478,11 +608,23 @@ PanasonicDVD1::PanasonicDVD1(
 
 
 PanasonicDVD1a::PanasonicDVD1a(
-  QObject *guiObject,
   unsigned int index)
-  : PanasonicDVD1(guiObject, index)
+  : PanasonicDVD1(index)
 {
   setKeysetName("DVD Keyset 1a");
+}
+
+
+void PanasonicDVD1a::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // If the pointer is not null, the keyset must already be populated.
+    return;
+  }
+
+  PanasonicDVD1::populateProtocol(guiObject);
 
   addKaseikyoKey("channel2up", ChannelUp_Key, 0x00B, 0x34);
   addKaseikyoKey("channel2down", ChannelDown_Key, 0x00B, 0x35);
@@ -491,7 +633,6 @@ PanasonicDVD1a::PanasonicDVD1a(
 
 
 PanasonicAudio1::PanasonicAudio1(
-  QObject *guiObject,
   unsigned int index)
   : PIRKeysetMetaData(
       "Audio Keyset 1",
@@ -500,6 +641,17 @@ PanasonicAudio1::PanasonicAudio1(
 {
   addControlledDevice(Panasonic_Make, "RX-DS25", Audio_Device);
   addControlledDevice(Panasonic_Make, "RX-e300", Audio_Device);
+}
+
+
+void PanasonicAudio1::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // If the pointer is not null, the keyset must already be populated.
+    return;
+  }
 
   threadableProtocol = new KaseikyoProtocol(guiObject, index);
 
@@ -570,3 +722,136 @@ PanasonicAudio1::PanasonicAudio1(
   addKaseikyoKey("panelclose", Unmapped_Key, 0xC2A, 0xF5); // "TOP_PANEL_CLOSE"
 }
 
+
+PanasonicAudio2::PanasonicAudio2(
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "Audio Keyset 2",
+      Panasonic_Make,
+      index)
+{
+}
+
+
+void PanasonicAudio2::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // Keyset already populated.
+    return;
+  }
+
+  threadableProtocol = new KaseikyoProtocol(guiObject, index);
+
+  setPreData(0x2002, 16);
+
+  addKaseikyoKey("Volume_Up", VolumeUp_Key, 0x00A, 0x20);
+  addKaseikyoKey("Volume_Down", VolumeDown_Key, 0x00A, 0x21);
+  addKaseikyoKey("Mute", Mute_Key, 0x00A, 0x32);
+  addKaseikyoKey("INPUT:AUX", AuxInput_Key, 0x00A, 0x9A);
+  addKaseikyoKey("Super_Woofer", Unmapped_Key, 0x00A, 0xC2);
+
+  addKaseikyoKey("tuner", TunerInput_Key, 0x04A, 0xA4);
+
+  addKaseikyoKey("tape", TapeInput_Key, 0x08A, 0x96);
+  addKaseikyoKey("INPUT: TAPE Play", Unmapped_Key, 0x08A, 0x9E);
+
+  addKaseikyoKey("repeat", Repeat_Key, 0x0AA, 0x47);
+  addKaseikyoKey("random", Random_Key, 0x0AA, 0x4D);
+  addKaseikyoKey("program", Program_Key, 0x0AA, 0x8A);
+  addKaseikyoKey("cd", CDInput_Key, 0x00A, 0x94);
+  addKaseikyoKey("aux", AuxInput_Key, 0x00A, 0x9A);
+  addKaseikyoKey("cancel", Clear_Key, 0x0AA, 0xA3);
+  addKaseikyoKey("Disc", NextDisc_Key, 0x0AA, 0xA4);
+
+  addKaseikyoKey("Eq", Unmapped_Key, 0x10A, 0x83); // "Preset EQ"
+
+  addKaseikyoKey("S.Sound EQ", Unmapped_Key, 0x12A, 0xC5);
+
+  addKaseikyoKey("Stop", Stop_Key, 0x1CA, 0x00);
+  addKaseikyoKey("Play_Reverse", Unmapped_Key, 0x1CA, 0x06);
+  addKaseikyoKey("Play/Pause", Play_Key, 0x1CA, 0x0A);
+  addKaseikyoKey("Play/Pause", Pause_Key, 0x1CA, 0x0A);
+  addKaseikyoKey("1", One_Key, 0x1CA, 0x10);
+  addKaseikyoKey("2", Two_Key, 0x1CA, 0x11);
+  addKaseikyoKey("3", Three_Key, 0x1CA, 0x12);
+  addKaseikyoKey("4", Four_Key, 0x1CA, 0x13);
+  addKaseikyoKey("5", Five_Key, 0x1CA, 0x14);
+  addKaseikyoKey("6", Six_Key, 0x1CA, 0x15);
+  addKaseikyoKey("7", Seven_Key, 0x1CA, 0x16);
+  addKaseikyoKey("8", Eight_Key, 0x1CA, 0x17);
+  addKaseikyoKey("9", Nine_Key, 0x1CA, 0x18);
+  addKaseikyoKey("0", Zero_Key, 0x1CA, 0x19);
+  addKaseikyoKey("Power", Power_Key, 0x1CA, 0x3D);
+  addKaseikyoKey("discrete on", PowerOn_Key, 0x1CA, 0x3E);
+  addKaseikyoKey("discrete off", PowerOff_Key, 0x1CA, 0x3F);
+  addKaseikyoKey("Back", Previous_Key, 0x1CA, 0x49);
+  addKaseikyoKey("Forward", Next_Key, 0x1CA, 0x4A);
+  addKaseikyoKey("Display", Info_Key, 0x1CA, 0x55);
+  addKaseikyoKey(">10", DoubleDigit_Key, 0x1CA, 0x84);
+  addKaseikyoKey("clock/timer", Timer_Key, 0x1CA, 0x95);
+  addKaseikyoKey("Sleep", Sleep_Key, 0x1CA, 0x96);
+  addKaseikyoKey("Dimmer", Unmapped_Key, 0x1CA, 0x97);
+  addKaseikyoKey("play/record timer", Unmapped_Key, 0x1CA, 0x9B);
+  addKaseikyoKey("play mode", Mode_Key, 0x1CA, 0xBB);
+}
+
+
+PanasonicAudio2a::PanasonicAudio2a(
+  unsigned int index)
+  : PanasonicAudio2(index)
+{
+  setKeysetName("Audio Keyset 2a");
+}
+
+
+void PanasonicAudio2a::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // Keyset already populated.
+    return;
+  }
+
+  PanasonicAudio2::populateProtocol(guiObject);
+
+  addKaseikyoKey("INPUT: CD play/pause", CDInput_Key, 0x0AA, 0x0A);
+  addKaseikyoKey("INPUT: CD play/pause", Play_Key, 0x0AA, 0x0A);
+  addKaseikyoKey("INPUT: CD play/pause", Pause_Key, 0x0AA, 0x0A);
+}
+
+
+PanasonicAC1::PanasonicAC1(
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "Air Conditioner 1",
+      Panasonic_Make,
+      index)
+{
+}
+
+
+void PanasonicAC1::populateProtocol(
+  QObject *guiObject)
+{
+  if (threadableProtocol)
+  {
+    // If the pointer is not null, the keyset must already be populated.
+    return;
+  }
+
+  threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+  setPreData(0x6681, 16);
+
+  addKey("Operation", Power_Key, 0x81, 8);
+  addKey("Air Swing", Oscillate_Key, 0x83, 8);
+  addKey("Temp Up", TempUp_Key, 0x85, 8);
+  addKey("Temp Down", TempDown_Key, 0x8A, 8);
+  addKey("Economy", EnergySave_Key, 0x8D, 8);
+  addKey("Timer", Timer_Key, 0x90, 8);
+  addKey("Fan Speed", FanFaster_Key, 0x99, 8);
+  addKey("Mode", Mode_Key, 0x9B, 8);
+}