<file>doc/about.html</file>
<file>doc/documentation.html</file>
<file>icons/PierogiIcon.png</file>
+ <file>icons/red_pause.png</file>
</qresource>
</RCC>
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
- <property name="leftMargin">
- <number>8</number>
- </property>
- <property name="topMargin">
+ <property name="margin">
<number>0</number>
</property>
- <property name="rightMargin">
- <number>8</number>
- </property>
- <property name="bottomMargin">
- <number>8</number>
- </property>
<item row="0" column="0">
<widget class="QPushButton" name="bassUpButton">
<property name="sizePolicy">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
- <property name="leftMargin">
- <number>8</number>
- </property>
- <property name="topMargin">
+ <property name="margin">
<number>0</number>
</property>
- <property name="rightMargin">
- <number>8</number>
- </property>
- <property name="bottomMargin">
- <number>8</number>
- </property>
<item row="0" column="0">
<widget class="QPushButton" name="oscillateButton">
<property name="sizePolicy">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
- <property name="leftMargin">
- <number>8</number>
- </property>
- <property name="topMargin">
+ <property name="margin">
<number>0</number>
</property>
- <property name="rightMargin">
- <number>8</number>
- </property>
- <property name="bottomMargin">
- <number>8</number>
- </property>
<item row="0" column="0">
<widget class="QPushButton" name="addKeysetButton">
<property name="text">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
- <property name="leftMargin">
- <number>8</number>
- </property>
- <property name="topMargin">
+ <property name="margin">
<number>0</number>
</property>
- <property name="rightMargin">
- <number>8</number>
- </property>
- <property name="bottomMargin">
- <number>8</number>
- </property>
<item row="0" column="0">
<widget class="QPushButton" name="cdInputButton">
<property name="sizePolicy">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
- <property name="leftMargin">
- <number>8</number>
- </property>
- <property name="topMargin">
+ <property name="margin">
<number>0</number>
</property>
- <property name="rightMargin">
- <number>8</number>
- </property>
- <property name="bottomMargin">
- <number>8</number>
- </property>
<item row="0" column="0">
<widget class="QPushButton" name="oneButton">
<property name="sizePolicy">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
- <property name="leftMargin">
- <number>8</number>
- </property>
- <property name="topMargin">
+ <property name="margin">
<number>0</number>
</property>
- <property name="rightMargin">
- <number>8</number>
- </property>
- <property name="bottomMargin">
- <number>8</number>
- </property>
<item row="0" column="0">
<widget class="QPushButton" name="mainChannelUpButton">
<property name="sizePolicy">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
- <property name="leftMargin">
- <number>8</number>
- </property>
- <property name="topMargin">
+ <property name="margin">
<number>0</number>
</property>
- <property name="rightMargin">
- <number>8</number>
- </property>
- <property name="bottomMargin">
- <number>8</number>
- </property>
<item row="0" column="0">
<widget class="QPushButton" name="tunerBandButton">
<property name="sizePolicy">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
- <property name="leftMargin">
- <number>8</number>
- </property>
- <property name="topMargin">
+ <property name="margin">
<number>0</number>
</property>
- <property name="rightMargin">
- <number>8</number>
- </property>
- <property name="bottomMargin">
- <number>8</number>
- </property>
<item row="0" column="0">
<widget class="QPushButton" name="mediaPreviousButton">
<property name="sizePolicy">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
- <property name="leftMargin">
- <number>8</number>
- </property>
- <property name="topMargin">
+ <property name="margin">
<number>0</number>
</property>
- <property name="rightMargin">
- <number>8</number>
- </property>
- <property name="bottomMargin">
- <number>8</number>
- </property>
<item row="0" column="0">
<widget class="QPushButton" name="guideButton">
<property name="sizePolicy">
--- /dev/null
+#include "pirrecordform.h"
+#include "ui_pirrecordform.h"
+
+#include "mainwindow.h"
+#include "pirkeysetmanager.h"
+
+PIRRecordForm::PIRRecordForm(
+ MainWindow *mw)
+ : QWidget(0),
+ ui(new Ui::PIRRecordForm),
+ mainWindow(mw)
+{
+ ui->setupUi(this);
+}
+
+PIRRecordForm::~PIRRecordForm()
+{
+ delete ui;
+}
+
+void PIRRecordForm::enableButtons(
+ const PIRKeysetManager *keyset,
+ unsigned int id)
+{
+ emit timerEnabled(keyset->hasKey(id, Timer_Key));
+ emit programEnabled(keyset->hasKey(id, Program_Key));
+ emit memoryEnabled(keyset->hasKey(id, Memory_Key));
+ emit callEnabled(keyset->hasKey(id, Call_Key));
+ emit favoritesEnabled(keyset->hasKey(id, Favorites_Key));
+ emit scanEnabled(keyset->hasKey(id, Scan_Key));
+ emit prevPresetEnabled(keyset->hasKey(id, PrevPreset_Key));
+ emit nextPresetEnabled(keyset->hasKey(id, NextPreset_Key));
+ emit recordEnabled(keyset->hasKey(id, Record_Key));
+ emit recordPauseEnabled(keyset->hasKey(id, RecordPause_Key));
+ emit recordStopEnabled(keyset->hasKey(id, RecordStop_Key));
+ emit recordMuteEnabled(keyset->hasKey(id, RecordMute_Key));
+}
+
+void PIRRecordForm::on_timerButton_pressed()
+{
+ mainWindow->startRepeating(Timer_Key);
+}
+
+void PIRRecordForm::on_timerButton_released()
+{
+ mainWindow->stopRepeating();
+}
+
+void PIRRecordForm::on_programButton_pressed()
+{
+ mainWindow->startRepeating(Program_Key);
+}
+
+void PIRRecordForm::on_programButton_released()
+{
+ mainWindow->stopRepeating();
+}
+
+void PIRRecordForm::on_memoryButton_pressed()
+{
+ mainWindow->startRepeating(Memory_Key);
+}
+
+void PIRRecordForm::on_memoryButton_released()
+{
+ mainWindow->stopRepeating();
+}
+
+void PIRRecordForm::on_callButton_pressed()
+{
+ mainWindow->startRepeating(Call_Key);
+}
+
+void PIRRecordForm::on_callButton_released()
+{
+ mainWindow->stopRepeating();
+}
+
+void PIRRecordForm::on_favoritesButton_pressed()
+{
+ mainWindow->startRepeating(Favorites_Key);
+}
+
+void PIRRecordForm::on_favoritesButton_released()
+{
+ mainWindow->stopRepeating();
+}
+
+void PIRRecordForm::on_scanButton_pressed()
+{
+ mainWindow->startRepeating(Scan_Key);
+}
+
+void PIRRecordForm::on_scanButton_released()
+{
+ mainWindow->stopRepeating();
+}
+
+void PIRRecordForm::on_prevPresetButton_pressed()
+{
+ mainWindow->startRepeating(PrevPreset_Key);
+}
+
+void PIRRecordForm::on_prevPresetButton_released()
+{
+ mainWindow->stopRepeating();
+}
+
+void PIRRecordForm::on_nextPresetButton_pressed()
+{
+ mainWindow->startRepeating(NextPreset_Key);
+}
+
+void PIRRecordForm::on_nextPresetButton_released()
+{
+ mainWindow->stopRepeating();
+}
+
+void PIRRecordForm::on_recordButton_pressed()
+{
+ mainWindow->startRepeating(Record_Key);
+}
+
+void PIRRecordForm::on_recordButton_released()
+{
+ mainWindow->stopRepeating();
+}
+
+void PIRRecordForm::on_recordPauseButton_pressed()
+{
+ mainWindow->startRepeating(RecordPause_Key);
+}
+
+void PIRRecordForm::on_recordPauseButton_released()
+{
+ mainWindow->stopRepeating();
+}
+
+void PIRRecordForm::on_recordStopButton_pressed()
+{
+ mainWindow->startRepeating(RecordStop_Key);
+}
+
+void PIRRecordForm::on_recordStopButton_released()
+{
+ mainWindow->stopRepeating();
+}
+
+void PIRRecordForm::on_recordMuteButton_pressed()
+{
+ mainWindow->startRepeating(RecordMute_Key);
+}
+
+void PIRRecordForm::on_recordMuteButton_released()
+{
+ mainWindow->stopRepeating();
+}
--- /dev/null
+#ifndef PIRRECORDFORM_H
+#define PIRRECORDFORM_H
+
+#include <QWidget>
+
+class MainWindow;
+class PIRKeysetManager;
+
+namespace Ui {
+class PIRRecordForm;
+}
+
+class PIRRecordForm : public QWidget
+{
+ Q_OBJECT
+
+public:
+ PIRRecordForm(
+ MainWindow *mw);
+
+ ~PIRRecordForm();
+
+ void enableButtons(
+ const PIRKeysetManager *keyset,
+ unsigned int id);
+
+signals:
+ void timerEnabled(bool);
+ void programEnabled(bool);
+ void memoryEnabled(bool);
+ void callEnabled(bool);
+ void favoritesEnabled(bool);
+ void scanEnabled(bool);
+ void prevPresetEnabled(bool);
+ void nextPresetEnabled(bool);
+ void recordEnabled(bool);
+ void recordPauseEnabled(bool);
+ void recordStopEnabled(bool);
+ void recordMuteEnabled(bool);
+
+private slots:
+ void on_timerButton_pressed();
+ void on_timerButton_released();
+ void on_programButton_pressed();
+ void on_programButton_released();
+ void on_memoryButton_pressed();
+ void on_memoryButton_released();
+ void on_callButton_pressed();
+ void on_callButton_released();
+ void on_favoritesButton_pressed();
+ void on_favoritesButton_released();
+ void on_scanButton_pressed();
+ void on_scanButton_released();
+ void on_prevPresetButton_pressed();
+ void on_prevPresetButton_released();
+ void on_nextPresetButton_pressed();
+ void on_nextPresetButton_released();
+ void on_recordButton_pressed();
+ void on_recordButton_released();
+ void on_recordPauseButton_pressed();
+ void on_recordPauseButton_released();
+ void on_recordStopButton_pressed();
+ void on_recordStopButton_released();
+ void on_recordMuteButton_pressed();
+ void on_recordMuteButton_released();
+
+private:
+ Ui::PIRRecordForm *ui;
+
+ MainWindow *mainWindow;
+};
+
+#endif // PIRRECORDFORM_H
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>PIRRecordForm</class>
+ <widget class="QWidget" name="PIRRecordForm">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>800</width>
+ <height>480</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QPushButton" name="timerButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Timer</string>
+ </property>
+ <property name="icon">
+ <iconset resource="../PierogiResources.qrc">
+ <normaloff>:/icons/clock_icon&48.png</normaloff>:/icons/clock_icon&48.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>48</width>
+ <height>48</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QPushButton" name="programButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Program</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QPushButton" name="memoryButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Memory</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3">
+ <widget class="QPushButton" name="callButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Call</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QPushButton" name="favoritesButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Favorites</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QPushButton" name="scanButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Scan</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QPushButton" name="prevPresetButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Prev Preset</string>
+ </property>
+ <property name="icon">
+ <iconset resource="../PierogiResources.qrc">
+ <normaloff>:/icons/arrow_left_icon&48.png</normaloff>:/icons/arrow_left_icon&48.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>48</width>
+ <height>48</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="3">
+ <widget class="QPushButton" name="nextPresetButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Next Preset</string>
+ </property>
+ <property name="icon">
+ <iconset resource="../PierogiResources.qrc">
+ <normaloff>:/icons/arrow_right_icon&48.png</normaloff>:/icons/arrow_right_icon&48.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>48</width>
+ <height>48</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QPushButton" name="recordButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Record</string>
+ </property>
+ <property name="icon">
+ <iconset resource="../PierogiResources.qrc">
+ <normaloff>:/icons/red_record_icon.png</normaloff>:/icons/red_record_icon.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>48</width>
+ <height>48</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QPushButton" name="recordPauseButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Rec Pause</string>
+ </property>
+ <property name="icon">
+ <iconset resource="../PierogiResources.qrc">
+ <normaloff>:/icons/red_pause.png</normaloff>:/icons/red_pause.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>48</width>
+ <height>48</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QPushButton" name="recordStopButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Rec Stop</string>
+ </property>
+ <property name="icon">
+ <iconset resource="../PierogiResources.qrc">
+ <normaloff>:/icons/red_square.png</normaloff>:/icons/red_square.png</iconset>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>48</width>
+ <height>48</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="3">
+ <widget class="QPushButton" name="recordMuteButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Rec Mute</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources>
+ <include location="../PierogiResources.qrc"/>
+ </resources>
+ <connections>
+ <connection>
+ <sender>PIRRecordForm</sender>
+ <signal>timerEnabled(bool)</signal>
+ <receiver>timerButton</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>399</x>
+ <y>239</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>99</x>
+ <y>79</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>PIRRecordForm</sender>
+ <signal>programEnabled(bool)</signal>
+ <receiver>programButton</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>399</x>
+ <y>239</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>299</x>
+ <y>79</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>PIRRecordForm</sender>
+ <signal>memoryEnabled(bool)</signal>
+ <receiver>memoryButton</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>399</x>
+ <y>239</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>500</x>
+ <y>79</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>PIRRecordForm</sender>
+ <signal>callEnabled(bool)</signal>
+ <receiver>callButton</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>399</x>
+ <y>239</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>700</x>
+ <y>79</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>PIRRecordForm</sender>
+ <signal>favoritesEnabled(bool)</signal>
+ <receiver>favoritesButton</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>399</x>
+ <y>239</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>99</x>
+ <y>239</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>PIRRecordForm</sender>
+ <signal>scanEnabled(bool)</signal>
+ <receiver>scanButton</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>399</x>
+ <y>239</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>299</x>
+ <y>239</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>PIRRecordForm</sender>
+ <signal>prevPresetEnabled(bool)</signal>
+ <receiver>prevPresetButton</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>399</x>
+ <y>239</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>500</x>
+ <y>239</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>PIRRecordForm</sender>
+ <signal>nextPresetEnabled(bool)</signal>
+ <receiver>nextPresetButton</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>399</x>
+ <y>239</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>700</x>
+ <y>239</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>PIRRecordForm</sender>
+ <signal>recordEnabled(bool)</signal>
+ <receiver>recordButton</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>399</x>
+ <y>239</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>99</x>
+ <y>400</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>PIRRecordForm</sender>
+ <signal>recordPauseEnabled(bool)</signal>
+ <receiver>recordPauseButton</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>399</x>
+ <y>239</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>299</x>
+ <y>400</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>PIRRecordForm</sender>
+ <signal>recordStopEnabled(bool)</signal>
+ <receiver>recordStopButton</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>399</x>
+ <y>239</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>500</x>
+ <y>400</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>PIRRecordForm</sender>
+ <signal>recordMuteEnabled(bool)</signal>
+ <receiver>recordMuteButton</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>399</x>
+ <y>239</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>700</x>
+ <y>400</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+ <slots>
+ <signal>timerEnabled(bool)</signal>
+ <signal>programEnabled(bool)</signal>
+ <signal>memoryEnabled(bool)</signal>
+ <signal>callEnabled(bool)</signal>
+ <signal>favoritesEnabled(bool)</signal>
+ <signal>scanEnabled(bool)</signal>
+ <signal>prevPresetEnabled(bool)</signal>
+ <signal>nextPresetEnabled(bool)</signal>
+ <signal>recordEnabled(bool)</signal>
+ <signal>recordPauseEnabled(bool)</signal>
+ <signal>recordStopEnabled(bool)</signal>
+ <signal>recordMuteEnabled(bool)</signal>
+ </slots>
+</ui>
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
- <property name="leftMargin">
- <number>8</number>
- </property>
- <property name="topMargin">
+ <property name="margin">
<number>0</number>
</property>
- <property name="rightMargin">
- <number>8</number>
- </property>
- <property name="bottomMargin">
- <number>8</number>
- </property>
<item row="0" column="0">
<widget class="QPushButton" name="teletextButton">
<property name="sizePolicy">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
- <property name="leftMargin">
- <number>8</number>
- </property>
- <property name="topMargin">
+ <property name="margin">
<number>0</number>
</property>
- <property name="rightMargin">
- <number>8</number>
- </property>
- <property name="bottomMargin">
- <number>8</number>
- </property>
<item row="0" column="0">
<widget class="QPushButton" name="redButton">
<property name="sizePolicy">
--- /dev/null
+#include "compro.h"
+#include "protocols/necprotocol.h"
+
+
+ComproTVCard1::ComproTVCard1(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "PC TV Tuner Card 1",
+ Compro_Make,
+ index)
+{
+}
+
+
+void ComproTVCard1::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+ setPreData(0x7E80, 16);
+
+ addKey("MUTE", Mute_Key, 0x14, 8);
+ addKey("ZOOM", Zoom_Key, 0x44, 8);
+ addKey("DVD_VCD", DVDInput_Key, 0x01, 8);
+ addKey("FM", TunerInput_Key, 0x43, 8);
+ addKey("PVR_TV", HDDInput_Key, 0x00, 8);
+ addKey("REWIND", Rewind_Key, 0x0A, 8);
+ addKey("PLAY_PAUSE", Play_Key, 0x08, 8);
+ addKey("PLAY_PAUSE", Pause_Key, 0x08, 8);
+ addKey("FORWARD", FastForward_Key, 0x0F, 8);
+ addKey("PREVIOUS", Previous_Key, 0x02, 8);
+ addKey("STOP", Stop_Key, 0x07, 8);
+ addKey("NEXT", Next_Key, 0x06, 8);
+ addKey("GUIDE", Guide_Key, 0x03, 8);
+ addKey("SETUP", Menu_Key, 0x09, 8);
+ addKey("UP", Up_Key, 0x0C, 8);
+ addKey("DOWN", Down_Key, 0x0E, 8);
+ addKey("LEFT", Left_Key, 0x0B, 8);
+ addKey("RIGHT", Right_Key, 0x0D, 8);
+ addKey("TV_VIDEO", Input_Key, 0x05, 8);
+ addKey("CH_SURF", Unmapped_Key, 0x42, 8);
+ addKey("VOL+", VolumeUp_Key, 0x12, 8);
+ addKey("VOL-", VolumeDown_Key, 0x15, 8);
+ addKey("OK", Select_Key, 0x11, 8);
+ addKey("ANGLE", Angle_Key, 0x10, 8);
+ addKey("SUBTITLE", Captions_Key, 0x13, 8);
+ addKey("REC", Record_Key, 0x04, 8);
+ addKey("1", One_Key, 0x16, 8);
+ addKey("2", Two_Key, 0x17, 8);
+ addKey("3", Three_Key, 0x18, 8);
+ addKey("4", Four_Key, 0x19, 8);
+ addKey("5", Five_Key, 0x1A, 8);
+ addKey("6", Six_Key, 0x1B, 8);
+ addKey("7", Seven_Key, 0x1C, 8);
+ addKey("8", Eight_Key, 0x1D, 8);
+ addKey("9", Nine_Key, 0x1E, 8);
+ addKey("LANGUAGE", Audio_Key, 0x40, 8);
+ addKey("0", Zero_Key, 0x1F, 8);
+ addKey("SLEEP", Sleep_Key, 0x41, 8);
+}
--- /dev/null
+#ifndef COMPRO_H
+#define COMPRO_H
+
+#include "pirkeysetmetadata.h"
+
+class QObject;
+
+class ComproTVCard1: public PIRKeysetMetaData
+{
+public:
+ ComproTVCard1(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
+#endif // COMPRO_H
--- /dev/null
+#include "kaon.h"
+#include "protocols/necprotocol.h"
+
+
+KaonSat1::KaonSat1(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "Sat Keyset 1",
+ Kaon_Make,
+ index)
+{
+}
+
+
+void KaonSat1::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+ setPreData(0x0820, 16);
+
+ addKey("POWER", Power_Key, 0x00, 8);
+ addKey("PSIZE", AspectRatio_Key, 0x01, 8);
+ addKey("VOLUP", VolumeUp_Key, 0x02, 8);
+ addKey("VOLDOWN", VolumeDown_Key, 0x03, 8);
+ addKey("MUTE", Mute_Key, 0x04, 8);
+ addKey("TV/RADIO", TunerInput_Key, 0x05, 8);
+ addKey("CHUP", ChannelUp_Key, 0x06, 8);
+ addKey("CHDOWN", ChannelDown_Key, 0x07, 8);
+ addKey("TV/STB", Input_Key, 0x08, 8);
+ addKey("ACOUNT", Unmapped_Key, 0x09, 8); // "VFormat"
+ addKey("ALR", Unmapped_Key, 0x0A, 8);
+ addKey("ALANG", Audio_Key, 0x0B, 8);
+ addKey("RECALL", PrevChannel_Key, 0x0C, 8);
+ addKey("EPG", Guide_Key, 0x0D, 8);
+ addKey("TEXT", Teletext_Key, 0x0E, 8);
+
+ addKey("EXIT", Exit_Key, 0x10, 8);
+ addKey("MENU", Menu_Key, 0x11, 8);
+ addKey("UP", Up_Key, 0x12, 8);
+ addKey("DOWN", Down_Key, 0x13, 8);
+ addKey("LEFT", Left_Key, 0x14, 8);
+ addKey("OK", Select_Key, 0x15, 8);
+ addKey("RIGHT", Right_Key, 0x16, 8);
+ addKey("RED", Red_Key, 0x18, 8);
+ addKey("GREEN", Green_Key, 0x19, 8);
+ addKey("YELLOW", Yellow_Key, 0x1A, 8);
+ addKey("BLUE", Blue_Key, 0x1B, 8);
+ addKey("1", One_Key, 0x1C, 8);
+ addKey("2", Two_Key, 0x1D, 8);
+ addKey("3", Three_Key, 0x1E, 8);
+ addKey("SLEEP", Sleep_Key, 0x1F, 8);
+
+ addKey("4", Four_Key, 0x40, 8);
+ addKey("5", Five_Key, 0x41, 8);
+ addKey("6", Six_Key, 0x42, 8);
+ addKey("FAV", Favorites_Key, 0x43, 8);
+ addKey("7", Seven_Key, 0x44, 8);
+ addKey("8", Eight_Key, 0x45, 8);
+ addKey("9", Nine_Key, 0x46, 8);
+ addKey("0", Zero_Key, 0x47, 8);
+}
--- /dev/null
+#ifndef KAON_H
+#define KAON_H
+
+#include "pirkeysetmetadata.h"
+
+class QObject;
+
+class KaonSat1: public PIRKeysetMetaData
+{
+public:
+ KaonSat1(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
+#endif // KAON_H
LG_Make,
index)
{
+ addControlledDevice(LG_Make, "DV552", DVD_Device);
}
--- /dev/null
+#include "qnap.h"
+#include "protocols/necprotocol.h"
+
+
+QNAPPlayer1::QNAPPlayer1(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "Media Player Keyset 1",
+ QNAP_Make,
+ index)
+{
+}
+
+
+void QNAPPlayer1::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+ setPreData(0x4523, 16);
+
+ addKey("Mute", Mute_Key, 0x02, 8);
+ addKey("Audio", Audio_Key, 0x03, 8);
+ addKey("Menu", DiscMenu_Key, 0x04, 8);
+ addKey("Zoom", Zoom_Key, 0x06, 8);
+ addKey("Title", DiscTitle_Key, 0x07, 8);
+ addKey("Angle", Angle_Key, 0x08, 8);
+ addKey("Slow", Slow_Key, 0x09, 8);
+ addKey("Seek", Unmapped_Key, 0x0B, 8);
+ addKey("rewind", Rewind_Key, 0x0C, 8);
+ addKey("Stop", Stop_Key, 0x0D, 8);
+ addKey("ffwd", FastForward_Key, 0x0E, 8);
+ addKey("Home", Guide_Key, 0x0F, 8);
+ addKey("Option", Unmapped_Key, 0x11, 8);
+ addKey("Resume", Exit_Key, 0x12, 8);
+ addKey("up_arrow", Up_Key, 0x13, 8);
+ addKey("left_arrow", Left_Key, 0x14, 8);
+ addKey("right_arrow", Right_Key, 0x16, 8);
+ addKey("down_arrow", Down_Key, 0x17, 8);
+ addKey("Skip-", Previous_Key, 0x18, 8);
+ addKey("Skip+", Next_Key, 0x19, 8);
+ addKey("VOL+", VolumeUp_Key, 0x1B, 8);
+ addKey("num_1", One_Key, 0x1C, 8);
+ addKey("num_2", Two_Key, 0x1D, 8);
+ addKey("num_3", Three_Key, 0x1E, 8);
+ addKey("Info", Info_Key, 0x1F, 8);
+ addKey("Power", Power_Key, 0x20, 8);
+ addKey("num_5", Five_Key, 0x21, 8);
+ addKey("Subtitle", Captions_Key, 0x25, 8);
+ addKey("num_9", Nine_Key, 0x26, 8);
+ addKey("Pause", Pause_Key, 0x2A, 8);
+ addKey("Settings", Menu_Key, 0x30, 8);
+ addKey("Select", Select_Key, 0x35, 8);
+ addKey("Play", Play_Key, 0x35, 8);
+ addKey("VOL-", VolumeDown_Key, 0x3A, 8);
+ addKey("num_4", Four_Key, 0x40, 8);
+ addKey("num_6", Six_Key, 0x42, 8);
+ addKey("TV", Input_Key, 0x43, 8);
+ addKey("num_7", Seven_Key, 0x44, 8);
+ addKey("num_8", Eight_Key, 0x45, 8);
+ addKey("num_0", Zero_Key, 0x47, 8);
+}
--- /dev/null
+#ifndef QNAP_H
+#define QNAP_H
+
+#include "pirkeysetmetadata.h"
+
+class QObject;
+
+class QNAPPlayer1: public PIRKeysetMetaData
+{
+public:
+ QNAPPlayer1(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
+#endif // QNAP_H
addKey("PLAY", Play_Key, 0x3E, 8);
addKey("STOP", Stop_Key, 0x3F, 8);
addKey("REC", Record_Key, 0x40, 8);
+ addKey("Remote Battery Message", Unmapped_Key, 0x48, 8);
addKey("UP", Up_Key, 0x58, 8);
addKey("DOWN", Down_Key, 0x59, 8);
addKey("BLUE", Blue_Key, 0x70, 8);
addKey("BOX_OFFICE", Unmapped_Key, 0x7D, 8);
- addKey("SERVICES", Menu_Key, 0x7E, 8); // ?
+ addKey("SERVICES", Unmapped_Key, 0x7E, 8); // ?
addKey("SKY", Unmapped_Key, 0x80, 8);
addKey("HELP", Unmapped_Key, 0x81, 8); // menu?
addKey("INFO", Info_Key, 0xCB, 8);
addKey("TV_GUIDE", Guide_Key, 0xCC, 8);
- addKey("INTERACTIVE", Unmapped_Key, 0xF5, 8);
+ addKey("INTERACTIVE", Menu_Key, 0xF5, 8);
}
addControlledDevice(Sony_Make, "KV-36FS13", TV_Device);
addControlledDevice(Sony_Make, "KDL-23B4030", TV_Device);
addControlledDevice(Sony_Make, "KDL-40EX403", TV_Device);
+ addControlledDevice(Sony_Make, "KDL-40EX520", TV_Device);
addControlledDevice(Sony_Make, "KDL-40X2000", TV_Device);
addControlledDevice(Sony_Make, "KDL-52X2000", TV_Device);
addControlledDevice(Sony_Make, "KDL-46X2000", TV_Device);
WD_Make,
index)
{
+ addControlledDevice(WD_Make, "WDTV", Other_Device);
+ addControlledDevice(WD_Make, "WDTV Live PLUS", Other_Device);
}
//#include <QtGui>
#include <QSettings>
+#include "pirkeysetmetadata.h"
#include "pirkeysetwidgetitem.h"
#include "pirselectkeysetform.h"
#include "pirselectdeviceform.h"
// Set up the keyset selection window:
selectKeysetForm = new PIRSelectKeysetForm(this);
+ myKeysets->populateSelectionWidget(selectKeysetForm);
// Set up the device selection window:
selectDeviceForm = new PIRSelectDeviceForm(this);
+ PIRKeysetMetaData::populateDevices(selectDeviceForm);
// Set up the panel selection window:
panelSelectionForm = new PIRPanelSelectionForm(this);
- myKeysets->populateSelectionWidgets(selectKeysetForm, selectDeviceForm);
// myPanels->setupPanels(panelSelectionForm);
// Remember any favorites the user has already set:
</sizepolicy>
</property>
<layout class="QGridLayout" name="gridLayout">
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
+ <property name="margin">
<number>8</number>
</property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
<item row="0" column="0">
<widget class="QPushButton" name="prevPanelButton">
<property name="icon">
keysets/dynex.cpp \
keysets/kathrein.cpp \
keysets/starsat.cpp \
- keysets/viewsat.cpp
+ keysets/viewsat.cpp \
+ pirdeviceinfo.cpp \
+ keysets/kaon.cpp \
+ forms/pirrecordform.cpp \
+ keysets/qnap.cpp \
+ keysets/compro.cpp
HEADERS += mainwindow.h \
pirkeynames.h \
pirmakenames.h \
keysets/dynex.h \
keysets/kathrein.h \
keysets/starsat.h \
- keysets/viewsat.h
+ keysets/viewsat.h \
+ keysets/kaon.h \
+ pirdeviceinfo.h \
+ forms/pirrecordform.h \
+ keysets/qnap.h \
+ keysets/compro.h
FORMS += mainwindow.ui \
pirdocumentationform.ui \
piraboutform.ui \
forms/pirmenuform.ui \
forms/pirmediaform.ui \
forms/pirfavoritesform.ui \
- pirpanelselectionform.ui
+ pirpanelselectionform.ui \
+ forms/pirrecordform.ui
# Please do not modify the following two lines. Required for deployment.
include(deployment.pri)
www/PierogiIcon.png \
www/AdjustTab.png \
www/InputTab.png \
- qtc_packaging/debian_fremantle/postrm
+ qtc_packaging/debian_fremantle/postrm \
+ icons/red_pause.png
RESOURCES += \
PierogiResources.qrc
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
-<!-- Written by Qt Creator 2.4.1, 2012-02-29T19:50:16. -->
+<!-- Written by Qt Creator 2.4.1, 2012-03-02T20:08:31. -->
<qtcreator>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="QString" key="ProjectExplorer.ProcessStep.Arguments">dpkg-buildpackage -sa -S -uc -us</value>
<value type="QString" key="ProjectExplorer.ProcessStep.Command">/Users/john/QtSDK/Maemo/4.6.2/bin/mad</value>
<value type="bool" key="ProjectExplorer.ProcessStep.Enabled">false</value>
- <value type="QString" key="ProjectExplorer.ProcessStep.WorkingDirectory">/Users/john/Develop/n900/pierogi-1.0.0</value>
+ <value type="QString" key="ProjectExplorer.ProcessStep.WorkingDirectory">/Users/john/Develop/n900/pierogi-1.1.0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Custom Process Step</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.ProcessStep</value>
<value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_0_1_6_armel.deb</value>
<value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_0_6_10_armel.deb</value>
<value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_0_1_2_armel.deb</value>
+ <value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_1_1_1_armel.deb</value>
</valuelist>
<valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedHosts">
<value type="QString">192.168.0.15</value>
<value type="QString">192.168.0.15</value>
<value type="QString">192.168.0.15</value>
<value type="QString">192.168.0.15</value>
+ <value type="QString">192.168.0.15</value>
</valuelist>
<valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedRemotePaths">
<value type="QString"></value>
<value type="QString"></value>
<value type="QString"></value>
<value type="QString"></value>
+ <value type="QString"></value>
</valuelist>
<valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedTimes">
<value type="QDateTime">2012-01-19T22:18:07</value>
<value type="QDateTime">2012-02-16T21:50:07</value>
<value type="QDateTime">2012-01-17T00:15:23</value>
<value type="QDateTime">2012-01-30T20:23:06</value>
- <value type="QDateTime">2012-02-29T19:26:06</value>
+ <value type="QDateTime">2012-02-29T20:01:12</value>
<value type="QDateTime">2012-01-17T13:21:05</value>
<value type="QDateTime">2012-01-23T09:47:37</value>
<value type="QDateTime">2012-02-03T10:04:34</value>
<value type="QDateTime">2012-01-25T13:42:55</value>
<value type="QDateTime">2012-02-22T09:37:53</value>
<value type="QDateTime">2012-01-17T12:19:28</value>
+ <value type="QDateTime">2012-03-02T20:06:33</value>
</valuelist>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">3</value>
--- /dev/null
+#include "pirdeviceinfo.h"
+
+#include <string.h>
+
+bool operator< (
+ const DeviceInfo &a,
+ const DeviceInfo &b)
+{
+ if (a.make < b.make) return true;
+
+ if ((a.make == b.make) && (strcmp(a.model, b.model) < 0)) return true;
+
+ return false;
+}
--- /dev/null
+#ifndef PIRDEVICEINFO_H
+#define PIRDEVICEINFO_H
+
+#include "pirmakenames.h"
+#include "pirdevicetypenames.h"
+
+#include <map>
+
+class DeviceInfo
+{
+public:
+ DeviceInfo(
+ PIRMakeName ma,
+ const char *mo,
+ PIRDeviceTypeName t)
+ : make(ma),
+ model(mo),
+ type(t)
+ {}
+
+ PIRMakeName make;
+ const char *model;
+ PIRDeviceTypeName type;
+};
+
+bool operator< (
+ const DeviceInfo &a,
+ const DeviceInfo &b);
+
+typedef std::map<DeviceInfo, unsigned int> PIRDeviceCollection;
+
+typedef std::pair<DeviceInfo, unsigned int> PIRDCPair;
+
+#endif // PIRDEVICEINFO_H
#include "keysets/bush.h"
#include "keysets/cambridge.h"
#include "keysets/canon.h"
+#include "keysets/compro.h"
#include "keysets/daewoo.h"
#include "keysets/dell.h"
#include "keysets/denon.h"
#include "keysets/humax.h"
#include "keysets/hyundai.h"
#include "keysets/jvc.h"
+#include "keysets/kaon.h"
#include "keysets/kathrein.h"
#include "keysets/kenwood.h"
#include "keysets/lg.h"
#include "keysets/philips.h"
#include "keysets/pinnacle.h"
#include "keysets/pioneer.h"
+#include "keysets/qnap.h"
#include "keysets/raite.h"
#include "keysets/rca.h"
#include "keysets/roku.h"
// Global helper objects:
PIRMakeMgr makeManager;
-PIRDeviceTypeMgr deviceManager;
// Now, on to the actual method definitions:
setupKeyset(new CanonCamcorder1(counter++));
setupKeyset(new CanonPowershot1(counter++));
+ setupKeyset(new ComproTVCard1(counter++));
+
setupKeyset(new DaewooTV1(counter++));
setupKeyset(new DaewooTV2(counter++));
setupKeyset(new DaewooTV3(counter++));
setupKeyset(new JVCAudio2(counter++));
setupKeyset(new JVCDVD1(counter++));
+ setupKeyset(new KaonSat1(counter++));
+
setupKeyset(new KathreinSat1(counter++));
setupKeyset(new KathreinSat2(counter++));
setupKeyset(new KathreinSat3(counter++));
setupKeyset(new PioneerLaserDisc1(counter++));
setupKeyset(new PioneerDVD1(counter++));
+ setupKeyset(new QNAPPlayer1(counter++));
+
setupKeyset(new RaiteDVD1(counter++));
setupKeyset(new RCATV1(counter++));
}
-void PIRKeysetManager::populateSelectionWidgets(
- PIRSelectKeysetForm *skf,
- PIRSelectDeviceForm *sdf) const
+void PIRKeysetManager::populateSelectionWidget(
+ PIRSelectKeysetForm *skf) const
{
PIRMakeName make;
PIRKeysetWidgetItem *kwi;
kwi = new PIRKeysetWidgetItem(tempString, i->first, make);
skf->addWidgetItem(kwi);
- // Create widgets for the devices:
- i->second->populateDevices(i->first, sdf);
-
++i;
}
}
~PIRKeysetManager();
- void populateSelectionWidgets(
- PIRSelectKeysetForm *skf,
- PIRSelectDeviceForm *sdf) const;
+ void populateSelectionWidget(
+ PIRSelectKeysetForm *skf) const;
bool keysetExists(
unsigned int keysetID) const;
#include <iostream>
-// Global helper objects:
+// Global helper object:
extern PIRMakeMgr makeManager;
-//extern PIRDeviceTypeMgr deviceManager;
+
+// Static member definition:
+PIRDeviceCollection PIRKeysetMetaData::controlledDevices;
PIRKeysetMetaData::PIRKeysetMetaData(
const char *r,
void PIRKeysetMetaData::populateDevices(
- unsigned int id,
- PIRSelectDeviceForm *sdf) const
+ PIRSelectDeviceForm *sdf)
{
PIRKeysetWidgetItem *kwi;
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->second, i->first.make, i->first.type);
+
sdf->addWidgetItem(kwi);
++i;
const char *model,
PIRDeviceTypeName type)
{
- controlledDevices.push_back(DeviceInfo(make, model, type));
-
- deviceTypes.insert(type);
+ controlledDevices.insert(
+ PIRDCPair(
+ DeviceInfo(make, model, type),
+ index));
}
#include "pirkeynames.h"
#include "pirmakenames.h"
-#include "pirdevicetypenames.h"
+//#include "pirdevicetypenames.h"
+
+#include "pirdeviceinfo.h"
#include <map>
-#include <list>
+//#include <list>
class QThread;
class QObject;
typedef std::map<PIRKeyName, const char *> KeyCollection;
-class DeviceInfo
-{
-public:
- DeviceInfo(
- PIRMakeName ma,
- const char *mo,
- PIRDeviceTypeName t)
- : make(ma),
- model(mo),
- type(t)
- {}
-
- PIRMakeName make;
- const char *model;
- PIRDeviceTypeName type;
-};
-
-typedef std::list<DeviceInfo> PIRDeviceCollection;
class PIRKeysetMetaData
{
void moveToThread(
QThread *thread);
- void populateDevices(
- unsigned int id,
- PIRSelectDeviceForm *sdf) const;
+ static void populateDevices(
+ PIRSelectDeviceForm *sdf);
protected:
void addControlledDevice(
KeyCollection keys;
- PIRDeviceCollection controlledDevices;
-
PIRProtocol *threadableProtocol;
unsigned int index;
private:
const char *keysetName;
PIRMakeName make;
- PIRDeviceTypeCollection deviceTypes;
+ static PIRDeviceCollection controlledDevices;
+// PIRDeviceTypeCollection deviceTypes;
};
makes[Bush_Make] = "Bush";
makes[Cambridge_Make] = "Cambridge Audio";
makes[Canon_Make] = "Canon";
+ makes[Compro_Make] = "Compro";
makes[Daewoo_Make] = "Daewoo";
makes[Dell_Make] = "Dell";
makes[Denon_Make] = "Denon";
makes[Humax_Make] = "Humax";
makes[Hyundai_Make] = "Hyundai";
makes[JVC_Make] = "JVC";
+ makes[Kaon_Make] = "Kaon";
makes[Kathrein_Make] = "Kathrein";
makes[Kenwood_Make] = "Kenwood";
makes[LG_Make] = "LG";
makes[Philips_Make] = "Philips";
makes[Pinnacle_Make] = "Pinnacle Systems";
makes[Pioneer_Make] = "Pioneer";
+ makes[QNAP_Make] = "QNAP";
makes[Raite_Make] = "Raite";
makes[RCA_Make] = "RCA";
makes[Roku_Make] = "Roku";
Bush_Make,
Cambridge_Make,
Canon_Make,
+ Compro_Make,
Daewoo_Make,
Dell_Make,
Denon_Make,
Humax_Make,
Hyundai_Make,
JVC_Make,
+ Kaon_Make,
Kathrein_Make,
Kenwood_Make,
LG_Make,
Philips_Make,
Pinnacle_Make,
Pioneer_Make,
+ QNAP_Make,
Raite_Make,
RCA_Make,
Roku_Make,
#include "forms/pirkeypadform.h"
#include "forms/pirmenuform.h"
#include "forms/pirmediaform.h"
-#include "forms/pirfavoritesform.h"
-#include "forms/pirtvform.h"
#include "forms/pirmedia2form.h"
+#include "forms/pirrecordform.h"
+#include "forms/pirtvform.h"
#include "forms/pirinputform.h"
#include "forms/piradjustform.h"
#include "forms/pirairconditionerform.h"
+#include "forms/pirfavoritesform.h"
#include "mainwindow.h"
menuForm(0),
mediaForm(0),
media2Form(0),
+ recordForm(0),
tvForm(0),
inputForm(0),
adjustForm(0),
panelList.push_back(PIRPanelPair(Menu_Panel, false));
panelList.push_back(PIRPanelPair(Media_Panel, false));
panelList.push_back(PIRPanelPair(Media2_Panel, false));
+ panelList.push_back(PIRPanelPair(Record_Panel, false));
panelList.push_back(PIRPanelPair(TV_Panel, false));
panelList.push_back(PIRPanelPair(Input_Panel, false));
panelList.push_back(PIRPanelPair(Adjust_Panel, false));
if (menuForm) menuForm->enableButtons(keyset, id);
if (mediaForm) mediaForm->enableButtons(keyset, id);
if (media2Form) media2Form->enableButtons(keyset, id);
+ if (recordForm) recordForm->enableButtons(keyset, id);
if (tvForm) tvForm->enableButtons(keyset, id);
if (inputForm) inputForm->enableButtons(keyset, id);
if (adjustForm) adjustForm->enableButtons(keyset, id);
if (mediaForm) mainWindow->removePanel(index, mediaForm);
break;
- case TV_Panel:
- if (tvForm) mainWindow->removePanel(index, tvForm);
- break;
-
case Media2_Panel:
if (media2Form) mainWindow->removePanel(index, media2Form);
break;
+ case Record_Panel:
+ if (recordForm) mainWindow->removePanel(index, recordForm);
+ break;
+
+ case TV_Panel:
+ if (tvForm) mainWindow->removePanel(index, tvForm);
+ break;
+
case Input_Panel:
if (inputForm) mainWindow->removePanel(index, inputForm);
break;
break;
+ case Record_Panel:
+ if (!recordForm)
+ {
+ recordForm = new PIRRecordForm(mainWindow);
+ mainWindow->enableButtons();
+ }
+
+ mainWindow->insertPanel(
+ index,
+ recordForm,
+ QString("Program/Record Panel - control over memory and storage"));
+
+ break;
+
case TV_Panel:
if (!tvForm)
{
class PIRKeypadForm;
class PIRMenuForm;
class PIRMediaForm;
-class PIRFavoritesForm;
-class PIRTVForm;
class PIRMedia2Form;
+class PIRRecordForm;
+class PIRTVForm;
class PIRInputForm;
class PIRAdjustForm;
class PIRAirConditionerForm;
+class PIRFavoritesForm;
class PIRKeysetWidgetItem;
class PIRPanelSelectionForm;
PIRMenuForm *menuForm;
PIRMediaForm *mediaForm;
PIRMedia2Form *media2Form;
+ PIRRecordForm *recordForm;
PIRTVForm *tvForm;
PIRInputForm *inputForm;
PIRAdjustForm *adjustForm;
Keypad_Panel,
Menu_Panel,
Media_Panel,
- TV_Panel,
Media2_Panel,
+ Record_Panel,
+ TV_Panel,
Input_Panel,
Adjust_Panel,
AC_Panel,
mainWindow->managePanel(Media_Panel, arg1);
}
-void PIRPanelSelectionForm::on_tvCheckBox_stateChanged(int arg1)
+void PIRPanelSelectionForm::on_media2CheckBox_stateChanged(int arg1)
{
- mainWindow->managePanel(TV_Panel, arg1);
+ mainWindow->managePanel(Media2_Panel, arg1);
}
-void PIRPanelSelectionForm::on_media2CheckBox_stateChanged(int arg1)
+void PIRPanelSelectionForm::on_recordCheckBox_stateChanged(int arg1)
{
- mainWindow->managePanel(Media2_Panel, arg1);
+ mainWindow->managePanel(Record_Panel, arg1);
+}
+
+void PIRPanelSelectionForm::on_tvCheckBox_stateChanged(int arg1)
+{
+ mainWindow->managePanel(TV_Panel, arg1);
}
void PIRPanelSelectionForm::on_inputCheckBox_stateChanged(int arg1)
void on_keypadCheckBox_stateChanged(int arg1);
void on_menuCheckBox_stateChanged(int arg1);
void on_mediaCheckBox_stateChanged(int arg1);
- void on_tvCheckBox_stateChanged(int arg1);
void on_media2CheckBox_stateChanged(int arg1);
+ void on_recordCheckBox_stateChanged(int arg1);
+ void on_tvCheckBox_stateChanged(int arg1);
void on_inputCheckBox_stateChanged(int arg1);
void on_adjustCheckBox_stateChanged(int arg1);
void on_acCheckBox_stateChanged(int arg1);
</widget>
</item>
<item>
+ <widget class="QCheckBox" name="recordCheckBox">
+ <property name="text">
+ <string>Program/Record Panel - control over memory and storage</string>
+ </property>
+ </widget>
+ </item>
+ <item>
<widget class="QCheckBox" name="tvCheckBox">
<property name="text">
<string>TV Panel - Teletext and Picture-in-Picture</string>
#include "ui_pirselectdeviceform.h"
#include "pirkeysetwidgetitem.h"
+PIRDeviceTypeMgr deviceTypeManager;
+
extern PIRMakeMgr makeManager;
-extern PIRDeviceTypeMgr deviceManager;
PIRSelectDeviceForm::PIRSelectDeviceForm(
QWidget *parent)
// push the list of makers into the make combo box:
makeManager.populateComboBox(ui->makeComboBox);
- deviceManager.populateComboBox(ui->deviceComboBox);
+ deviceTypeManager.populateComboBox(ui->deviceComboBox);
// Connection telling main window that keyset has been selected:
connect(
delete ui;
}
+/*
void PIRSelectDeviceForm::addNameToList(
QString name,
unsigned int index,
{
ui->deviceListWidget->addItem(new PIRKeysetWidgetItem(name, index, make));
}
+*/
void PIRSelectDeviceForm::addWidgetItem(
PIRKeysetWidgetItem *kwi)
#include "pirmakenames.h"
#include "pirdevicetypenames.h"
+#include "pirdeviceinfo.h"
class PIRKeysetWidgetItem;
class QListWidget;
Q_OBJECT
public:
- explicit PIRSelectDeviceForm(QWidget *parent = 0);
+ explicit PIRSelectDeviceForm(
+ QWidget *parent = 0);
+
~PIRSelectDeviceForm();
+/*
void addNameToList(
QString name,
unsigned int index,
PIRMakeName make);
+*/
void addWidgetItem(
PIRKeysetWidgetItem *kwi);
</rect>
</property>
<property name="windowTitle">
- <string>Form</string>
+ <string>Select Device</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="margin">
delete ui;
}
+/*
void PIRSelectKeysetForm::addNameToList(
QString name,
unsigned int index,
{
ui->keysetListWidget->addItem(new PIRKeysetWidgetItem(name, index, make));
}
+*/
void PIRSelectKeysetForm::addWidgetItem(
PIRKeysetWidgetItem *kwi)
explicit PIRSelectKeysetForm(QWidget *parent = 0);
~PIRSelectKeysetForm();
+/*
void addNameToList(
QString name,
unsigned int index,
PIRMakeName make);
+*/
void addWidgetItem(
PIRKeysetWidgetItem *kwi);
// b) a "start bit", value 1 (so 444 us pulse, 444 us space)
// c) three control bits, set to "110" (i.e., mode "6")
// d) the double-sized "trailer" bit, set based on the keypress count:
+ // d2) I'm trying out setting the toggle bit to always be 0.
rx51device.addSingle(HEADER_PULSE); // lead pulse
duration += HEADER_PULSE;
+pierogi (1.1.1) unstable; urgency=low
+ * The Record button returns to Pierogi via a new "Program/Record" panel
+ * Several fixes for Select Keyset by Device window (thanks sixwheeledbeast!)
+ * First pass at keysets for Compro, Kaon, and QNAP
+
+ -- John Pietrzak <jpietrzak8@gmail.com> Fri, 02 Mar 2012 08:42:07 -0500
+
pierogi (1.1.0) unstable; urgency=low
* GUI changed - "panels" instead of "tabs", new navigation controls.
* New window added for selecting keysets by device. "Device" filter removed from select keyset by name window.
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Universal Infrared (IR) Remote Control for N900
Pierogi is a Universal Infrared Remote Control app for the Nokia N900. It is independent from the LIRC server, and stores all configuration info internally.
-XB-Maemo-Upgrade-Description: New GUI
- In order to provide more flexibility to Pierogi, I've revamped the GUI. Mostly, I've replaced the tab-bar with a construct of my own. We'll have to see how well this works. Also, many new keysets in this update, as well as better A/C support.
+XB-Maemo-Upgrade-Description: Record button is back
+ The "Record" button makes its triumphant return to Pierogi through a new "Program/Record" control panel. Also several bug-fixes to the Select Keyset by Device window (thanks to sixwheeledbeast for pointing them out), and a first pass at keysets for Compro, Kaon, and QNAP
XSBC-Bugtracker: https://garage.maemo.org/tracker/?func=add&group_id=2286&atid=7641
XB-Maemo-Display-Name: Pierogi
XB-Maemo-Icon-26: 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