diff --git a/src/gui/osdlang_setup.cpp b/src/gui/osdlang_setup.cpp index efea73397..983db336f 100644 --- a/src/gui/osdlang_setup.cpp +++ b/src/gui/osdlang_setup.cpp @@ -67,12 +67,18 @@ COsdLangSetup::~COsdLangSetup() } -int COsdLangSetup::exec(CMenuTarget* parent, const std::string &/*actionKey*/) +int COsdLangSetup::exec(CMenuTarget* parent, const std::string &actionKey) { dprintf(DEBUG_DEBUG, "init international setup\n"); if(parent != NULL) parent->hide(); + if (actionKey != "") { + g_settings.language = actionKey; + g_Locale->loadLocale(g_settings.language.c_str()); + return menu_return::RETURN_REPAINT; + } + int res = showLocalSetup(); return res; @@ -92,7 +98,7 @@ int COsdLangSetup::showLocalSetup() CMenuWidget osdl_setup(LOCALE_LANGUAGESETUP_OSD, NEUTRINO_ICON_LANGUAGE, width, MN_WIDGET_ID_LANGUAGESETUP_LOCALE); showLanguageSetup(&osdl_setup); - CMenuForwarder * mf = new CMenuForwarder(LOCALE_LANGUAGESETUP_OSD, true, NULL, &osdl_setup, NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED); + CMenuForwarder * mf = new CMenuForwarder(LOCALE_LANGUAGESETUP_OSD, true, g_settings.language, &osdl_setup, NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED); mf->setHint("", LOCALE_MENU_HINT_OSD_LANGUAGE); localSettings->addItem(mf); @@ -186,8 +192,12 @@ void COsdLangSetup::showLanguageSetup(CMenuWidget *osdl_setup) if (pos != NULL) { *pos = '\0'; - CMenuOptionLanguageChooser* oj = new CMenuOptionLanguageChooser((char*)locale, this, locale); - osdl_setup->addItem( oj ); + std::string loc(locale); + loc.at(0) = toupper(loc.at(0)); + + CMenuForwarder *mf = new CMenuForwarder(loc, true, NULL, this, locale); + mf->iconName = mf->getActionKey(); + osdl_setup->addItem(mf, !strcmp(locale, g_settings.language.c_str())); } free(namelist[count]); } diff --git a/src/gui/personalize.cpp b/src/gui/personalize.cpp index b36f2044f..04968098a 100644 --- a/src/gui/personalize.cpp +++ b/src/gui/personalize.cpp @@ -874,7 +874,7 @@ void CPersonalizeGui::addPersonalizedItems() //convert item to locked forwarder and use generated pin mode for usage as ask parameter v_item[i].menuItem = new CLockedMenuForwarder(fw->getTextLocale(), g_settings.easymenu ? g_settings.parentallock_pincode : g_settings.personalize_pincode, - use_pin, fw->active, NULL, fw->getTarget(), fw->getActionKey().c_str(), d_key, fw->iconName.c_str(), lock_icon); + use_pin, fw->active, NULL, fw->getTarget(), fw->getActionKey(), d_key, fw->iconName.c_str(), lock_icon); v_item[i].menuItem->hintIcon = fw->hintIcon; v_item[i].menuItem->hint = fw->hint; //add item if it's set to visible or pin protected and allow to add an forwarder as next diff --git a/src/gui/widget/menue.cpp b/src/gui/widget/menue.cpp index 5ce614589..debbbaed7 100644 --- a/src/gui/widget/menue.cpp +++ b/src/gui/widget/menue.cpp @@ -1769,49 +1769,6 @@ int CMenuOptionStringChooser::paint( bool selected ) //------------------------------------------------------------------------------------------------------------------------------- -CMenuOptionLanguageChooser::CMenuOptionLanguageChooser(char* OptionValue, CChangeObserver* Observ, const char * const IconName) -{ - height = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight(); - optionValue = OptionValue; - observ = Observ; - - directKey = CRCInput::RC_nokey; - iconName = IconName ? IconName : ""; -} - - -CMenuOptionLanguageChooser::~CMenuOptionLanguageChooser() -{ -} - -int CMenuOptionLanguageChooser::exec(CMenuTarget*) -{ - g_settings.language = optionValue; - if(observ) - observ->changeNotify(LOCALE_LANGUAGESETUP_SELECT, (void *) optionValue.c_str()); - return menu_return::RETURN_EXIT; -} - -int CMenuOptionLanguageChooser::paint( bool selected ) -{ - active = true; - - //paint item - prepareItem(selected, height); - - paintItemButton(selected, height, iconName); - - //convert first letter to large - std::string s_optionValue = optionValue; - if(!s_optionValue.empty()) - s_optionValue[0] = (char)toupper(s_optionValue[0]); - //paint text - paintItemCaption(selected, height , s_optionValue.c_str()); - - return y+height; -} - -//------------------------------------------------------------------------------------------------------------------------------- CMenuForwarder::CMenuForwarder(const neutrino_locale_t Text, const bool Active, const std::string &Option, CMenuTarget* Target, const char * const ActionKey, neutrino_msg_t DirectKey, const char * const IconName, const char * const IconName_Info_right, bool IsStatic) { option_string = &Option; diff --git a/src/gui/widget/menue.h b/src/gui/widget/menue.h index c66484fea..aa286d8da 100644 --- a/src/gui/widget/menue.h +++ b/src/gui/widget/menue.h @@ -245,7 +245,7 @@ class CMenuForwarder : public CMenuItem int getWidth(void); neutrino_locale_t getTextLocale() const {return name;} CMenuTarget* getTarget() const {return jumpTarget;} - std::string getActionKey(){return actionKey;} + const char *getActionKey(){return actionKey.c_str();} int exec(CMenuTarget* parent); bool isSelectable(void) const { return active; } @@ -444,29 +444,6 @@ class CMenuOptionStringChooser : public CMenuItem int isMenueOptionChooser(void) const{return 1;} }; -class CMenuOptionLanguageChooser : public CMenuItem -{ - int height; - std::string optionValue; - CChangeObserver * observ; - - public: - CMenuOptionLanguageChooser(char* OptionValue, CChangeObserver* Observ = NULL, const char * const IconName = NULL); - ~CMenuOptionLanguageChooser(); - - int paint(bool selected); - int getHeight(void) const - { - return height; - } - bool isSelectable(void) const - { - return true; - } - - int exec(CMenuTarget* parent); -}; - class CMenuGlobal { public: