From eff98c661e4e1258e24f9adb8030c24929350d61 Mon Sep 17 00:00:00 2001 From: thilo Date: Fri, 25 Nov 2011 23:48:18 +0000 Subject: [PATCH] *neutrino menu: fix 'memory ' of selected items in submenues Add small helper class to manage missing values e.g. needed for deallocated widget objects. This class we can also use for other things in future! In this context I added a vector for 'selected' values needed for deeper and deallocated submenues. The identification of widgets working now with a new widget parameter named 'w_index'. setSelected() and getSelected() functions are still working, but are not needed, if we use an index -add define for default widget index -add new header file for enums -adapted many menu classes for this parameter Hope it' works fine. If you find any menu without a 'memory', please add an index. git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-beta@1908 e54a6e83-5905-42d5-8d5c-058d10e6a962 --- src/gui/audioplayer_setup.cpp | 7 +- src/gui/audioplayer_setup.h | 2 +- src/gui/cec_setup.cpp | 3 +- src/gui/hdd_menu.cpp | 16 +++- src/gui/hdd_menu.h | 4 + src/gui/keybind_setup.cpp | 16 ++-- src/gui/keybind_setup.h | 2 +- src/gui/mediaplayer.cpp | 11 +-- src/gui/mediaplayer.h | 2 +- src/gui/miscsettings_menu.cpp | 17 ++--- src/gui/miscsettings_menu.h | 2 +- src/gui/network_setup.cpp | 11 ++- src/gui/network_setup.h | 2 +- src/gui/osd_setup.cpp | 23 +++--- src/gui/osd_setup.h | 2 +- src/gui/osdlang_setup.cpp | 10 +-- src/gui/osdlang_setup.h | 2 +- src/gui/parentallock_setup.cpp | 6 +- src/gui/parentallock_setup.h | 2 +- src/gui/pictureviewer_setup.cpp | 6 +- src/gui/pictureviewer_setup.h | 2 +- src/gui/proxyserver_setup.cpp | 4 +- src/gui/record_setup.cpp | 13 ++-- src/gui/record_setup.h | 2 +- src/gui/vfd_setup.cpp | 85 ++++++++++++--------- src/gui/vfd_setup.h | 11 ++- src/gui/widget/menue.cpp | 61 ++++++++++++---- src/gui/widget/menue.h | 27 ++++++- src/gui/zapit_setup.cpp | 3 +- src/neutrino.h | 5 +- src/neutrino_menue.h | 126 ++++++++++++++++++++++++++++++++ 31 files changed, 340 insertions(+), 145 deletions(-) create mode 100644 src/neutrino_menue.h diff --git a/src/gui/audioplayer_setup.cpp b/src/gui/audioplayer_setup.cpp index 23e4a8c8f..4b1a44a84 100644 --- a/src/gui/audioplayer_setup.cpp +++ b/src/gui/audioplayer_setup.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include @@ -51,11 +52,9 @@ #include - CAudioPlayerSetup::CAudioPlayerSetup() { width = w_max (40, 10); - selected = -1; } CAudioPlayerSetup::~CAudioPlayerSetup() @@ -99,8 +98,7 @@ const CMenuOptionChooser::keyval AUDIOPLAYER_DISPLAY_ORDER_OPTIONS[AUDIOPLAYER_D /*shows the audio setup menue*/ int CAudioPlayerSetup::showAudioPlayerSetup() { - CMenuWidget* audioplayerSetup = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width); - audioplayerSetup->setSelected(selected); + CMenuWidget* audioplayerSetup = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_AUDIOSETUP); audioplayerSetup->addIntroItems(LOCALE_AUDIOPLAYER_NAME); @@ -122,7 +120,6 @@ int CAudioPlayerSetup::showAudioPlayerSetup() int res = audioplayerSetup->exec (NULL, ""); audioplayerSetup->hide (); - selected = audioplayerSetup->getSelected(); delete audioplayerSetup; return res; } diff --git a/src/gui/audioplayer_setup.h b/src/gui/audioplayer_setup.h index 9f54b8cd5..4975ebcf1 100644 --- a/src/gui/audioplayer_setup.h +++ b/src/gui/audioplayer_setup.h @@ -39,7 +39,7 @@ class CAudioPlayerSetup : public CMenuTarget { private: - int width, selected; + int width; int showAudioPlayerSetup(); diff --git a/src/gui/cec_setup.cpp b/src/gui/cec_setup.cpp index 59431f924..64ccdd662 100644 --- a/src/gui/cec_setup.cpp +++ b/src/gui/cec_setup.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include @@ -84,7 +85,7 @@ const CMenuOptionChooser::keyval VIDEOMENU_HDMI_CEC_MODE_OPTIONS[VIDEOMENU_HDMI_ void CCECSetup::showMenu() { //menue init - CMenuWidget *cec = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width); + CMenuWidget *cec = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_CEC); cec->setSelected(selected); cec->addIntroItems(LOCALE_VIDEOMENU_HDMI_CEC); diff --git a/src/gui/hdd_menu.cpp b/src/gui/hdd_menu.cpp index c6040faf5..612c48679 100644 --- a/src/gui/hdd_menu.cpp +++ b/src/gui/hdd_menu.cpp @@ -47,8 +47,9 @@ #include #include +#include + #include -#include "gui/widget/menue.h" #include "gui/widget/stringinput.h" #include "gui/widget/messagebox.h" #include "gui/widget/hintbox.h" @@ -60,6 +61,7 @@ #include #include +#include static int my_filter(const struct dirent * dent) @@ -69,6 +71,16 @@ static int my_filter(const struct dirent * dent) return 0; } +CHDDMenuHandler::CHDDMenuHandler() +{ + width = w_max (58, 10); +} + +CHDDMenuHandler::~CHDDMenuHandler() +{ + +} + int CHDDMenuHandler::exec(CMenuTarget* parent, const std::string &/*actionkey*/) { if (parent) @@ -95,7 +107,7 @@ int CHDDMenuHandler::doMenu () } - CMenuWidget* hddmenu = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, 58); + CMenuWidget* hddmenu = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_DRIVESETUP); hddmenu->addIntroItems(LOCALE_HDD_SETTINGS); hddmenu->addItem(new CMenuForwarder(LOCALE_HDD_ACTIVATE, true, "", new CHDDDestExec(), NULL, CRCInput::RC_red,NEUTRINO_ICON_BUTTON_RED)); diff --git a/src/gui/hdd_menu.h b/src/gui/hdd_menu.h index 36bffde05..ce80e7470 100644 --- a/src/gui/hdd_menu.h +++ b/src/gui/hdd_menu.h @@ -46,7 +46,11 @@ public: class CHDDMenuHandler : public CMenuTarget { + private: + int width; public: + CHDDMenuHandler(); + ~CHDDMenuHandler(); int exec( CMenuTarget* parent, const std::string &actionkey); int doMenu(); }; diff --git a/src/gui/keybind_setup.cpp b/src/gui/keybind_setup.cpp index 3ab3c8aed..d8471601b 100644 --- a/src/gui/keybind_setup.cpp +++ b/src/gui/keybind_setup.cpp @@ -40,6 +40,7 @@ #include #include #include +#include #include #include @@ -57,7 +58,6 @@ CKeybindSetup::CKeybindSetup() keySetupNotifier->changeNotify(NONEXISTANT_LOCALE, NULL); width = w_max (40, 10); - selected = -1; } CKeybindSetup::~CKeybindSetup() @@ -166,11 +166,10 @@ const key_settings_struct_t key_settings[CKeybindSetup::KEYBINDS_COUNT] = int CKeybindSetup::showKeySetup() { //keysetup menu - CMenuWidget* keySettings = new CMenuWidget(LOCALE_MAINSETTINGS_HEAD, NEUTRINO_ICON_KEYBINDING, width); + CMenuWidget* keySettings = new CMenuWidget(LOCALE_MAINSETTINGS_HEAD, NEUTRINO_ICON_KEYBINDING, width, 576, MN_WIDGET_ID_KEYSETUP); //keybindings menu - CMenuWidget* bindSettings = new CMenuWidget(LOCALE_MAINSETTINGS_HEAD, NEUTRINO_ICON_KEYBINDING, width); - keySettings->setSelected(selected); + CMenuWidget* bindSettings = new CMenuWidget(LOCALE_MAINSETTINGS_HEAD, NEUTRINO_ICON_KEYBINDING, width, 576, MN_WIDGET_ID_KEYSETUP_KEYBINDING); keySettings->addIntroItems(LOCALE_MAINSETTINGS_KEYBINDING); //keybindings @@ -201,7 +200,6 @@ int CKeybindSetup::showKeySetup() int res = keySettings->exec(NULL, ""); keySettings->hide(); - selected = keySettings->getSelected(); delete keySettings; return res; } @@ -215,22 +213,22 @@ void CKeybindSetup::showKeyBindSetup(CMenuWidget *bindSettings) keychooser[i] = new CKeyChooser(key_settings[i].keyvalue_p, key_settings[i].keydescription/*as head caption*/, NEUTRINO_ICON_SETTINGS); //modes - CMenuWidget* bindSettings_modes = new CMenuWidget(LOCALE_KEYBINDINGMENU_HEAD, NEUTRINO_ICON_KEYBINDING, width); + CMenuWidget* bindSettings_modes = new CMenuWidget(LOCALE_KEYBINDINGMENU_HEAD, NEUTRINO_ICON_KEYBINDING, width, 576, MN_WIDGET_ID_KEYSETUP_KEYBINDING_MODES); showKeyBindModeSetup(bindSettings_modes); bindSettings->addItem(new CMenuForwarder(LOCALE_KEYBINDINGMENU_MODECHANGE, true, NULL, bindSettings_modes, NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); // channellist keybindings - CMenuWidget* bindSettings_chlist = new CMenuWidget(LOCALE_KEYBINDINGMENU_HEAD, NEUTRINO_ICON_KEYBINDING, width); + CMenuWidget* bindSettings_chlist = new CMenuWidget(LOCALE_KEYBINDINGMENU_HEAD, NEUTRINO_ICON_KEYBINDING, width, 576, MN_WIDGET_ID_KEYSETUP_KEYBINDING_CHANNELLIST); showKeyBindChannellistSetup(bindSettings_chlist); bindSettings->addItem(new CMenuForwarder(LOCALE_KEYBINDINGMENU_CHANNELLIST, true, NULL, bindSettings_chlist, NULL, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN)); // Zapping keys quickzap - CMenuWidget* bindSettings_qzap = new CMenuWidget(LOCALE_KEYBINDINGMENU_HEAD, NEUTRINO_ICON_KEYBINDING, width); + CMenuWidget* bindSettings_qzap = new CMenuWidget(LOCALE_KEYBINDINGMENU_HEAD, NEUTRINO_ICON_KEYBINDING, width, 576, MN_WIDGET_ID_KEYSETUP_KEYBINDING_QUICKZAP); showKeyBindQuickzapSetup(bindSettings_qzap); bindSettings->addItem(new CMenuForwarder(LOCALE_KEYBINDINGMENU_QUICKZAP, true, NULL, bindSettings_qzap, NULL, CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW)); //movieplayer - CMenuWidget* bindSettings_mplayer = new CMenuWidget(LOCALE_KEYBINDINGMENU_HEAD, NEUTRINO_ICON_KEYBINDING, width); + CMenuWidget* bindSettings_mplayer = new CMenuWidget(LOCALE_KEYBINDINGMENU_HEAD, NEUTRINO_ICON_KEYBINDING, width, 576, MN_WIDGET_ID_KEYSETUP_KEYBINDING_MOVIEPLAYER); showKeyBindMovieplayerSetup(bindSettings_mplayer); bindSettings->addItem(new CMenuForwarder(LOCALE_MAINMENU_MOVIEPLAYER, true, NULL, bindSettings_mplayer, NULL, CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE)); diff --git a/src/gui/keybind_setup.h b/src/gui/keybind_setup.h index 517dc119d..d7bc655cc 100644 --- a/src/gui/keybind_setup.h +++ b/src/gui/keybind_setup.h @@ -91,7 +91,7 @@ class CKeybindSetup : public CMenuTarget CKeySetupNotifier *keySetupNotifier; CKeyChooser * keychooser[KEYBINDS_COUNT]; - int width, selected; + int width; int showKeySetup(); void showKeyBindSetup(CMenuWidget *bindSettings); diff --git a/src/gui/mediaplayer.cpp b/src/gui/mediaplayer.cpp index 0cec633f5..300368f15 100644 --- a/src/gui/mediaplayer.cpp +++ b/src/gui/mediaplayer.cpp @@ -35,7 +35,7 @@ #include #include - +#include #include "gui/movieplayer.h" #include "gui/pictureviewer.h" @@ -56,7 +56,6 @@ CMediaPlayerMenu::CMediaPlayerMenu() setUsageMode(); width = w_max (40, 10); //% - selected = -1; audioPlayer = NULL; inetPlayer = NULL; @@ -112,7 +111,7 @@ int CMediaPlayerMenu::exec(CMenuTarget* parent, const std::string &actionKey) //show selectable mediaplayer items void CMediaPlayerMenu::showMenu() { - CMenuWidget *media = new CMenuWidget(menu_title, NEUTRINO_ICON_MULTIMEDIA, width); + CMenuWidget *media = new CMenuWidget(menu_title, NEUTRINO_ICON_MULTIMEDIA, width, 576, MN_WIDGET_ID_MEDIA); CMenuForwarder *fw_audio = NULL; CMenuForwarder *fw_inet = NULL; @@ -125,9 +124,6 @@ void CMediaPlayerMenu::showMenu() if (usage_mode != MODE_VIDEO) { - //menue init - media->setSelected(selected); - //audio player neutrino_msg_t audio_rc = usage_mode == MODE_AUDIO ? CRCInput::RC_audio:CRCInput::RC_red; const char* audio_btn = usage_mode == MODE_AUDIO ? "" : NEUTRINO_ICON_BUTTON_RED; @@ -141,7 +137,7 @@ void CMediaPlayerMenu::showMenu() if (usage_mode == MODE_DEFAULT) { //movieplayer - moviePlayer = new CMenuWidget(LOCALE_MAINMENU_MEDIA, NEUTRINO_ICON_MULTIMEDIA, width); + moviePlayer = new CMenuWidget(LOCALE_MAINMENU_MEDIA, NEUTRINO_ICON_MULTIMEDIA, width, 576, MN_WIDGET_ID_MEDIA_MOVIEPLAYER); fw_mp = new CMenuForwarder(LOCALE_MAINMENU_MOVIEPLAYER, true, NULL, moviePlayer, NULL, CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW); //pictureviewer @@ -188,7 +184,6 @@ void CMediaPlayerMenu::showMenu() media->exec(NULL, ""); media->hide(); - selected = media->getSelected(); delete media; setUsageMode();//set default usage_mode } diff --git a/src/gui/mediaplayer.h b/src/gui/mediaplayer.h index b691cae9c..ba3cf35e8 100644 --- a/src/gui/mediaplayer.h +++ b/src/gui/mediaplayer.h @@ -40,7 +40,7 @@ class CMediaPlayerMenu : public CMenuTarget CAudioPlayerGui *audioPlayer; CAudioPlayerGui *inetPlayer; - int width, selected, usage_mode; + int width, usage_mode; neutrino_locale_t menu_title; void showMenu(); diff --git a/src/gui/miscsettings_menu.cpp b/src/gui/miscsettings_menu.cpp index 263339c05..c2447327e 100644 --- a/src/gui/miscsettings_menu.cpp +++ b/src/gui/miscsettings_menu.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include "gui/miscsettings_menu.h" @@ -58,8 +59,6 @@ extern CPlugins * g_PluginList; CMiscMenue::CMiscMenue() { width = w_max (40, 10); - - selected = -1; } CMiscMenue::~CMiscMenue() @@ -162,31 +161,30 @@ int CMiscMenue::showMiscSettingsMenu() { //misc settings fanNotifier = new CFanControlNotifier(); - CMenuWidget *misc_menue = new CMenuWidget(LOCALE_MAINSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width); - misc_menue->setSelected(selected); + CMenuWidget *misc_menue = new CMenuWidget(LOCALE_MAINSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_MISCSETUP); misc_menue->addIntroItems(LOCALE_MISCSETTINGS_HEAD); //general - CMenuWidget *misc_menue_general = new CMenuWidget(LOCALE_MISCSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width); + CMenuWidget *misc_menue_general = new CMenuWidget(LOCALE_MISCSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_MISCSETUP_GENERAL); showMiscSettingsMenuGeneral(misc_menue_general); misc_menue->addItem(new CMenuForwarder(LOCALE_MISCSETTINGS_GENERAL, true, NULL, misc_menue_general, NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); //energy, shutdown if(cs_get_revision() > 7) { - CMenuWidget *misc_menue_energy = new CMenuWidget(LOCALE_MISCSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width); + CMenuWidget *misc_menue_energy = new CMenuWidget(LOCALE_MISCSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_MISCSETUP_ENERGY); showMiscSettingsMenuEnergy(misc_menue_energy); misc_menue->addItem(new CMenuForwarder(LOCALE_MISCSETTINGS_ENERGY, true, NULL, misc_menue_energy, NULL, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN)); } //epg - CMenuWidget *misc_menue_epg = new CMenuWidget(LOCALE_MISCSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width); + CMenuWidget *misc_menue_epg = new CMenuWidget(LOCALE_MISCSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_MISCSETUP_EPG); showMiscSettingsMenuEpg(misc_menue_epg); misc_menue->addItem(new CMenuForwarder(LOCALE_MISCSETTINGS_EPG_HEAD, true, NULL, misc_menue_epg, NULL, CRCInput::RC_yellow,NEUTRINO_ICON_BUTTON_YELLOW)); //filebrowser settings - CMenuWidget *misc_menue_fbrowser = new CMenuWidget(LOCALE_MISCSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width); + CMenuWidget *misc_menue_fbrowser = new CMenuWidget(LOCALE_MISCSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_MISCSETUP_FILEBROWSER); showMiscSettingsMenuFBrowser(misc_menue_fbrowser); misc_menue->addItem( new CMenuForwarder(LOCALE_FILEBROWSER_HEAD, true, NULL, misc_menue_fbrowser, NULL, CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE)); @@ -196,7 +194,7 @@ int CMiscMenue::showMiscSettingsMenu() misc_menue->addItem(new CMenuForwarder(LOCALE_VIDEOMENU_HDMI_CEC, true, NULL, new CCECSetup() , NULL, CRCInput::RC_1)); //channellist - CMenuWidget *misc_menue_chanlist = new CMenuWidget(LOCALE_MISCSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width); + CMenuWidget *misc_menue_chanlist = new CMenuWidget(LOCALE_MISCSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_MISCSETUP_CHANNELLIST); showMiscSettingsMenuChanlist(misc_menue_chanlist); misc_menue->addItem( new CMenuForwarder(LOCALE_MISCSETTINGS_CHANNELLIST, true, NULL, misc_menue_chanlist, NULL, CRCInput::RC_2)); @@ -212,7 +210,6 @@ int CMiscMenue::showMiscSettingsMenu() int res = misc_menue->exec(NULL, ""); misc_menue->hide(); - selected = misc_menue->getSelected(); delete fanNotifier; delete misc_menue; return res; diff --git a/src/gui/miscsettings_menu.h b/src/gui/miscsettings_menu.h index f99938f81..16863bb3e 100644 --- a/src/gui/miscsettings_menu.h +++ b/src/gui/miscsettings_menu.h @@ -40,7 +40,7 @@ class CMiscMenue : public CMenuTarget { private: CFanControlNotifier *fanNotifier; - int width, selected; + int width; int showMiscSettingsMenu(); void showMiscSettingsMenuGeneral(CMenuWidget *ms_general); diff --git a/src/gui/network_setup.cpp b/src/gui/network_setup.cpp index 85338fb35..6f1eec3a5 100644 --- a/src/gui/network_setup.cpp +++ b/src/gui/network_setup.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include @@ -62,7 +63,6 @@ CNetworkSetup::CNetworkSetup(bool wizard_mode) is_wizard = wizard_mode; width = w_max (40, 10); - selected = -1; //readNetworkSettings(); } @@ -205,9 +205,8 @@ int CNetworkSetup::showNetworkSetup() backupNetworkSettings(); //menue init - CMenuWidget* networkSettings = new CMenuWidget(LOCALE_MAINSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width); + CMenuWidget* networkSettings = new CMenuWidget(LOCALE_MAINSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_NETWORKSETUP); networkSettings->setWizardMode(is_wizard); - networkSettings->setSelected(selected); //apply button CMenuForwarder *m0 = new CMenuForwarder(LOCALE_NETWORKMENU_SETUPNOW, true, NULL, this, "networkapply", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED); @@ -296,12 +295,12 @@ int CNetworkSetup::showNetworkSetup() } //------------------------------------------------ //ntp submenu - CMenuWidget* ntp = new CMenuWidget(LOCALE_MAINSETTINGS_NETWORK, NEUTRINO_ICON_SETTINGS, width); + CMenuWidget* ntp = new CMenuWidget(LOCALE_MAINSETTINGS_NETWORK, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_NETWORKSETUP_NTP); networkSettings->addItem(new CMenuForwarder(LOCALE_NETWORKMENU_NTPTITLE, true, NULL, ntp, NULL, CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW)); showNetworkNTPSetup(ntp); //nfs mount submenu - CMenuWidget* networkmounts = new CMenuWidget(LOCALE_MAINSETTINGS_NETWORK, NEUTRINO_ICON_SETTINGS, width); + CMenuWidget* networkmounts = new CMenuWidget(LOCALE_MAINSETTINGS_NETWORK, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_NETWORKSETUP_MOUNTS); networkSettings->addItem(new CMenuForwarder(LOCALE_NETWORKMENU_MOUNT, true, NULL, networkmounts, NULL, CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE)); showNetworkNFSMounts(networkmounts); @@ -319,7 +318,7 @@ int CNetworkSetup::showNetworkSetup() if(res == menu_return::RETURN_EXIT) break; } - selected = networkSettings->getSelected(); + delete networkSettings; return ret; } diff --git a/src/gui/network_setup.h b/src/gui/network_setup.h index f79f08da8..1c8a08c1b 100644 --- a/src/gui/network_setup.h +++ b/src/gui/network_setup.h @@ -45,7 +45,7 @@ class CNetworkSetup : public CMenuTarget, CChangeObserver private: CNetworkConfig *networkConfig; - int width, selected; + int width; bool is_wizard; diff --git a/src/gui/osd_setup.cpp b/src/gui/osd_setup.cpp index 87516b7db..aa1e008bc 100644 --- a/src/gui/osd_setup.cpp +++ b/src/gui/osd_setup.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include #include @@ -71,7 +72,6 @@ COsdSetup::COsdSetup(bool wizard_mode) is_wizard = wizard_mode; width = w_max (40, 10); //% - selected = -1; } COsdSetup::~COsdSetup() @@ -214,7 +214,7 @@ int COsdSetup::exec(CMenuTarget* parent, const std::string &actionKey) snprintf(val_x,sizeof(val_x), "%03d",g_settings.screen_xres); snprintf(val_y,sizeof(val_y), "%03d",g_settings.screen_yres); - CMenuWidget fontscale(LOCALE_FONTMENU_HEAD, NEUTRINO_ICON_COLORS); + CMenuWidget fontscale(LOCALE_FONTMENU_HEAD, NEUTRINO_ICON_COLORS, width, 576, MN_WIDGET_ID_OSDSETUP_FONTSCALE); fontscale.addIntroItems(LOCALE_FONTMENU_SCALING); CStringInput * xres_count = new CStringInput(LOCALE_FONTMENU_SCALING_X, val_x,50,200, 3, LOCALE_FONTMENU_SCALING, LOCALE_FONTMENU_SCALING_X_HINT2, "0123456789 "); @@ -385,12 +385,11 @@ const CMenuOptionChooser::keyval OPTIONS_COLORED_EVENTS_OPTIONS[OPTIONS_COLORED_ int COsdSetup::showOsdSetup() { //osd main menu - /*CMenuWidget */osd_menu = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_COLORS, width); + osd_menu = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_COLORS, width, 576, MN_WIDGET_ID_OSDSETUP); osd_menu->setWizardMode(is_wizard); - osd_menu->setSelected(selected); //menu colors - CMenuWidget *osd_menu_colors = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_COLORS, width); + CMenuWidget *osd_menu_colors = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_COLORS, width, 576, MN_WIDGET_ID_OSDSETUP_MENUCOLORS); //intro with subhead and back button osd_menu->addIntroItems(LOCALE_MAINSETTINGS_OSD); @@ -400,12 +399,12 @@ int COsdSetup::showOsdSetup() osd_menu->addItem(new CMenuForwarder(LOCALE_COLORMENU_MENUCOLORS, true, NULL, osd_menu_colors, NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); //fonts - CMenuWidget *osd_menu_fonts = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_COLORS, width); + CMenuWidget *osd_menu_fonts = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_COLORS, width, 576, MN_WIDGET_ID_OSDSETUP_FONT); showOsdFontSizeSetup(osd_menu_fonts); osd_menu->addItem(new CMenuForwarder(LOCALE_FONTMENU_HEAD, true, NULL, osd_menu_fonts, NULL, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN)); //timeouts - CMenuWidget *osd_menu_timing = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width); + CMenuWidget *osd_menu_timing = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_OSDSETUP_TIMEOUT); showOsdTimeoutSetup(osd_menu_timing); osd_menu->addItem(new CMenuForwarder(LOCALE_COLORMENU_TIMING, true, NULL, osd_menu_timing, NULL, CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW)); @@ -413,12 +412,12 @@ int COsdSetup::showOsdSetup() osd_menu->addItem(new CMenuForwarder(LOCALE_VIDEOMENU_SCREENSETUP, true, NULL, new CScreenSetup(), NULL, CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE)); //infobar - CMenuWidget *osd_menu_infobar = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width); + CMenuWidget *osd_menu_infobar = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_OSDSETUP_INFOBAR); showOsdInfobarSetup(osd_menu_infobar); osd_menu->addItem(new CMenuForwarder(LOCALE_MISCSETTINGS_INFOBAR, true, NULL, osd_menu_infobar, NULL, CRCInput::RC_1)); //channellist - CMenuWidget *osd_menu_chanlist = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width); + CMenuWidget *osd_menu_chanlist = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_OSDSETUP_CHANNELLIST); showOsdChanlistSetup(osd_menu_chanlist); osd_menu->addItem( new CMenuForwarder(LOCALE_MISCSETTINGS_CHANNELLIST, true, NULL, osd_menu_chanlist, NULL, CRCInput::RC_2)); @@ -441,7 +440,6 @@ int COsdSetup::showOsdSetup() int res = osd_menu->exec(NULL, ""); osd_menu->hide(); - selected = osd_menu->getSelected(); delete osd_menu; delete radiotextNotifier; return res; @@ -560,9 +558,11 @@ void COsdSetup::showOsdFontSizeSetup(CMenuWidget *menu_fonts) //submenu font scaling fontSettings->addItem(new CMenuForwarder(LOCALE_FONTMENU_SCALING, true, NULL, this, "font_scaling", CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE)); //fontSettings->addItem( new CMenuForwarder(LOCALE_EPGPLUS_SELECT_FONT_NAME, true, NULL, this, "select_font")); + + mn_widget_id_t w_index = MN_WIDGET_ID_OSDSETUP_FONTSIZE_MENU; for (int i = 0; i < 6; i++) { - CMenuWidget *fontSettingsSubMenu = new CMenuWidget(LOCALE_FONTMENU_HEAD, NEUTRINO_ICON_KEYBINDING); + CMenuWidget *fontSettingsSubMenu = new CMenuWidget(LOCALE_FONTMENU_HEAD, NEUTRINO_ICON_KEYBINDING, width, 576, w_index); fontSettingsSubMenu->addIntroItems(font_sizes_groups[i].groupname); @@ -574,6 +574,7 @@ void COsdSetup::showOsdFontSizeSetup(CMenuWidget *menu_fonts) fontSettingsSubMenu->addItem(new CMenuForwarder(LOCALE_OPTIONS_DEFAULT, true, NULL, this, font_sizes_groups[i].actionkey)); fontSettings->addItem(new CMenuForwarder(font_sizes_groups[i].groupname, true, NULL, fontSettingsSubMenu, "", CRCInput::convertDigitToKey(i+1))); + w_index++; } } diff --git a/src/gui/osd_setup.h b/src/gui/osd_setup.h index 5d397949a..048eaabc9 100644 --- a/src/gui/osd_setup.h +++ b/src/gui/osd_setup.h @@ -49,7 +49,7 @@ class COsdSetup : public CMenuTarget, public CChangeObserver CMenuWidget *osd_menu; int tmp_virtual_zap_mode; - int width, selected; + int width; bool is_wizard; diff --git a/src/gui/osdlang_setup.cpp b/src/gui/osdlang_setup.cpp index cfc4c3e68..bb1b42574 100644 --- a/src/gui/osdlang_setup.cpp +++ b/src/gui/osdlang_setup.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include @@ -57,7 +58,6 @@ COsdLangSetup::COsdLangSetup(bool wizard_mode) is_wizard = wizard_mode; width = w_max (45, 10); - selected = -1; } COsdLangSetup::~COsdLangSetup() @@ -80,15 +80,14 @@ int COsdLangSetup::exec(CMenuTarget* parent, const std::string &/*actionKey*/) int COsdLangSetup::showLocalSetup() { //main local setup - CMenuWidget *localSettings = new CMenuWidget(LOCALE_MAINSETTINGS_HEAD, NEUTRINO_ICON_LANGUAGE, width); + CMenuWidget *localSettings = new CMenuWidget(LOCALE_MAINSETTINGS_HEAD, NEUTRINO_ICON_LANGUAGE, width, 576, MN_WIDGET_ID_LANGUAGESETUP); localSettings->setWizardMode(is_wizard); - localSettings->setSelected(selected); //add subhead and back button localSettings->addIntroItems(LOCALE_LANGUAGESETUP_HEAD); //language setup - CMenuWidget * osdl_setup = new CMenuWidget(LOCALE_LANGUAGESETUP_OSD, NEUTRINO_ICON_LANGUAGE/*, width*/); + CMenuWidget * osdl_setup = new CMenuWidget(LOCALE_LANGUAGESETUP_OSD, NEUTRINO_ICON_LANGUAGE, width, 576, MN_WIDGET_ID_LANGUAGESETUP_LOCALE); showLanguageSetup(osdl_setup); localSettings->addItem(new CMenuForwarder(LOCALE_LANGUAGESETUP_OSD, true, NULL, osdl_setup, NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); @@ -99,7 +98,7 @@ int COsdLangSetup::showLocalSetup() //prefered audio language CLangSelectNotifier *langNotifier = new CLangSelectNotifier(); - CMenuWidget * prefMenu = new CMenuWidget(LOCALE_AUDIOMENU_PREF_LANGUAGES, NEUTRINO_ICON_LANGUAGE/*, width*/); + CMenuWidget * prefMenu = new CMenuWidget(LOCALE_AUDIOMENU_PREF_LANGUAGES, NEUTRINO_ICON_LANGUAGE, width, 576, MN_WIDGET_ID_LANGUAGESETUP_PREFAUDIO_LANGUAGE); //call menue for prefered audio languages showPrefMenu(prefMenu, langNotifier); localSettings->addItem(new CMenuForwarder(LOCALE_AUDIOMENU_PREF_LANGUAGES, true, NULL, prefMenu, NULL, CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW)); @@ -107,7 +106,6 @@ int COsdLangSetup::showLocalSetup() int res = localSettings->exec(NULL, ""); localSettings->hide(); - selected = localSettings->getSelected(); delete localSettings; return res; } diff --git a/src/gui/osdlang_setup.h b/src/gui/osdlang_setup.h index 9f775a5c9..5add67954 100644 --- a/src/gui/osdlang_setup.h +++ b/src/gui/osdlang_setup.h @@ -51,7 +51,7 @@ class CLangSelectNotifier : public CChangeObserver class COsdLangSetup : public CMenuTarget, CChangeObserver { private: - int width, selected; + int width; bool is_wizard; diff --git a/src/gui/parentallock_setup.cpp b/src/gui/parentallock_setup.cpp index 26b90ec26..1c99c75ab 100644 --- a/src/gui/parentallock_setup.cpp +++ b/src/gui/parentallock_setup.cpp @@ -37,6 +37,7 @@ #include #include +#include #include #include @@ -50,7 +51,6 @@ CParentalSetup::CParentalSetup() { width = w_max (40, 10); //% - selected = -1; } CParentalSetup::~CParentalSetup() @@ -101,8 +101,7 @@ extern bool parentallocked; void CParentalSetup::showParentalSetup() { //menue init - CMenuWidget* plock = new CMenuWidget(LOCALE_MAINSETTINGS_HEAD, NEUTRINO_ICON_LOCK, width); - plock->setSelected(selected); + CMenuWidget* plock = new CMenuWidget(LOCALE_MAINSETTINGS_HEAD, NEUTRINO_ICON_LOCK, width, 576, MN_WIDGET_ID_PLOCKSETUP); //subhead plock->addItem( new CMenuSeparator(CMenuSeparator::ALIGN_LEFT | CMenuSeparator::SUB_HEAD | CMenuSeparator::STRING, LOCALE_PARENTALLOCK_PARENTALLOCK)); @@ -119,6 +118,5 @@ void CParentalSetup::showParentalSetup() plock->exec(NULL, ""); plock->hide(); - selected = plock->getSelected(); delete plock; } diff --git a/src/gui/parentallock_setup.h b/src/gui/parentallock_setup.h index f3006a858..a7af5c69e 100644 --- a/src/gui/parentallock_setup.h +++ b/src/gui/parentallock_setup.h @@ -38,7 +38,7 @@ class CParentalSetup : public CMenuTarget { private: - int width, selected; + int width; void showParentalSetup(); diff --git a/src/gui/pictureviewer_setup.cpp b/src/gui/pictureviewer_setup.cpp index 110f9b542..1afc52ef6 100644 --- a/src/gui/pictureviewer_setup.cpp +++ b/src/gui/pictureviewer_setup.cpp @@ -38,6 +38,7 @@ #include #include +#include #include #include @@ -54,7 +55,6 @@ CPictureViewerSetup::CPictureViewerSetup() { width = w_max (40, 10); - selected = -1; } CPictureViewerSetup::~CPictureViewerSetup() @@ -100,8 +100,7 @@ const CMenuOptionChooser::keyval PICTUREVIEWER_SCALING_OPTIONS[PICTUREVIEWER_SCA int CPictureViewerSetup::showPictureViewerSetup() { - CMenuWidget* picviewsetup = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width); - picviewsetup->setSelected(selected); + CMenuWidget* picviewsetup = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_PVIEWERSETUP); // intros: back ande save picviewsetup->addIntroItems(LOCALE_PICTUREVIEWER_HEAD); @@ -113,7 +112,6 @@ int CPictureViewerSetup::showPictureViewerSetup() int res = picviewsetup->exec(NULL, ""); picviewsetup->hide(); - selected = picviewsetup->getSelected(); delete picviewsetup; return res; } diff --git a/src/gui/pictureviewer_setup.h b/src/gui/pictureviewer_setup.h index 84016a78c..99ae6c06c 100644 --- a/src/gui/pictureviewer_setup.h +++ b/src/gui/pictureviewer_setup.h @@ -41,7 +41,7 @@ class CPictureViewerSetup : public CMenuTarget { private: - int width, selected; + int width; int showPictureViewerSetup(); diff --git a/src/gui/proxyserver_setup.cpp b/src/gui/proxyserver_setup.cpp index 8e2a2fb17..7390f9744 100644 --- a/src/gui/proxyserver_setup.cpp +++ b/src/gui/proxyserver_setup.cpp @@ -36,6 +36,7 @@ #include #include +#include #include @@ -43,7 +44,6 @@ #include - CProxySetup::CProxySetup(const neutrino_locale_t title, const char * const IconName ) { menue_title = title; @@ -75,7 +75,7 @@ int CProxySetup::exec(CMenuTarget* parent, const std::string &/*actionKey*/) int CProxySetup::showProxySetup() { //init - CMenuWidget * mn = new CMenuWidget(menue_title, menue_icon, width); + CMenuWidget * mn = new CMenuWidget(menue_title, menue_icon, width, 576, MN_WIDGET_ID_PROXYSETUP); neutrino_locale_t subtitle = (menue_title == LOCALE_FLASHUPDATE_PROXYSERVER_SEP ? NONEXISTANT_LOCALE : LOCALE_FLASHUPDATE_PROXYSERVER_SEP); mn->addIntroItems(subtitle); diff --git a/src/gui/record_setup.cpp b/src/gui/record_setup.cpp index 0ece85676..f3c422eb4 100644 --- a/src/gui/record_setup.cpp +++ b/src/gui/record_setup.cpp @@ -36,7 +36,7 @@ #include #include - +#include #include #include "gui/record_setup.h" @@ -56,7 +56,6 @@ CRecordSetup::CRecordSetup() { width = w_max (50, 10); //% - selected = -1; } CRecordSetup::~CRecordSetup() @@ -170,8 +169,7 @@ const CMenuOptionChooser::keyval END_OF_RECORDING[END_OF_RECORDING_COUNT] = int CRecordSetup::showRecordSetup() { //menue init - CMenuWidget* recordingSettings = new CMenuWidget(LOCALE_MAINSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width); - recordingSettings->setSelected(selected); + CMenuWidget* recordingSettings = new CMenuWidget(LOCALE_MAINSETTINGS_HEAD, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_RECORDSETUP); //apply settings recordingSettings->addIntroItems(LOCALE_MAINSETTINGS_RECORDING); @@ -194,23 +192,22 @@ int CRecordSetup::showRecordSetup() recordingSettings->addItem(GenericMenuSeparatorLine); //timeshift - CMenuWidget* recordingTsSettings = new CMenuWidget(LOCALE_MAINSETTINGS_RECORDING, NEUTRINO_ICON_SETTINGS, width); + CMenuWidget* recordingTsSettings = new CMenuWidget(LOCALE_MAINSETTINGS_RECORDING, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_RECORDSETUP_TIMESHIFT); showRecordTimeShiftSetup(recordingTsSettings); recordingSettings->addItem(new CMenuForwarder(LOCALE_RECORDINGMENU_TIMESHIFT, true, NULL, recordingTsSettings, NULL, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN)); //timersettings - CMenuWidget* recordingTimerSettings = new CMenuWidget(LOCALE_MAINSETTINGS_RECORDING, NEUTRINO_ICON_SETTINGS, width); + CMenuWidget* recordingTimerSettings = new CMenuWidget(LOCALE_MAINSETTINGS_RECORDING, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_RECORDSETUP_TIMERSETTINGS); showRecordTimerSetup(recordingTimerSettings); recordingSettings->addItem(new CMenuForwarder(LOCALE_TIMERSETTINGS_SEPARATOR, true, NULL, recordingTimerSettings, NULL, CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW)); //audiosettings - CMenuWidget* recordingaAudioSettings = new CMenuWidget(LOCALE_MAINSETTINGS_RECORDING, NEUTRINO_ICON_SETTINGS, width); + CMenuWidget* recordingaAudioSettings = new CMenuWidget(LOCALE_MAINSETTINGS_RECORDING, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_RECORDSETUP_AUDIOSETTINGS); showRecordAudioSetup(recordingaAudioSettings); recordingSettings->addItem(new CMenuForwarder(LOCALE_RECORDINGMENU_APIDS, true, NULL, recordingaAudioSettings, NULL, CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE)); int res = recordingSettings->exec(NULL, ""); recordingSettings->hide(); - selected = recordingSettings->getSelected(); delete recordingSettings; return res; } diff --git a/src/gui/record_setup.h b/src/gui/record_setup.h index b3c8afc87..cc41bc9b2 100644 --- a/src/gui/record_setup.h +++ b/src/gui/record_setup.h @@ -39,7 +39,7 @@ class CRecordSetup : public CMenuTarget { private: - int width, selected; + int width; int showRecordSetup(); void showRecordTimerSetup(CMenuWidget *menu_timersettings); diff --git a/src/gui/vfd_setup.cpp b/src/gui/vfd_setup.cpp index f7bdc993c..fa349af9e 100644 --- a/src/gui/vfd_setup.cpp +++ b/src/gui/vfd_setup.cpp @@ -39,24 +39,26 @@ #include #include #include +#include #include -#include #include #include #include + CVfdSetup::CVfdSetup() { width = w_max (40, 10); - selected = -1; + dim_time = NULL; + vfd_enabled = (cs_get_revision() != 10); } CVfdSetup::~CVfdSetup() { - + delete dim_time; } @@ -108,59 +110,70 @@ const CMenuOptionChooser::keyval LCD_INFO_OPTIONS[LCD_INFO_OPTION_COUNT] = int CVfdSetup::showSetup() { - CMenuWidget *vfds = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_LCD, width); + CMenuWidget *vfds = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_LCD, width, 576, MN_WIDGET_ID_VFDSETUP); vfds->addIntroItems(LOCALE_LCDMENU_HEAD); - vfds->setSelected(selected); - bool vfd_enabled = (cs_get_revision() != 10); - - CMenuWidget* lcdsliders = new CMenuWidget(LOCALE_LCDMENU_HEAD, NEUTRINO_ICON_LCD,width); - lcdsliders->addIntroItems(LOCALE_LCDMENU_LCDCONTROLER); - lcdsliders->setSelected(selected); - //vfd - brightness = CVFD::getInstance()->getBrightness(); - brightnessstandby = CVFD::getInstance()->getBrightnessStandby(); - brightnessdeepstandby = CVFD::getInstance()->getBrightnessDeepStandby(); - - lcdsliders->addItem(new CMenuOptionNumberChooser(LOCALE_LCDCONTROLER_BRIGHTNESS, &brightness, true, 0, 15, this, 0, 0, NONEXISTANT_LOCALE, NULL, true)); - lcdsliders->addItem(new CMenuOptionNumberChooser(LOCALE_LCDCONTROLER_BRIGHTNESSSTANDBY, &brightnessstandby, true, 0, 15, this, 0, 0, NONEXISTANT_LOCALE, NULL, true)); - if(cs_get_revision() > 7) - lcdsliders->addItem(new CMenuOptionNumberChooser(LOCALE_LCDCONTROLER_BRIGHTNESSDEEPSTANDBY, &brightnessdeepstandby, true, 0, 15, this, 0, 0, NONEXISTANT_LOCALE, NULL, true)); - lcdsliders->addItem(new CMenuOptionNumberChooser(LOCALE_LCDMENU_DIM_BRIGHTNESS, &g_settings.lcd_setting_dim_brightness, vfd_enabled, -1, 15, NULL, 0, -1, LOCALE_OPTIONS_OFF, NULL, true)); - lcdsliders->addItem(GenericMenuSeparatorLine); - CStringInput * dim_time = new CStringInput(LOCALE_LCDMENU_DIM_TIME, g_settings.lcd_setting_dim_time, 3, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE,"0123456789 "); - lcdsliders->addItem(new CMenuForwarder(LOCALE_LCDMENU_DIM_TIME, vfd_enabled, g_settings.lcd_setting_dim_time,dim_time)); - lcdsliders->addItem(GenericMenuSeparatorLine); - lcdsliders->addItem(new CMenuForwarder(LOCALE_OPTIONS_DEFAULT, true, NULL, this, "def", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); - - vfds->addItem(new CMenuForwarder(LOCALE_LCDMENU_LCDCONTROLER, vfd_enabled, NULL, lcdsliders, NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); + //vfd brightness menu + CMenuWidget* lcd_sliders = new CMenuWidget(LOCALE_LCDMENU_HEAD, NEUTRINO_ICON_LCD,width, 576, MN_WIDGET_ID_VFDSETUP_LCD_SLIDERS); + showBrightnessSetup(lcd_sliders); + vfds->addItem(new CMenuForwarder(LOCALE_LCDMENU_LCDCONTROLER, vfd_enabled, NULL, lcd_sliders, NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); + //led menu + CMenuWidget * ledMenu = NULL; if(cs_get_revision() > 7) { - CMenuWidget * ledMenu = new CMenuWidget(LOCALE_LCDMENU_HEAD, NEUTRINO_ICON_LCD); - ledMenu->addIntroItems(LOCALE_LEDCONTROLER_MENU); - ledMenu->addItem(new CMenuOptionChooser(LOCALE_LEDCONTROLER_MODE_TV, &g_settings.led_tv_mode, LEDMENU_OPTIONS, LEDMENU_OPTION_COUNT, true, new CLedControlNotifier())); - ledMenu->addItem(new CMenuOptionChooser(LOCALE_LEDCONTROLER_MODE_STANDBY, &g_settings.led_standby_mode, LEDMENU_OPTIONS, LEDMENU_OPTION_COUNT, true)); - ledMenu->addItem(new CMenuOptionChooser(LOCALE_LEDCONTROLER_MODE_DEEPSTANDBY, &g_settings.led_deep_mode, LEDMENU_OPTIONS, LEDMENU_OPTION_COUNT, true)); - ledMenu->addItem(new CMenuOptionChooser(LOCALE_LEDCONTROLER_MODE_RECORD, &g_settings.led_rec_mode, LEDMENU_OPTIONS, LEDMENU_OPTION_COUNT, true)); - ledMenu->addItem(new CMenuOptionChooser(LOCALE_LEDCONTROLER_BLINK, &g_settings.led_blink, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); + ledMenu = new CMenuWidget(LOCALE_LCDMENU_HEAD, NEUTRINO_ICON_LCD, width, 576, MN_WIDGET_ID_VFDSETUP_LED_SETUP); + showLedSetup(ledMenu); vfds->addItem(new CMenuForwarder(LOCALE_LEDCONTROLER_MENU, true, NULL, ledMenu, NULL, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN)); } vfds->addItem(GenericMenuSeparatorLine); + //status and info line options CMenuOptionChooser* oj = new CMenuOptionChooser(LOCALE_LCDMENU_STATUSLINE, &g_settings.lcd_setting[SNeutrinoSettings::LCD_SHOW_VOLUME], LCDMENU_STATUSLINE_OPTIONS, LCDMENU_STATUSLINE_OPTION_COUNT, vfd_enabled); CMenuOptionChooser* lcd_clock_channelname_menu = new CMenuOptionChooser(LOCALE_LCD_INFO_LINE, &g_settings.lcd_info_line, LCD_INFO_OPTIONS, LCD_INFO_OPTION_COUNT, vfd_enabled); - vfds->addItem(oj); vfds->addItem(lcd_clock_channelname_menu); int res = vfds->exec(NULL, ""); vfds->hide(); - selected = vfds->getSelected(); + delete vfds; return res; } + +void CVfdSetup::showBrightnessSetup(CMenuWidget *mn_widget) +{ + mn_widget->addIntroItems(LOCALE_LCDMENU_LCDCONTROLER); + + brightness = CVFD::getInstance()->getBrightness(); + brightnessstandby = CVFD::getInstance()->getBrightnessStandby(); + brightnessdeepstandby = CVFD::getInstance()->getBrightnessDeepStandby(); + + mn_widget->addItem(new CMenuOptionNumberChooser(LOCALE_LCDCONTROLER_BRIGHTNESS, &brightness, true, 0, 15, this, 0, 0, NONEXISTANT_LOCALE, NULL, true)); + mn_widget->addItem(new CMenuOptionNumberChooser(LOCALE_LCDCONTROLER_BRIGHTNESSSTANDBY, &brightnessstandby, true, 0, 15, this, 0, 0, NONEXISTANT_LOCALE, NULL, true)); + if(cs_get_revision() > 7) + mn_widget->addItem(new CMenuOptionNumberChooser(LOCALE_LCDCONTROLER_BRIGHTNESSDEEPSTANDBY, &brightnessdeepstandby, true, 0, 15, this, 0, 0, NONEXISTANT_LOCALE, NULL, true)); + mn_widget->addItem(new CMenuOptionNumberChooser(LOCALE_LCDMENU_DIM_BRIGHTNESS, &g_settings.lcd_setting_dim_brightness, vfd_enabled, -1, 15, NULL, 0, -1, LOCALE_OPTIONS_OFF, NULL, true)); + mn_widget->addItem(GenericMenuSeparatorLine); + if (dim_time == NULL) + dim_time = new CStringInput(LOCALE_LCDMENU_DIM_TIME, g_settings.lcd_setting_dim_time, 3, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE,"0123456789 "); + mn_widget->addItem(new CMenuForwarder(LOCALE_LCDMENU_DIM_TIME, vfd_enabled, g_settings.lcd_setting_dim_time,dim_time)); + mn_widget->addItem(GenericMenuSeparatorLine); + mn_widget->addItem(new CMenuForwarder(LOCALE_OPTIONS_DEFAULT, true, NULL, this, "def", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); +} + +void CVfdSetup::showLedSetup(CMenuWidget *mn_led_widget) +{ + mn_led_widget->addIntroItems(LOCALE_LEDCONTROLER_MENU); + mn_led_widget->addItem(new CMenuOptionChooser(LOCALE_LEDCONTROLER_MODE_TV, &g_settings.led_tv_mode, LEDMENU_OPTIONS, LEDMENU_OPTION_COUNT, true, new CLedControlNotifier())); + mn_led_widget->addItem(new CMenuOptionChooser(LOCALE_LEDCONTROLER_MODE_STANDBY, &g_settings.led_standby_mode, LEDMENU_OPTIONS, LEDMENU_OPTION_COUNT, true)); + mn_led_widget->addItem(new CMenuOptionChooser(LOCALE_LEDCONTROLER_MODE_DEEPSTANDBY, &g_settings.led_deep_mode, LEDMENU_OPTIONS, LEDMENU_OPTION_COUNT, true)); + mn_led_widget->addItem(new CMenuOptionChooser(LOCALE_LEDCONTROLER_MODE_RECORD, &g_settings.led_rec_mode, LEDMENU_OPTIONS, LEDMENU_OPTION_COUNT, true)); + mn_led_widget->addItem(new CMenuOptionChooser(LOCALE_LEDCONTROLER_BLINK, &g_settings.led_blink, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); +} + + bool CVfdSetup::changeNotify(const neutrino_locale_t OptionName, void */* data */) { diff --git a/src/gui/vfd_setup.h b/src/gui/vfd_setup.h index 5316f6ee6..ca8dc6a47 100644 --- a/src/gui/vfd_setup.h +++ b/src/gui/vfd_setup.h @@ -32,19 +32,26 @@ #define __lcd_setup__ #include +#include #include class CVfdSetup : public CMenuTarget, CChangeObserver { private: - int width, selected; - + int width; + int showSetup(); + void showBrightnessSetup(CMenuWidget *mn_widget); + void showLedSetup(CMenuWidget *mn_led_widget); virtual bool changeNotify(const neutrino_locale_t OptionName, void *data); int brightness; int brightnessstandby; int brightnessdeepstandby; + + bool vfd_enabled; + + CStringInput * dim_time; public: CVfdSetup(); diff --git a/src/gui/widget/menue.cpp b/src/gui/widget/menue.cpp index 597c1a1c7..aabd26594 100644 --- a/src/gui/widget/menue.cpp +++ b/src/gui/widget/menue.cpp @@ -47,7 +47,7 @@ #include #include - +#include #include @@ -273,6 +273,30 @@ void CMenuItem::paintItemButton(const bool select_mode, const int &item_height, } } +//small helper class to manage values e.g.: handling needed but deallocated widget objects +CMenuGlobal::CMenuGlobal() +{ + //creates needed select values with default value NO_WIDGET_ID = -1 + for (uint i=0; igetText(NONEXISTANT_LOCALE); @@ -285,31 +309,36 @@ CMenuWidget::CMenuWidget() fade = true; } -CMenuWidget::CMenuWidget(const neutrino_locale_t Name, const std::string & Icon, const int mwidth, const int mheight) +CMenuWidget::CMenuWidget(const neutrino_locale_t Name, const std::string & Icon, const int mwidth, const int mheight, const mn_widget_id_t &w_index) { name = Name; nameString = g_Locale->getText(Name); - - Init(Icon, mwidth, mheight); + + Init(Icon, mwidth, mheight, w_index); } -CMenuWidget::CMenuWidget(const char* Name, const std::string & Icon, const int mwidth, const int mheight) +CMenuWidget::CMenuWidget(const char* Name, const std::string & Icon, const int mwidth, const int mheight, const mn_widget_id_t &w_index) { name = NONEXISTANT_LOCALE; nameString = Name; - - Init(Icon, mwidth, mheight); + + Init(Icon, mwidth, mheight, w_index); } -void CMenuWidget::Init(const std::string & Icon, const int mwidth, const int /*mheight*/) +void CMenuWidget::Init(const std::string & Icon, const int mwidth, const int /*mheight*/, const mn_widget_id_t &w_index) { + m = CMenuGlobal::getInstance(); //create CMenuGlobal instance only here frameBuffer = CFrameBuffer::getInstance(); iconfile = Icon; - preselected = -1; - selected = preselected; + + //handle select values + widget_index = w_index; + preselected = NO_WIDGET_ID; + selected = (widget_index == NO_WIDGET_ID ? preselected : m->v_selected[widget_index]); + min_width = 0; width = 0; /* is set in paint() */ - + if (mwidth > 100) { /* warn about abuse until we found all offenders... */ @@ -426,7 +455,7 @@ int CMenuWidget::exec(CMenuTarget* parent, const std::string &) neutrino_msg_t msg; neutrino_msg_data_t data; bool bAllowRepeatLR = false; - + int pos = 0; exit_pressed = false; @@ -463,8 +492,7 @@ int CMenuWidget::exec(CMenuTarget* parent, const std::string &) paint(); int retval = menu_return::RETURN_REPAINT; uint64_t timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]); - - + do { if(hasItem() && selected >= 0) bAllowRepeatLR = items[selected]->can_arrow; @@ -725,6 +753,9 @@ int CMenuWidget::exec(CMenuTarget* parent, const std::string &) CMenuItem* item = items[count]; item->init(-1, 0, 0, 0); } + + if (widget_index > -1) + m->v_selected[widget_index] = selected; frameBuffer->Unlock(); return retval; @@ -867,7 +898,7 @@ void CMenuWidget::paint() void CMenuWidget::paintItems() { int item_height=height-(item_start_y-y); - + //Item not currently on screen if (selected >= 0) { diff --git a/src/gui/widget/menue.h b/src/gui/widget/menue.h index 59e5933d0..96b31bee3 100644 --- a/src/gui/widget/menue.h +++ b/src/gui/widget/menue.h @@ -44,6 +44,10 @@ #include #include +#define NO_WIDGET_ID -1 + +typedef int mn_widget_id_t; + struct menu_return { enum @@ -371,8 +375,22 @@ class CMenuOptionLanguageChooser : public CMenuItem int exec(CMenuTarget* parent); }; +class CMenuGlobal +{ + public: + std::vector v_selected; + + CMenuGlobal(); + ~CMenuGlobal(); + + static CMenuGlobal* getInstance(); +}; + class CMenuWidget : public CMenuTarget { + private: + mn_widget_id_t widget_index; + CMenuGlobal *m; protected: std::string nameString; neutrino_locale_t name; @@ -391,6 +409,7 @@ class CMenuWidget : public CMenuTarget int preselected; int selected; int iconOffset; + unsigned int item_start_y; unsigned int current_page; unsigned int total_pages; @@ -398,16 +417,16 @@ class CMenuWidget : public CMenuTarget bool from_wizard; bool fade; - void Init(const std::string & Icon, const int mwidth, const int mheight); + void Init(const std::string & Icon, const int mwidth, const int mheight, const mn_widget_id_t &w_index); virtual void paintItems(); public: CMenuWidget(); /* TODO: mheight is not used anymore. remove if nobody misses it */ /* mwidth (minimum width) in percent of screen width */ - CMenuWidget(const char* Name, const std::string & Icon = "", const int mwidth = 30, const int mheight = 576); - CMenuWidget(const neutrino_locale_t Name, const std::string & Icon = "", const int mwidth = 30, const int mheight = 576); + CMenuWidget(const char* Name, const std::string & Icon = "", const int mwidth = 30, const int mheight = 576, const mn_widget_id_t &w_index = NO_WIDGET_ID); + CMenuWidget(const neutrino_locale_t Name, const std::string & Icon = "", const int mwidth = 30, const int mheight = 576, const mn_widget_id_t &w_index = NO_WIDGET_ID); ~CMenuWidget(); - + virtual void addItem(CMenuItem* menuItem, const bool defaultselected = false); enum diff --git a/src/gui/zapit_setup.cpp b/src/gui/zapit_setup.cpp index 40ac37b7a..524f260b1 100644 --- a/src/gui/zapit_setup.cpp +++ b/src/gui/zapit_setup.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include @@ -63,7 +64,7 @@ int CZapitSetup::exec(CMenuTarget* parent, const std::string &/*actionKey*/) void CZapitSetup::showMenu() { //menue init - CMenuWidget *zapit = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width); + CMenuWidget *zapit = new CMenuWidget(LOCALE_MAINMENU_SETTINGS, NEUTRINO_ICON_SETTINGS, width, 576, MN_WIDGET_ID_ZAPIT); zapit->setSelected(selected); zapit->addIntroItems(LOCALE_ZAPITSETUP_INFO); diff --git a/src/neutrino.h b/src/neutrino.h index 9fdd7e4cf..3d4620a5d 100644 --- a/src/neutrino.h +++ b/src/neutrino.h @@ -84,7 +84,6 @@ typedef struct font_sizes_groups const char * const actionkey; } font_sizes_groups_struct; - class CNeutrinoApp : public CMenuTarget, CChangeObserver { public: @@ -95,6 +94,8 @@ public: RECORDING_VCR = 2, RECORDING_FILE = 3 }; + + private: CFrameBuffer * frameBuffer; @@ -222,3 +223,5 @@ public: CConfigFile* getConfigFile() {return &configfile;}; }; #endif + + diff --git a/src/neutrino_menue.h b/src/neutrino_menue.h new file mode 100644 index 000000000..34449a0d3 --- /dev/null +++ b/src/neutrino_menue.h @@ -0,0 +1,126 @@ +/* + Neutrino-GUI - DBoxII-Project + + Copyright (C) 2001 Steffen Hehn 'McClean' + Homepage: http://dbox.cyberphoria.org/ + + Headerfile: neutrino_menue.h, + Copyright (C) 2011 Thilo Graf 'dbt' + Homepage: http://www.dbox2-tuning.net + + License: GPL + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + Boston, MA 02110-1301, USA. + + + NOTE for ignorant distributors: + It's not allowed to distribute any compiled parts of this code, if you don't accept the terms of GPL. + Please read it and understand it right! + This means for you: Hold it, if not, leave it! You could face legal action! + Otherwise ask the copyright owners, anything else would be theft! +*/ + + +#ifndef __neutrino_menue__ +#define __neutrino_menue__ + + +//enums for menu widget indicies, +enum MN_WIDGET_ID +{ + //network setup + MN_WIDGET_ID_NETWORKSETUP, + MN_WIDGET_ID_NETWORKSETUP_NTP, + MN_WIDGET_ID_NETWORKSETUP_MOUNTS, + + //proxysetup + MN_WIDGET_ID_PROXYSETUP, + + //osd setup + MN_WIDGET_ID_OSDSETUP, + MN_WIDGET_ID_OSDSETUP_CHANNELLIST, + MN_WIDGET_ID_OSDSETUP_FONT, + MN_WIDGET_ID_OSDSETUP_FONTSCALE, + MN_WIDGET_ID_OSDSETUP_INFOBAR, + MN_WIDGET_ID_OSDSETUP_MENUCOLORS, + MN_WIDGET_ID_OSDSETUP_TIMEOUT, + //actually it does not matter, but these 6 entries must be the same order as in menu + MN_WIDGET_ID_OSDSETUP_FONTSIZE_MENU, + MN_WIDGET_ID_OSDSETUP_FONTSIZE_CHANNELLIST, + MN_WIDGET_ID_OSDSETUP_FONTSIZE_EVENTLIST, + MN_WIDGET_ID_OSDSETUP_FONTSIZE_EPG, + MN_WIDGET_ID_OSDSETUP_FONTSIZE_INFOBAR, + MN_WIDGET_ID_OSDSETUP_FONTSIZE_GAMELIST, + + //language setup + MN_WIDGET_ID_LANGUAGESETUP, + MN_WIDGET_ID_LANGUAGESETUP_LOCALE, + MN_WIDGET_ID_LANGUAGESETUP_PREFAUDIO_LANGUAGE, + + //recording settings + MN_WIDGET_ID_RECORDSETUP, + MN_WIDGET_ID_RECORDSETUP_TIMESHIFT, + MN_WIDGET_ID_RECORDSETUP_TIMERSETTINGS, + MN_WIDGET_ID_RECORDSETUP_AUDIOSETTINGS, + + //vfd setup + MN_WIDGET_ID_VFDSETUP, + MN_WIDGET_ID_VFDSETUP_LCD_SLIDERS, + MN_WIDGET_ID_VFDSETUP_LED_SETUP, + + //keybind setup + MN_WIDGET_ID_KEYSETUP, + MN_WIDGET_ID_KEYSETUP_KEYBINDING, + MN_WIDGET_ID_KEYSETUP_KEYBINDING_MODES, + MN_WIDGET_ID_KEYSETUP_KEYBINDING_CHANNELLIST, + MN_WIDGET_ID_KEYSETUP_KEYBINDING_QUICKZAP, + MN_WIDGET_ID_KEYSETUP_KEYBINDING_MOVIEPLAYER, + + //picture viewer setup + MN_WIDGET_ID_PVIEWERSETUP, + + //audio setup + MN_WIDGET_ID_AUDIOSETUP, + + //misc settings + MN_WIDGET_ID_MISCSETUP, + MN_WIDGET_ID_MISCSETUP_GENERAL, + MN_WIDGET_ID_MISCSETUP_ENERGY, + MN_WIDGET_ID_MISCSETUP_EPG, + MN_WIDGET_ID_MISCSETUP_FILEBROWSER, + MN_WIDGET_ID_MISCSETUP_CHANNELLIST, + + //media menu + MN_WIDGET_ID_MEDIA, + MN_WIDGET_ID_MEDIA_MOVIEPLAYER, + + //parentallock setup + MN_WIDGET_ID_PLOCKSETUP, + + //drive setup + MN_WIDGET_ID_DRIVESETUP, + + //zapit settings (start channel) + MN_WIDGET_ID_ZAPIT, + + //cec setup + MN_WIDGET_ID_CEC, + + MN_WIDGET_ID_MAX +}; + + +#endif