// ---------------------------------------------------------------------------- void AddonsScreen::eventCallback(GUIEngine::Widget* widget, const std::string& name, const int playerID) { if (name == "back") { StateManager::get()->escapePressed(); } else if (name == "reload") { if (!m_reloading) { m_reloading = true; INetworkHttp::get()->insertReInit(); GUIEngine::ListWidget* w_list = getWidget<GUIEngine::ListWidget>("list_addons"); w_list->clear(); w_list->addItem("spacer", L""); w_list->addItem("loading", _("Please wait while addons are updated"), m_icon_loading); } } else if (name == "list_addons") { GUIEngine::ListWidget* list = getWidget<GUIEngine::ListWidget>("list_addons"); std::string id = list->getSelectionInternalName(); if (!id.empty() && addons_manager->getAddon(id) != NULL) { m_selected_index = list->getSelectionID(); new AddonsLoading(0.8f, 0.8f, id); } } if (name == "category") { std::string selection = ((GUIEngine::RibbonWidget*)widget) ->getSelectionIDString(PLAYER_ID_GAME_MASTER).c_str(); if (selection == "tab_track") { m_type = "track"; loadList(); } else if (selection == "tab_kart") { m_type = "kart"; loadList(); } else if (selection == "tab_arena") { m_type = "arena"; loadList(); } } } // eventCallback
// ---------------------------------------------------------------------------- void OptionsScreenInput2::eventCallback(Widget* widget, const std::string& name, const int playerID) { //const std::string& screen_name = getName(); StateManager *sm = StateManager::get(); 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_to_device_list") { sm->replaceTopMostScreen(OptionsScreenInput::getInstance()); } else if (name == "back") { sm->replaceTopMostScreen(OptionsScreenInput::getInstance()); } else if (name == "actions") { GUIEngine::ListWidget* actions = getWidget<GUIEngine::ListWidget>("actions"); assert( actions != NULL ); // a player action in the list was clicked. find which one const std::string& clicked = actions->getSelectionInternalName(); for (int n=PA_BEFORE_FIRST+1; n<PA_COUNT; n++) { if (KartActionStrings[n] == clicked) { // we found which one. show the "press a key" dialog. if (UserConfigParams::logMisc()) { Log::info("OptionsScreenInput2", "Entering sensing mode for %s", m_config->getName().c_str()); } binding_to_set = (PlayerAction)n; new PressAKeyDialog(0.4f, 0.4f); if (m_config->getType() == DEVICE_CONFIG_TYPE_KEYBOARD) { input_manager->setMode(InputManager::INPUT_SENSE_KEYBOARD); } else if (m_config->getType() == DEVICE_CONFIG_TYPE_GAMEPAD) { input_manager->setMode(InputManager::INPUT_SENSE_GAMEPAD); } else { Log::error("OptionsScreenInput2", "Unknown selection device in options: %s", m_config->getName().c_str()); } break; } } } else if (name == "delete") { if (m_config->getType() == DEVICE_CONFIG_TYPE_KEYBOARD) { // keyboard configs may be deleted //I18N: shown before deleting an input configuration new MessageDialog( _("Are you sure you want to permanently delete " "this configuration?"), MessageDialog::MESSAGE_DIALOG_CONFIRM, this, false ); } else { // gamepad configs may be disabled if (m_config->isEnabled()) m_config->setEnabled(false); else m_config->setEnabled(true); // update widget label ButtonWidget* deleteBtn = getWidget<ButtonWidget>("delete"); deleteBtn->setLabel(m_config->isEnabled() ? _("Disable Device") : _("Enable Device") ); input_manager->getDeviceList()->serialize(); } } } // eventCallback