#include "pirpanelmanager.h"
#include "forms/pirmainform.h"
+#include "forms/piraltmainform.h"
#include "forms/pirutilityform.h"
#include "forms/pirkeypadform.h"
#include "forms/pirmenuform.h"
#include "forms/pirinputform.h"
#include "forms/piradjustform.h"
#include "forms/pirairconditionerform.h"
-#include "forms/pirfavoritesform.h"
+#include "forms/piraudiodeviceform.h"
+#include "forms/pircameraform.h"
+#include "forms/pirroombaform.h"
+#include "forms/piruserform.h"
+#include "forms/pirmacroform.h"
+#include "forms/pirpowersearchform.h"
+#include "forms/piradvancedform.h"
#include "mainwindow.h"
-PIRPanelManager::PIRPanelManager(MainWindow *mw)
- : mainForm(0),
+#include <QSettings>
+#include <QDialogButtonBox>
+#include <QPushButton>
+
+// Debugging:
+//#include <QMaemo5InformationBox>
+#include <iostream>
+
+PIRPanelManager::PIRPanelManager(
+ MainWindow *mw):
+ mainForm(0),
+ altMainForm(0),
utilityForm(0),
keypadForm(0),
menuForm(0),
inputForm(0),
adjustForm(0),
acForm(0),
- favoritesForm(0),
+ audioDeviceForm(0),
+ cameraForm(0),
+ roombaForm(0),
+ userForm(0),
+ macroForm(0),
+ powerSearchForm(0),
+ advancedForm(0),
+ altMainPanelFlag(false),
+ currentTabsName(Universal_Tabs),
mainWindow(mw)
{
- panelList.push_back(PIRPanelPair(Main_Panel, false));
- panelList.push_back(PIRPanelPair(Utility_Panel, false));
- panelList.push_back(PIRPanelPair(Keypad_Panel, false));
- 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));
- panelList.push_back(PIRPanelPair(AC_Panel, false));
- panelList.push_back(PIRPanelPair(Favorites_Panel, false));
+ QSettings settings("pietrzak.org", "Pierogi");
+ if (settings.contains("currentTabsName"))
+ {
+ int tabVal = settings.value("currentTabsName").toInt();
+
+ if (tabVal >= Last_Tabs_Marker)
+ {
+ currentTabsName = Universal_Tabs;
+ }
+ else
+ {
+ currentTabsName = PIRTabBarName(tabVal);
+ }
+ }
+
+ // Set up the panel names:
+ shortPanelNames[Main_Panel] = "Main";
+ longPanelNames[Main_Panel] =
+ "Main Panel - power, volume, and channel controls";
+ shortPanelNames[Utility_Panel] = "Utility";
+ longPanelNames[Utility_Panel] =
+ "Utility Panel - commonly used controls";
+ shortPanelNames[Keypad_Panel] = "Keypad";
+ longPanelNames[Keypad_Panel] =
+ "Keypad Panel - numeric value entry";
+ shortPanelNames[Menu_Panel] = "Menu";
+ longPanelNames[Menu_Panel] =
+ "Menu Panel - enter, exit, and navigate menus";
+ shortPanelNames[Media_Panel] = "Media";
+ longPanelNames[Media_Panel] =
+ "Media Panel - control over recorded data";
+ shortPanelNames[Media2_Panel] = "Media2";
+ longPanelNames[Media2_Panel] =
+ "Media2 Panel - additonal media controls";
+ shortPanelNames[Record_Panel] = "Record";
+ longPanelNames[Record_Panel] =
+ "Program/Record Panel - control over memory and storage";
+ shortPanelNames[TV_Panel] = "TV";
+ longPanelNames[TV_Panel] =
+ "TV Panel - teletext and picture-in-picture";
+ shortPanelNames[Input_Panel] = "Input";
+ longPanelNames[Input_Panel] =
+ "Input Panel - manage data sources";
+ shortPanelNames[Adjust_Panel] = "Adjust";
+ longPanelNames[Adjust_Panel] =
+ "Adjust Panel - modify audio and video";
+ shortPanelNames[AC_Panel] = "AC";
+ longPanelNames[AC_Panel] =
+ "A/C Panel - air conditioner controls";
+ shortPanelNames[Audio_Panel] = "Audio";
+ longPanelNames[Audio_Panel] =
+ "Audio Device Panel - various audio related buttons";
+ shortPanelNames[Camera_Panel] = "Camera";
+ longPanelNames[Camera_Panel] =
+ "Camera Panel - simple shutter controls";
+ shortPanelNames[Roomba_Panel] = "Roomba";
+ longPanelNames[Roomba_Panel] =
+ "Roomba Panel - robotic vacuum cleaner controls";
+ shortPanelNames[User_Panel] = "User";
+ longPanelNames[User_Panel] =
+ "User Panel - macro control buttons";
+ shortPanelNames[Macro_Panel] = "Edit Macro Contents";
+ longPanelNames[Macro_Panel] =
+ "Edit Macros Panel - create, delete, edit, and manage macros";
+ shortPanelNames[PowerSearch_Panel] = "Keyset Search";
+ longPanelNames[PowerSearch_Panel] =
+ "Keyset Search Panel - execute power button in each keyset";
+ shortPanelNames[Advanced_Panel] = "Advanced Settings";
+ longPanelNames[Advanced_Panel] =
+ "Advanced Settings - allows adjustment of protocol settings";
+
+ mainForm = new PIRMainForm(mainWindow);
+ panels[Main_Panel] = mainForm;
+
+ altMainForm = new PIRAltMainForm(mainWindow);
+ panels[Alt_Main_Panel] = altMainForm;
+
+ utilityForm = new PIRUtilityForm(mainWindow);
+ panels[Utility_Panel] = utilityForm;
+
+ keypadForm = new PIRKeypadForm(mainWindow);
+ panels[Keypad_Panel] = keypadForm;
+
+ menuForm = new PIRMenuForm(mainWindow);
+ panels[Menu_Panel] = menuForm;
+
+ mediaForm = new PIRMediaForm(mainWindow);
+ panels[Media_Panel] = mediaForm;
+
+ media2Form = new PIRMedia2Form(mainWindow);
+ panels[Media2_Panel] = media2Form;
+
+ recordForm = new PIRRecordForm(mainWindow);
+ panels[Record_Panel] = recordForm;
+
+ tvForm = new PIRTVForm(mainWindow);
+ panels[TV_Panel] = tvForm;
+
+ inputForm = new PIRInputForm(mainWindow);
+ panels[Input_Panel] = inputForm;
+
+ adjustForm = new PIRAdjustForm(mainWindow);
+ panels[Adjust_Panel] = adjustForm;
+
+ acForm = new PIRAirConditionerForm(mainWindow);
+ panels[AC_Panel] = acForm;
+
+ audioDeviceForm = new PIRAudioDeviceForm(mainWindow);
+ panels[Audio_Panel] = audioDeviceForm;
+
+ cameraForm = new PIRCameraForm(mainWindow);
+ panels[Camera_Panel] = cameraForm;
+
+ roombaForm = new PIRRoombaForm(mainWindow);
+ panels[Roomba_Panel] = roombaForm;
+
+ userForm = new PIRUserForm(mainWindow);
+ panels[User_Panel] = userForm;
+
+ macroForm = new PIRMacroForm(mainWindow);
+ panels[Macro_Panel] = macroForm;
+
+ powerSearchForm = new PIRPowerSearchForm(mainWindow);
+ panels[PowerSearch_Panel] = powerSearchForm;
+
+ advancedForm = new PIRAdvancedForm();
+ panels[Advanced_Panel] = advancedForm;
+
+ // Set up the panel collections:
+ PIRPanelNameList pset;
+
+ // The universal collection:
+ pset.push_back(Main_Panel);
+ pset.push_back(Utility_Panel);
+ pset.push_back(Keypad_Panel);
+ pset.push_back(Menu_Panel);
+ pset.push_back(Media_Panel);
+ pset.push_back(User_Panel);
+// pset.push_back(Input_Panel);
+ tabLists[Universal_Tabs] = pset;
+
+ // The TV collection:
+ pset.clear();
+ pset.push_back(Main_Panel);
+ pset.push_back(Utility_Panel);
+ pset.push_back(Keypad_Panel);
+ pset.push_back(Menu_Panel);
+ pset.push_back(TV_Panel);
+ pset.push_back(Input_Panel);
+ tabLists[TV_Tabs] = pset;
+
+ // The video media collection:
+ pset.clear();
+ pset.push_back(Main_Panel);
+ pset.push_back(Menu_Panel);
+ pset.push_back(Media_Panel);
+ pset.push_back(Media2_Panel);
+ pset.push_back(Input_Panel);
+ pset.push_back(Adjust_Panel);
+ tabLists[VideoMedia_Tabs] = pset;
+
+ // Audio panel collection:
+ pset.clear();
+ pset.push_back(Main_Panel);
+ pset.push_back(Keypad_Panel);
+ pset.push_back(Media_Panel);
+ pset.push_back(Audio_Panel);
+ tabLists[Audio_Tabs] = pset;
+
+ // The air conditioner collection:
+ pset.clear();
+ pset.push_back(AC_Panel);
+ tabLists[AC_Tabs] = pset;
+
+ // The recording collection:
+ pset.clear();
+ pset.push_back(Record_Panel);
+ pset.push_back(Keypad_Panel);
+ tabLists[Record_Tabs] = pset;
+
+ // The camera control collection:
+ pset.clear();
+ pset.push_back(Camera_Panel);
+ tabLists[Camera_Tabs] = pset;
+
+ // The Roomba collection:
+ pset.clear();
+ pset.push_back(Roomba_Panel);
+ tabLists[Roomba_Tabs] = pset;
+
+ // The Macro Management collection:
+ pset.clear();
+ pset.push_back(Macro_Panel);
+ tabLists[Macro_Tabs] = pset;
+
+ // The Power Search collection:
+ pset.clear();
+ pset.push_back(PowerSearch_Panel);
+ tabLists[PowerSearch_Tabs] = pset;
+
+ // The Advanced Settings collection:
+ pset.clear();
+ pset.push_back(Advanced_Panel);
+ tabLists[Advanced_Tabs] = pset;
}
}
-/*
-void PIRPanelManager::setupPanels(
- PIRPanelSelectionForm *psf)
+void PIRPanelManager::updateTabSet()
{
+ QSettings settings("pietrzak.org", "Pierogi");
+ settings.setValue("currentTabsName", currentTabsName);
+
+ mainWindow->disableUpdates();
+ mainWindow->clearTabs();
+
+ PIRPanelNameList::const_iterator i = tabLists[currentTabsName].begin();
+
+ while (i != tabLists[currentTabsName].end())
+ {
+ if ((*i == Main_Panel) && altMainPanelFlag)
+ {
+ mainWindow->addTab(altMainForm, shortPanelNames[Main_Panel]);
+ }
+ else
+ {
+ mainWindow->addTab(panels[*i], shortPanelNames[*i]);
+ }
+
+ ++i;
+ }
+
+ mainWindow->enableUpdates();
}
-*/
void PIRPanelManager::enableButtons(
- const PIRKeysetManager *keyset,
+ PIRKeysetManager *keyset,
unsigned int id)
{
- if (mainForm) mainForm->enableButtons(keyset, id);
- if (utilityForm) utilityForm->enableButtons(keyset, id);
- if (keypadForm) keypadForm->enableButtons(keyset, id);
- 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 (acForm) acForm->enableButtons(keyset, id);
+ mainForm->enableButtons(keyset, id);
+ altMainForm->enableButtons(keyset, id);
+ commonEnableButtons(keyset, id);
}
-void PIRPanelManager::managePanel(
- PIRPanelName name,
- int state)
+void PIRPanelManager::enableButtons(
+ PIRKeysetManager *keyset,
+ unsigned int currentID,
+ unsigned int defaultID)
{
- int index = 0;
+ mainForm->enableButtons(keyset, currentID, defaultID);
+ altMainForm->enableButtons(keyset, currentID, defaultID);
+ commonEnableButtons(keyset, currentID);
+}
+
+
+void PIRPanelManager::commonEnableButtons(
+ PIRKeysetManager *keyset,
+ unsigned int id)
+{
+ utilityForm->enableButtons(keyset, id);
+ keypadForm->enableButtons(keyset, id);
+ menuForm->enableButtons(keyset, id);
+ mediaForm->enableButtons(keyset, id);
+ media2Form->enableButtons(keyset, id);
+ recordForm->enableButtons(keyset, id);
+ tvForm->enableButtons(keyset, id);
+ inputForm->enableButtons(keyset, id);
+ adjustForm->enableButtons(keyset, id);
+ acForm->enableButtons(keyset, id);
+ audioDeviceForm->enableButtons(keyset, id);
+ cameraForm->enableButtons(keyset, id);
+ roombaForm->enableButtons(keyset, id);
+
+ // Also, set the label in the power search form:
+ powerSearchForm->setKeysetName(mainWindow->getCurrentFullName());
+
+ // Set up the advanced parameters:
+ advancedForm->setupForm(keyset, id);
+}
- PIRPanelList::iterator i = panelList.begin();
- while (i != panelList.end())
- {
- if (i->name == name)
- {
- break;
- }
- else if (i->displayed)
- {
- ++index;
- }
- ++i;
- }
- if (i == panelList.end())
+void PIRPanelManager::updateUserButtons()
+{
+ userForm->setupButtons();
+}
+
+
+void PIRPanelManager::useMainPanel()
+{
+ if (!altMainPanelFlag)
{
- // should throw an error message here!!!
+ // Already set correctly, nothing to do:
return;
}
- if (state == Qt::Unchecked && i->displayed)
- {
- hidePanel(name, index);
- i->displayed = false;
- }
- else if (state == Qt::Checked && !i->displayed)
- {
- showPanel(name, index);
- i->displayed = true;
- }
+ altMainPanelFlag = false;
+
+ updateTabSet();
}
-void PIRPanelManager::hidePanel(
- PIRPanelName name,
- int index)
+void PIRPanelManager::useAltMainPanel()
{
- switch (name)
+ if (altMainPanelFlag)
{
- case Main_Panel:
- if (mainForm) mainWindow->removePanel(index, mainForm);
- break;
-
- case Utility_Panel:
- if (utilityForm) mainWindow->removePanel(index, utilityForm);
- break;
+ // Already set correctly, nothing to do:
+ return;
+ }
- case Keypad_Panel:
- if (keypadForm) mainWindow->removePanel(index, keypadForm);
- break;
+ altMainPanelFlag = true;
- case Menu_Panel:
- if (menuForm) mainWindow->removePanel(index, menuForm);
- break;
+ updateTabSet();
+}
- case Media_Panel:
- if (mediaForm) mainWindow->removePanel(index, mediaForm);
- break;
- case Media2_Panel:
- if (media2Form) mainWindow->removePanel(index, media2Form);
- break;
+/*
+void PIRPanelManager::setupUniversalTabs()
+{
+ if (currentTabsName == Universal_Tabs) return;
- case Record_Panel:
- if (recordForm) mainWindow->removePanel(index, recordForm);
- break;
+ currentTabsName = Universal_Tabs;
+ updateTabSet();
+}
- case TV_Panel:
- if (tvForm) mainWindow->removePanel(index, tvForm);
- break;
- case Input_Panel:
- if (inputForm) mainWindow->removePanel(index, inputForm);
- break;
+void PIRPanelManager::setupTVTabs()
+{
+ if (currentTabsName == TV_Tabs) return;
- case Adjust_Panel:
- if (adjustForm) mainWindow->removePanel(index, adjustForm);
- break;
+ currentTabsName = TV_Tabs;
+ updateTabSet();
+}
- case AC_Panel:
- if (acForm) mainWindow->removePanel(index, acForm);
- break;
- case Favorites_Panel:
- if (favoritesForm) mainWindow->removePanel(index, favoritesForm);
- break;
+void PIRPanelManager::setupVideoTabs()
+{
+ if (currentTabsName == VideoMedia_Tabs) return;
- default:
- return;
- break;
- }
+ currentTabsName = VideoMedia_Tabs;
+ updateTabSet();
}
-void PIRPanelManager::showPanel(
- PIRPanelName name,
- int index)
+void PIRPanelManager::setupACTabs()
{
- switch (name)
- {
- case Main_Panel:
- if (!mainForm)
- {
- mainForm = new PIRMainForm(mainWindow);
- mainWindow->enableButtons();
- }
-
- mainWindow->insertPanel(
- index,
- mainForm,
- QString("Main Panel - power, volume, and channel controls"));
-
- break;
-
- case Utility_Panel:
- if (!utilityForm)
- {
- utilityForm = new PIRUtilityForm(mainWindow);
- mainWindow->enableButtons();
- }
-
- mainWindow->insertPanel(
- index,
- utilityForm,
- QString("Utility Panel - commonly used controls"));
-
- break;
-
- case Keypad_Panel:
- if (!keypadForm)
- {
- keypadForm = new PIRKeypadForm(mainWindow);
- mainWindow->enableButtons();
- }
-
- mainWindow->insertPanel(
- index,
- keypadForm,
- QString("Keypad Panel - numeric value entry"));
-
- break;
-
- case Menu_Panel:
- if (!menuForm)
- {
- menuForm = new PIRMenuForm(mainWindow);
- mainWindow->enableButtons();
- }
-
- mainWindow->insertPanel(
- index,
- menuForm,
- QString("Menu Panel - enter, exit, and navigate menus"));
-
- break;
-
- case Media_Panel:
- if (!mediaForm)
- {
- mediaForm = new PIRMediaForm(mainWindow);
- mainWindow->enableButtons();
- }
-
- mainWindow->insertPanel(
- index,
- mediaForm,
- QString("Media Panel - control over recorded data"));
-
- break;
-
- case Media2_Panel:
- if (!media2Form)
- {
- media2Form = new PIRMedia2Form(mainWindow);
- mainWindow->enableButtons();
- }
-
- mainWindow->insertPanel(
- index,
- media2Form,
- QString("Media2 Panel - additonal media controls"));
-
- 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)
- {
- tvForm = new PIRTVForm(mainWindow);
- mainWindow->enableButtons();
- }
-
- mainWindow->insertPanel(
- index,
- tvForm,
- QString("TV Panel - teletext and picture-in-picture"));
-
- break;
-
- case Input_Panel:
- if (!inputForm)
- {
- inputForm = new PIRInputForm(mainWindow);
- mainWindow->enableButtons();
- }
-
- mainWindow->insertPanel(
- index,
- inputForm,
- QString("Input Panel - manage data sources"));
-
- break;
-
- case Adjust_Panel:
- if (!adjustForm)
- {
- adjustForm = new PIRAdjustForm(mainWindow);
- mainWindow->enableButtons();
- }
-
- mainWindow->insertPanel(
- index,
- adjustForm,
- QString("Adjust Panel - modify audio and video"));
-
- break;
-
- case AC_Panel:
- if (!acForm)
- {
- acForm = new PIRAirConditionerForm(mainWindow);
- mainWindow->enableButtons();
- }
-
- mainWindow->insertPanel(
- index,
- acForm,
- QString("A/C Panel - air conditioner controls"));
-
- break;
-
- case Favorites_Panel:
- if (!favoritesForm)
- {
- favoritesForm = new PIRFavoritesForm(mainWindow);
- mainWindow->enableButtons();
- }
-
- mainWindow->insertPanel(
- index,
- favoritesForm,
- QString("Favorites Panel - memorized keysets"));
-
- break;
-
- default:
- break;
- }
+ if (currentTabsName == AC_Tabs) return;
+
+ currentTabsName = AC_Tabs;
+ updateTabSet();
}
-void PIRPanelManager::selectPrevFavKeyset()
+void PIRPanelManager::setupRecordTabs()
{
- // If the favorites form doesn't exist, no need to continue:
- if (!favoritesForm) return;
+ if (currentTabsName == Record_Tabs) return;
- favoritesForm->selectPrevFavKeyset();
+ currentTabsName = Record_Tabs;
+ updateTabSet();
}
+*/
-void PIRPanelManager::selectNextFavKeyset()
+void PIRPanelManager::setupTabs(
+ PIRTabBarName name)
{
- // If the favorites form doesn't exist, no need to continue:
- if (!favoritesForm) return;
+ if (currentTabsName == name) return;
- favoritesForm->selectNextFavKeyset();
+ currentTabsName = name;
+ updateTabSet();
}
-void PIRPanelManager::addFavoritesItem(
- PIRKeysetWidgetItem *item)
+void PIRPanelManager::gotoPreviousTabs()
{
- if (!favoritesForm)
+ PIRTabsCollection::const_iterator i = tabLists.find(currentTabsName);
+
+ if (i == tabLists.end())
+ {
+ // Couldn't find currentTabsName! Throw an error here?
+ return;
+ }
+
+ if (i == tabLists.begin())
{
- favoritesForm = new PIRFavoritesForm(mainWindow);
+ // Already at first collection, nothing to do:
+ return;
}
- favoritesForm->addItem(item);
+ --i;
+ currentTabsName = i->first;
+ updateTabSet();
}
-QListWidget *PIRPanelManager::getFavoritesListWidget()
+void PIRPanelManager::gotoNextTabs()
{
- if (!favoritesForm)
+ PIRTabsCollection::const_iterator i = tabLists.find(currentTabsName);
+
+ if (i == tabLists.end())
{
- favoritesForm = new PIRFavoritesForm(mainWindow);
+ // Couldn't find currentTabsName! Throw an error?
+ return;
}
- return favoritesForm->getFavoritesListWidget();
+ ++i;
+
+ if (i == tabLists.end())
+ {
+ // We're already at the last collection, nothing to do:
+ return;
+ }
+
+ currentTabsName = i->first;
+ updateTabSet();
}
+
+QComboBox *PIRPanelManager::getKeysetComboBox()
+{
+ return macroForm->getKeysetComboBox();
+}