From 18dca0f47d10e2bcb76eea8a8149d5b973d5c19c Mon Sep 17 00:00:00 2001 From: seife Date: Sun, 7 Feb 2010 12:05:02 +0000 Subject: [PATCH] neutrino: add possibility to specify minimal menu width A static window width was specified in pixels before, which is "problematic". Then it was ignored and menus were automatically sized to their largest menu item. Due to popular demand, add the possibility to specify a minimal window width in percent of screen width. If set to 0 (default), menus will autosize as before. Main menu is set to 22% screenwidth. git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-experimental@288 e54a6e83-5905-42d5-8d5c-058d10e6a962 --- src/gui/audio_select.cpp | 2 +- src/gui/audioplayer.cpp | 2 +- src/gui/epg_menu.cpp | 2 +- src/gui/epgplus.cpp | 4 ++-- src/gui/eventlist.cpp | 2 +- src/gui/moviebrowser.cpp | 14 +++++++------- src/gui/movieplayer.cpp | 2 +- src/gui/nfs.cpp | 6 +++--- src/gui/update.cpp | 2 +- src/gui/widget/menue.cpp | 7 ++++++- src/gui/widget/menue.h | 7 ++++--- src/neutrino.cpp | 10 +++++----- src/neutrino_menue.cpp | 14 +++++++------- 13 files changed, 40 insertions(+), 34 deletions(-) diff --git a/src/gui/audio_select.cpp b/src/gui/audio_select.cpp index 1e00c19e0..4dd6af807 100644 --- a/src/gui/audio_select.cpp +++ b/src/gui/audio_select.cpp @@ -84,7 +84,7 @@ const CMenuOptionChooser::keyval OPTIONS_OFF0_ON1_OPTIONS[OPTIONS_OFF0_ON1_OPTIO int CAudioSelectMenuHandler::doMenu () { - CMenuWidget AudioSelector(LOCALE_APIDSELECTOR_HEAD, NEUTRINO_ICON_AUDIO, 360); + CMenuWidget AudioSelector(LOCALE_APIDSELECTOR_HEAD, NEUTRINO_ICON_AUDIO); unsigned int count; CSubtitleChangeExec SubtitleChanger; diff --git a/src/gui/audioplayer.cpp b/src/gui/audioplayer.cpp index 64754b226..8a337ab3c 100644 --- a/src/gui/audioplayer.cpp +++ b/src/gui/audioplayer.cpp @@ -699,7 +699,7 @@ int CAudioPlayerGui::show() if (m_inetmode) { static int old_select = 0; char cnt[5]; - CMenuWidget InputSelector(LOCALE_AUDIOPLAYER_LOAD_RADIO_STATIONS, NEUTRINO_ICON_AUDIO, 400); + CMenuWidget InputSelector(LOCALE_AUDIOPLAYER_LOAD_RADIO_STATIONS, NEUTRINO_ICON_AUDIO); int count = 0; int select = -1; CMenuSelectorTarget *InetRadioInputChanger = new CMenuSelectorTarget(&select); diff --git a/src/gui/epg_menu.cpp b/src/gui/epg_menu.cpp index 6e1f2bac7..28dbc172d 100644 --- a/src/gui/epg_menu.cpp +++ b/src/gui/epg_menu.cpp @@ -65,7 +65,7 @@ int CEPGMenuHandler::exec(CMenuTarget* parent, const std::string &/*actionkey*/) int CEPGMenuHandler::doMenu () { - CMenuWidget EPGSelector(LOCALE_EPGMENU_HEAD, NEUTRINO_ICON_FEATURES, 350); + CMenuWidget EPGSelector(LOCALE_EPGMENU_HEAD, NEUTRINO_ICON_FEATURES); // EPGSelector.addItem(GenericMenuSeparator); EPGSelector.addItem(new CMenuForwarder(LOCALE_EPGMENU_EVENTLIST , true, NULL, new CEventListHandler(), NULL, CRCInput::RC_red , NEUTRINO_ICON_BUTTON_RED ), false); diff --git a/src/gui/epgplus.cpp b/src/gui/epgplus.cpp index 79ec05b4d..c314340af 100644 --- a/src/gui/epgplus.cpp +++ b/src/gui/epgplus.cpp @@ -887,7 +887,7 @@ int EpgPlus::exec (CChannelList * pchannelList, int selectedChannelIndex, CBouqu break; } } else if (msg == (neutrino_msg_t) CRCInput::RC_red) { - CMenuWidget menuWidgetActions (LOCALE_EPGPLUS_ACTIONS, NEUTRINO_ICON_FEATURES, 400); + CMenuWidget menuWidgetActions(LOCALE_EPGPLUS_ACTIONS, NEUTRINO_ICON_FEATURES); if (!g_settings.minimode) menuWidgetActions.addItem (new CMenuForwarder (LOCALE_EPGPLUS_RECORD, true, NULL, new MenuTargetAddRecordTimer (this), NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED), false); menuWidgetActions.addItem (new CMenuForwarder (LOCALE_EPGPLUS_REFRESH_EPG, true, NULL, new MenuTargetRefreshEpg (this), NULL, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN), false); @@ -898,7 +898,7 @@ int EpgPlus::exec (CChannelList * pchannelList, int selectedChannelIndex, CBouqu this->refreshAll = true; } else if (msg == (neutrino_msg_t) CRCInput::RC_blue) { - CMenuWidget menuWidgetOptions (LOCALE_EPGPLUS_OPTIONS, NEUTRINO_ICON_FEATURES, 500); + CMenuWidget menuWidgetOptions(LOCALE_EPGPLUS_OPTIONS, NEUTRINO_ICON_FEATURES); menuWidgetOptions.addItem (new MenuOptionChooserSwitchSwapMode (this)); menuWidgetOptions.addItem (new MenuOptionChooserSwitchViewMode (this)); diff --git a/src/gui/eventlist.cpp b/src/gui/eventlist.cpp index f67686ae7..3640591d5 100644 --- a/src/gui/eventlist.cpp +++ b/src/gui/eventlist.cpp @@ -1072,7 +1072,7 @@ int CEventFinderMenu::showMenu(void) CMenuOptionChooser* mo1 = new CMenuOptionChooser(LOCALE_EVENTFINDER_SEARCH_WITHIN_EPG, m_search_epg_item, SEARCH_EPG_OPTIONS, SEARCH_EPG_OPTION_COUNT, true, NULL, CRCInput::RC_4); CMenuForwarder* mf0 = new CMenuForwarder(LOCALE_EVENTFINDER_START_SEARCH, true, NULL, this, "1", CRCInput::RC_5 ); - CMenuWidget searchMenu(LOCALE_EVENTFINDER_HEAD, NEUTRINO_ICON_FEATURES, 450); + CMenuWidget searchMenu(LOCALE_EVENTFINDER_HEAD, NEUTRINO_ICON_FEATURES); searchMenu.addItem(GenericMenuSeparator); searchMenu.addItem(mf2, false); diff --git a/src/gui/moviebrowser.cpp b/src/gui/moviebrowser.cpp index 9e5df487a..8f6ecc051 100644 --- a/src/gui/moviebrowser.cpp +++ b/src/gui/moviebrowser.cpp @@ -2770,7 +2770,7 @@ void CMovieBrowser::showMovieInfoMenu(MI_MOVIE_INFO* movie_info) movieInfoUpdateAll[i]=0; movieInfoUpdateAllIfDestEmptyOnly=true; - CMenuWidget movieInfoMenuUpdate (LOCALE_MOVIEBROWSER_INFO_HEAD_UPDATE, NEUTRINO_ICON_STREAMING,450); + CMenuWidget movieInfoMenuUpdate(LOCALE_MOVIEBROWSER_INFO_HEAD_UPDATE, NEUTRINO_ICON_STREAMING); movieInfoMenuUpdate.addItem(GenericMenuSeparator); movieInfoMenuUpdate.addItem( new CMenuForwarder(LOCALE_MOVIEBROWSER_MENU_SAVE_ALL, true, NULL, this, "save_movie_info_all",CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); movieInfoMenuUpdate.addItem(GenericMenuSeparatorLine); @@ -2808,7 +2808,7 @@ void CMovieBrowser::showMovieInfoMenu(MI_MOVIE_INFO* movie_info) CStringInput countryUserInput(LOCALE_MOVIEBROWSER_INFO_PRODCOUNTRY, &movie_info->productionCountry, 11, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "ABCDEFGHIJKLMNOPQRSTUVWXYZ "); CIntInput yearUserIntInput(LOCALE_MOVIEBROWSER_INFO_PRODYEAR, (int&)movie_info->productionDate, 4, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE); - CMenuWidget movieInfoMenu (LOCALE_MOVIEBROWSER_INFO_HEAD, NEUTRINO_ICON_STREAMING,m_cBoxFrame.iWidth); + CMenuWidget movieInfoMenu(LOCALE_MOVIEBROWSER_INFO_HEAD, NEUTRINO_ICON_STREAMING /*,m_cBoxFrame.iWidth*/); //TODO: check movieInfoMenu.addItem(GenericMenuSeparator); movieInfoMenu.addItem( new CMenuForwarder(LOCALE_MOVIEBROWSER_MENU_SAVE, true, NULL, this, "save_movie_info", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); @@ -2858,7 +2858,7 @@ bool CMovieBrowser::showMenu(MI_MOVIE_INFO* /*movie_info*/) /********************************************************************/ /** parental lock **************************************************/ - CMenuWidget parentalMenu (LOCALE_MOVIEBROWSER_MENU_PARENTAL_LOCK_HEAD , NEUTRINO_ICON_STREAMING,450); + CMenuWidget parentalMenu(LOCALE_MOVIEBROWSER_MENU_PARENTAL_LOCK_HEAD, NEUTRINO_ICON_STREAMING); parentalMenu.addItem(GenericMenuSeparator); parentalMenu.addItem( new CMenuOptionChooser(LOCALE_MOVIEBROWSER_MENU_PARENTAL_LOCK_ACTIVATED, (int*)(&m_parentalLock), MESSAGEBOX_PARENTAL_LOCK_OPTIONS, MESSAGEBOX_PARENTAL_LOCK_OPTIONS_COUNT, true )); parentalMenu.addItem( new CMenuOptionChooser(LOCALE_MOVIEBROWSER_MENU_PARENTAL_LOCK_RATE_HEAD, (int*)(&m_settings.parentalLockAge), MESSAGEBOX_PARENTAL_LOCKAGE_OPTIONS, MESSAGEBOX_PARENTAL_LOCKAGE_OPTION_COUNT, true )); @@ -2866,7 +2866,7 @@ bool CMovieBrowser::showMenu(MI_MOVIE_INFO* /*movie_info*/) /********************************************************************/ /** optionsVerzeichnisse **************************************************/ - CMenuWidget optionsMenuDir (LOCALE_MOVIEBROWSER_MENU_DIRECTORIES_HEAD , NEUTRINO_ICON_STREAMING,450); + CMenuWidget optionsMenuDir(LOCALE_MOVIEBROWSER_MENU_DIRECTORIES_HEAD, NEUTRINO_ICON_STREAMING); optionsMenuDir.addItem(GenericMenuSeparator); optionsMenuDir.addItem( new CMenuOptionChooser(LOCALE_MOVIEBROWSER_USE_REC_DIR, (int*)(&m_settings.storageDirRecUsed), MESSAGEBOX_YES_NO_OPTIONS, MESSAGEBOX_YES_NO_OPTIONS_COUNT, true )); optionsMenuDir.addItem( new CMenuForwarder( LOCALE_MOVIEBROWSER_DIR , false ,g_settings.network_nfs_recordingdir)); @@ -2901,7 +2901,7 @@ bool CMovieBrowser::showMenu(MI_MOVIE_INFO* /*movie_info*/) for(i=0; igetText(LOCALE_FLASHUPDATE_GETINFOFILE)); // UTF-8 - CMenuWidget SelectionWidget(LOCALE_FLASHUPDATE_SELECTIMAGE, NEUTRINO_ICON_UPDATE, 600); + CMenuWidget SelectionWidget(LOCALE_FLASHUPDATE_SELECTIMAGE, NEUTRINO_ICON_UPDATE); SelectionWidget.addItem(GenericMenuSeparator); SelectionWidget.addItem(GenericMenuBack); diff --git a/src/gui/widget/menue.cpp b/src/gui/widget/menue.cpp index 78a4fcf7d..36bcc30b8 100644 --- a/src/gui/widget/menue.cpp +++ b/src/gui/widget/menue.cpp @@ -100,7 +100,7 @@ CMenuWidget::CMenuWidget(const char* Name, const std::string & Icon, const int m Init(Icon, mwidth, mheight); } -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*/) { frameBuffer = CFrameBuffer::getInstance(); iconfile = Icon; @@ -108,6 +108,11 @@ void CMenuWidget::Init(const std::string & Icon, const int /*mwidth*/, const int needed_width = 0; /* is set in addItem() */ width = 0; /* is set in paint() */ + if (mwidth > 100) /* warn about abuse until we found all offenders... */ + fprintf(stderr, "CMenuWidget::Init (%s) (%s) mwidth over 100%: %d\n", nameString.c_str(), Icon.c_str(), mwidth); + else + needed_width = frameBuffer->getScreenWidth() * mwidth / 100; + /* set the max height to 9/10 of usable screen height debatable, if the callers need a possibility to set this */ height = frameBuffer->getScreenHeight() / 20 * 18; /* make sure its a multiple of 2 */ diff --git a/src/gui/widget/menue.h b/src/gui/widget/menue.h index 8ee00a4af..466da1126 100644 --- a/src/gui/widget/menue.h +++ b/src/gui/widget/menue.h @@ -349,9 +349,10 @@ class CMenuWidget : public CMenuTarget public: CMenuWidget(); - /* TODO: mwidth and mheight are not used anymore. remove if nobody misses them */ - CMenuWidget(const char* Name, const std::string & Icon = "", const int mwidth = 400, const int mheight = 576); - CMenuWidget(const neutrino_locale_t Name, const std::string & Icon = "", const int mwidth = 400, const int mheight = 576); + /* 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 = 0, const int mheight = 576); + CMenuWidget(const neutrino_locale_t Name, const std::string & Icon = "", const int mwidth = 0, const int mheight = 576); ~CMenuWidget(); virtual void addItem(CMenuItem* menuItem, const bool defaultselected = false); diff --git a/src/neutrino.cpp b/src/neutrino.cpp index b252afade..cffee5fac 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -2405,18 +2405,18 @@ int CNeutrinoApp::run(int argc, char **argv) c_SMSKeyInput = new SMSKeyInput(); //Main settings - CMenuWidget mainMenu (LOCALE_MAINMENU_HEAD , NEUTRINO_ICON_MAINMENU); + CMenuWidget mainMenu (LOCALE_MAINMENU_HEAD , NEUTRINO_ICON_MAINMENU, 22); CMenuWidget mainSettings (LOCALE_MAINSETTINGS_HEAD , NEUTRINO_ICON_SETTINGS); CMenuWidget languageSettings (LOCALE_LANGUAGESETUP_HEAD , NEUTRINO_ICON_LANGUAGE); CMenuWidget audioSettings (LOCALE_AUDIOMENU_HEAD , NEUTRINO_ICON_AUDIO); - CMenuWidget parentallockSettings(LOCALE_PARENTALLOCK_PARENTALLOCK , NEUTRINO_ICON_LOCK , 500); + CMenuWidget parentallockSettings(LOCALE_PARENTALLOCK_PARENTALLOCK , NEUTRINO_ICON_LOCK); CMenuWidget networkSettings (LOCALE_NETWORKMENU_HEAD , NEUTRINO_ICON_NETWORK); CMenuWidget recordingSettings (LOCALE_RECORDINGMENU_HEAD , NEUTRINO_ICON_RECORDING); CMenuWidget streamingSettings (LOCALE_STREAMINGMENU_HEAD , NEUTRINO_ICON_STREAMING); CMenuWidget colorSettings (LOCALE_MAINSETTINGS_OSD , NEUTRINO_ICON_COLORS); CMenuWidget fontSettings (LOCALE_FONTMENU_HEAD , NEUTRINO_ICON_COLORS); CMenuWidget lcdSettings (LOCALE_LCDMENU_HEAD , NEUTRINO_ICON_LCD); - CMenuWidget keySettings (LOCALE_MAINSETTINGS_KEYBINDING , NEUTRINO_ICON_KEYBINDING , 400); + CMenuWidget keySettings (LOCALE_MAINSETTINGS_KEYBINDING , NEUTRINO_ICON_KEYBINDING); CMenuWidget miscSettings (LOCALE_MISCSETTINGS_HEAD , NEUTRINO_ICON_SETTINGS); CMenuWidget audioplPicSettings (LOCALE_AUDIOPLAYERPICSETTINGS_GENERAL, NEUTRINO_ICON_SETTINGS); CMenuWidget _scanSettings (LOCALE_SERVICEMENU_SCANTS , NEUTRINO_ICON_SETTINGS); @@ -4328,7 +4328,7 @@ printf("New timeshift dir: %s\n", timeshiftDir); } else if(actionKey == "movieplugin") { parent->hide(); - CMenuWidget MoviePluginSelector(LOCALE_MOVIEPLAYER_DEFPLUGIN, NEUTRINO_ICON_FEATURES, 350); + CMenuWidget MoviePluginSelector(LOCALE_MOVIEPLAYER_DEFPLUGIN, NEUTRINO_ICON_FEATURES); MoviePluginSelector.addItem(GenericMenuSeparator); char id[5]; @@ -4349,7 +4349,7 @@ printf("New timeshift dir: %s\n", timeshiftDir); } else if(actionKey == "onekeyplugin") { parent->hide(); - CMenuWidget MoviePluginSelector(LOCALE_EXTRA_KEY_PLUGIN, NEUTRINO_ICON_FEATURES, 350); + CMenuWidget MoviePluginSelector(LOCALE_EXTRA_KEY_PLUGIN, NEUTRINO_ICON_FEATURES); MoviePluginSelector.addItem(GenericMenuSeparator); char id[5]; diff --git a/src/neutrino_menue.cpp b/src/neutrino_menue.cpp index 903cba05b..b8893789e 100644 --- a/src/neutrino_menue.cpp +++ b/src/neutrino_menue.cpp @@ -1292,7 +1292,7 @@ void CNeutrinoApp::InitServiceSettings(CMenuWidget &service, CMenuWidget &_scanS //if(softupdate) { dprintf(DEBUG_DEBUG, "init soft-update-stuff\n"); - CMenuWidget* updateSettings = new CMenuWidget(LOCALE_SERVICEMENU_UPDATE, NEUTRINO_ICON_UPDATE, 550); + CMenuWidget* updateSettings = new CMenuWidget(LOCALE_SERVICEMENU_UPDATE, NEUTRINO_ICON_UPDATE); addMenueIntroItems(*updateSettings); // expert-functions to read/write mtd @@ -2177,7 +2177,7 @@ void CNeutrinoApp::InitColorSettings(CMenuWidget &colorSettings, CMenuWidget &fo InitColorThemesSettings(*colorSettings_Themes); colorSettings.addItem( new CMenuForwarder(LOCALE_COLORMENU_THEMESELECT, true, NULL, colorSettings_Themes, NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED) ); - CMenuWidget *colorSettings_menuColors = new CMenuWidget(LOCALE_COLORMENUSETUP_HEAD, NEUTRINO_ICON_SETTINGS, 400, 400); + CMenuWidget *colorSettings_menuColors = new CMenuWidget(LOCALE_COLORMENUSETUP_HEAD, NEUTRINO_ICON_SETTINGS); InitColorSettingsMenuColors(*colorSettings_menuColors); colorSettings.addItem( new CMenuForwarder(LOCALE_COLORMENU_MENUCOLORS, true, NULL, colorSettings_menuColors, NULL, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN) ); @@ -2433,7 +2433,7 @@ const neutrino_locale_t keydescription[KEYBINDS_COUNT] = void CNeutrinoApp::InitKeySettings(CMenuWidget &keySettings) { - CMenuWidget* bindSettings = new CMenuWidget(LOCALE_KEYBINDINGMENU_HEAD, NEUTRINO_ICON_KEYBINDING, 400); + CMenuWidget* bindSettings = new CMenuWidget(LOCALE_KEYBINDINGMENU_HEAD, NEUTRINO_ICON_KEYBINDING); addMenueIntroItems(keySettings); @@ -2553,7 +2553,7 @@ void CNeutrinoApp::SelectNVOD() if (!(g_RemoteControl->subChannels.empty())) { // NVOD/SubService- Kanal! - CMenuWidget NVODSelector(g_RemoteControl->are_subchannels ? LOCALE_NVODSELECTOR_SUBSERVICE : LOCALE_NVODSELECTOR_HEAD, NEUTRINO_ICON_VIDEO, 350); + CMenuWidget NVODSelector(g_RemoteControl->are_subchannels ? LOCALE_NVODSELECTOR_SUBSERVICE : LOCALE_NVODSELECTOR_HEAD, NEUTRINO_ICON_VIDEO); if (getNVODMenu(&NVODSelector)) NVODSelector.exec(NULL, ""); } @@ -2623,7 +2623,7 @@ void CNeutrinoApp::SelectAPID() { // we have APIDs for this channel! - CMenuWidget APIDSelector(LOCALE_APIDSELECTOR_HEAD, NEUTRINO_ICON_AUDIO, 300); + CMenuWidget APIDSelector(LOCALE_APIDSELECTOR_HEAD, NEUTRINO_ICON_AUDIO); APIDSelector.addItem(GenericMenuSeparator); for ( unsigned int count=0; countcurrent_PIDs.APIDs.size(); count++ ) @@ -2757,7 +2757,7 @@ bool CNeutrinoApp::showUserMenu(int button) if ( txt.empty() ) txt = g_Locale->getText(LOCALE_INFOVIEWER_STREAMINFO); } - CMenuWidget *menu = new CMenuWidget(txt.c_str() , NEUTRINO_ICON_FEATURES, 350); + CMenuWidget *menu = new CMenuWidget(txt.c_str() , NEUTRINO_ICON_FEATURES); if (menu == NULL) return 0; menu->addItem(GenericMenuSeparator); @@ -2880,7 +2880,7 @@ bool CNeutrinoApp::showUserMenu(int button) case SNeutrinoSettings::ITEM_SUBCHANNEL: if (!(g_RemoteControl->subChannels.empty())) { // NVOD/SubService- Kanal! - tmpNVODSelector = new CMenuWidget(g_RemoteControl->are_subchannels ? LOCALE_NVODSELECTOR_SUBSERVICE : LOCALE_NVODSELECTOR_HEAD, NEUTRINO_ICON_VIDEO, 350); + tmpNVODSelector = new CMenuWidget(g_RemoteControl->are_subchannels ? LOCALE_NVODSELECTOR_SUBSERVICE : LOCALE_NVODSELECTOR_HEAD, NEUTRINO_ICON_VIDEO); if (getNVODMenu(tmpNVODSelector)) { menu_items++; menu_prev = SNeutrinoSettings::ITEM_SUBCHANNEL;