void OptionsScreenUI::eventCallback(Widget* widget, const std::string& name, const int playerID) { if (name == "options_choice") { std::string selection = ((RibbonWidget*)widget)->getSelectionIDString(PLAYER_ID_GAME_MASTER).c_str(); if (selection == "tab_audio") StateManager::get()->replaceTopMostScreen(OptionsScreenAudio::getInstance()); else if (selection == "tab_video") StateManager::get()->replaceTopMostScreen(OptionsScreenVideo::getInstance()); else if (selection == "tab_players") StateManager::get()->replaceTopMostScreen(OptionsScreenPlayers::getInstance()); else if (selection == "tab_controls") StateManager::get()->replaceTopMostScreen(OptionsScreenInput::getInstance()); } else if(name == "back") { StateManager::get()->escapePressed(); } else if (name == "skinchoice") { GUIEngine::SpinnerWidget* skinSelector = getWidget<GUIEngine::SpinnerWidget>("skinchoice"); assert( skinSelector != NULL ); const core::stringw selectedSkin = skinSelector->getStringValue(); UserConfigParams::m_skin_file = core::stringc(selectedSkin.c_str()).c_str() + std::string(".stkskin"); GUIEngine::reloadSkin(); } else if (name == "showfps") { CheckBoxWidget* fps = getWidget<CheckBoxWidget>("showfps"); assert( fps != NULL ); UserConfigParams::m_display_fps = fps->getState(); } else if (name=="enable-internet") { CheckBoxWidget* news = getWidget<CheckBoxWidget>("enable-internet"); assert( news != NULL ); if(INetworkHttp::get()) { INetworkHttp::get()->stopNetworkThread(); INetworkHttp::destroy(); } UserConfigParams::m_internet_status = news->getState() ? INetworkHttp::IPERM_ALLOWED : INetworkHttp::IPERM_NOT_ALLOWED; INetworkHttp::create(); // Note that the network thread must be started after the assignment // to network_http (since the thread might use network_http, otherwise // a race condition can be introduced resulting in a crash). INetworkHttp::get()->startNetworkThread(); } else if (name=="minimal-racegui") { CheckBoxWidget* min_gui = getWidget<CheckBoxWidget>("minimal-racegui"); assert( min_gui != NULL ); UserConfigParams::m_minimal_race_gui = !UserConfigParams::m_minimal_race_gui; } else if (name == "language") { ListWidget* list_widget = getWidget<ListWidget>("language"); std::string selection = list_widget->getSelectionInternalName(); delete translations; if (selection == "system") { #ifdef WIN32 _putenv("LANGUAGE="); #else unsetenv("LANGUAGE"); #endif } else { #ifdef WIN32 std::string s=std::string("LANGUAGE=")+selection.c_str(); _putenv(s.c_str()); #else setenv("LANGUAGE", selection.c_str(), 1); #endif } translations = new Translations(); GUIEngine::getStateManager()->hardResetAndGoToScreen<MainMenuScreen>(); GUIEngine::getFont()->updateRTL(); GUIEngine::getTitleFont()->updateRTL(); GUIEngine::getSmallFont()->updateRTL(); UserConfigParams::m_language = selection.c_str(); user_config->saveConfig(); GUIEngine::getStateManager()->pushScreen(OptionsScreenUI::getInstance()); } } // eventCallback
void OptionsScreenUI::eventCallback(Widget* widget, const std::string& name, const int playerID) { if (name == "options_choice") { std::string selection = ((RibbonWidget*)widget)->getSelectionIDString(PLAYER_ID_GAME_MASTER); Screen *screen = NULL; if (selection == "tab_audio") screen = OptionsScreenAudio::getInstance(); else if (selection == "tab_video") screen = OptionsScreenVideo::getInstance(); else if (selection == "tab_players") screen = TabbedUserScreen::getInstance(); else if (selection == "tab_controls") screen = OptionsScreenInput::getInstance(); //else if (selection == "tab_ui") // screen = OptionsScreenUI::getInstance(); if(screen) StateManager::get()->replaceTopMostScreen(screen); } else if(name == "back") { StateManager::get()->escapePressed(); } else if (name == "skinchoice") { GUIEngine::SpinnerWidget* skinSelector = getWidget<GUIEngine::SpinnerWidget>("skinchoice"); assert( skinSelector != NULL ); const core::stringw selectedSkin = skinSelector->getStringValue(); UserConfigParams::m_skin_file = core::stringc(selectedSkin.c_str()).c_str() + std::string(".stkskin"); GUIEngine::reloadSkin(); } else if (name == "showfps") { CheckBoxWidget* fps = getWidget<CheckBoxWidget>("showfps"); assert( fps != NULL ); UserConfigParams::m_display_fps = fps->getState(); } else if (name=="enable-internet") { CheckBoxWidget* internet = getWidget<CheckBoxWidget>("enable-internet"); assert( internet != NULL ); UserConfigParams::m_internet_status = internet->getState() ? RequestManager::IPERM_ALLOWED : RequestManager::IPERM_NOT_ALLOWED; // If internet gets enabled, re-initialise the addon manager (which // happens in a separate thread) so that news.xml etc can be // downloaded if necessary. CheckBoxWidget *stats = getWidget<CheckBoxWidget>("enable-hw-report"); LabelWidget *stats_label = getWidget<LabelWidget>("label-hw-report"); if(internet->getState()) { NewsManager::get()->init(false); stats->setVisible(true); stats_label->setVisible(true); stats->setState(UserConfigParams::m_hw_report_enable); } else { stats->setVisible(false); stats_label->setVisible(false); PlayerProfile* profile = PlayerManager::getCurrentPlayer(); if (profile != NULL && profile->isLoggedIn()) profile->requestSignOut(); } } else if (name=="enable-hw-report") { CheckBoxWidget* stats = getWidget<CheckBoxWidget>("enable-hw-report"); UserConfigParams::m_hw_report_enable = stats->getState(); if(stats->getState()) HardwareStats::reportHardwareStats(); } else if (name=="show-login") { CheckBoxWidget* show_login = getWidget<CheckBoxWidget>("show-login"); assert( show_login != NULL ); UserConfigParams::m_always_show_login_screen = show_login->getState(); } else if (name=="perPlayerDifficulty") { CheckBoxWidget* difficulty = getWidget<CheckBoxWidget>("perPlayerDifficulty"); assert( difficulty != NULL ); UserConfigParams::m_per_player_difficulty = difficulty->getState(); } else if (name == "language") { ListWidget* list_widget = getWidget<ListWidget>("language"); std::string selection = list_widget->getSelectionInternalName(); delete translations; if (selection == "system") { #ifdef WIN32 _putenv("LANGUAGE="); #else unsetenv("LANGUAGE"); #endif } else { #ifdef WIN32 std::string s=std::string("LANGUAGE=")+selection.c_str(); _putenv(s.c_str()); #else setenv("LANGUAGE", selection.c_str(), 1); #endif } translations = new Translations(); // Reload fonts for new translation GUIEngine::getStateManager()->hardResetAndGoToScreen<MainMenuScreen>(); font_manager->getFont<BoldFace>()->reset(); font_manager->getFont<RegularFace>()->reset(); GUIEngine::getFont()->updateRTL(); GUIEngine::getTitleFont()->updateRTL(); GUIEngine::getSmallFont()->updateRTL(); GUIEngine::getLargeFont()->updateRTL(); GUIEngine::getOutlineFont()->updateRTL(); UserConfigParams::m_language = selection.c_str(); user_config->saveConfig(); OptionsScreenUI::getInstance()->push(); } } // eventCallback
void OptionsScreenUI::eventCallback(Widget* widget, const std::string& name, const int playerID) { if (name == "options_choice") { std::string selection = ((RibbonWidget*)widget)->getSelectionIDString(PLAYER_ID_GAME_MASTER).c_str(); if (selection == "tab_audio") StateManager::get()->replaceTopMostScreen(OptionsScreenAudio::getInstance()); else if (selection == "tab_video") StateManager::get()->replaceTopMostScreen(OptionsScreenVideo::getInstance()); else if (selection == "tab_players") StateManager::get()->replaceTopMostScreen(OptionsScreenPlayers::getInstance()); else if (selection == "tab_controls") StateManager::get()->replaceTopMostScreen(OptionsScreenInput::getInstance()); } else if(name == "back") { StateManager::get()->escapePressed(); } else if (name == "skinchoice") { GUIEngine::SpinnerWidget* skinSelector = getWidget<GUIEngine::SpinnerWidget>("skinchoice"); assert( skinSelector != NULL ); const core::stringw selectedSkin = skinSelector->getStringValue(); UserConfigParams::m_skin_file = core::stringc(selectedSkin.c_str()).c_str() + std::string(".stkskin"); GUIEngine::reloadSkin(); } else if (name == "showfps") { CheckBoxWidget* fps = getWidget<CheckBoxWidget>("showfps"); assert( fps != NULL ); UserConfigParams::m_display_fps = fps->getState(); } else if (name=="enable-internet") { CheckBoxWidget* internet = getWidget<CheckBoxWidget>("enable-internet"); assert( internet != NULL ); UserConfigParams::m_internet_status = internet->getState() ? RequestManager::IPERM_ALLOWED : RequestManager::IPERM_NOT_ALLOWED; // If internet gets enabled, re-initialise the addon manager (which // happens in a separate thread) so that news.xml etc can be // downloaded if necessary. if(internet->getState()) NewsManager::get()->init(false); } else if (name == "language") { ListWidget* list_widget = getWidget<ListWidget>("language"); std::string selection = list_widget->getSelectionInternalName(); delete translations; if (selection == "system") { #ifdef WIN32 _putenv("LANGUAGE="); #else unsetenv("LANGUAGE"); #endif } else { #ifdef WIN32 std::string s=std::string("LANGUAGE=")+selection.c_str(); _putenv(s.c_str()); #else setenv("LANGUAGE", selection.c_str(), 1); #endif } translations = new Translations(); GUIEngine::getStateManager()->hardResetAndGoToScreen<MainMenuScreen>(); GUIEngine::getFont()->updateRTL(); GUIEngine::getTitleFont()->updateRTL(); GUIEngine::getSmallFont()->updateRTL(); UserConfigParams::m_language = selection.c_str(); user_config->saveConfig(); GUIEngine::getStateManager()->pushScreen(OptionsScreenUI::getInstance()); } } // eventCallback