X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=pirpanelmanager.cpp;h=c3dcaa5f336bb80300e2403408e71f03e5a9e00c;hb=HEAD;hp=23eca10ddb8cb167e74006ee4a4b5b12bb0d9adf;hpb=ba2bdf24764a4fdda9acf6526ca07c653e142ad4;p=pierogi diff --git a/pirpanelmanager.cpp b/pirpanelmanager.cpp index 23eca10..c3dcaa5 100644 --- a/pirpanelmanager.cpp +++ b/pirpanelmanager.cpp @@ -1,6 +1,7 @@ #include "pirpanelmanager.h" #include "forms/pirmainform.h" +#include "forms/piraltmainform.h" #include "forms/pirutilityform.h" #include "forms/pirkeypadform.h" #include "forms/pirmenuform.h" @@ -11,12 +12,28 @@ #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 +#include +#include + +// Debugging: +//#include +#include + +PIRPanelManager::PIRPanelManager( + MainWindow *mw): + mainForm(0), + altMainForm(0), utilityForm(0), keypadForm(0), menuForm(0), @@ -27,21 +44,221 @@ PIRPanelManager::PIRPanelManager(MainWindow *mw) 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; } @@ -55,349 +272,218 @@ PIRPanelManager::~PIRPanelManager() } -/* -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(); +}