void OptionsScreenInput::buildDeviceList() { GUIEngine::ListWidget* devices = this->getWidget<GUIEngine::ListWidget>("devices"); assert( devices != NULL ); assert( m_icon_bank != NULL ); devices->setIcons(m_icon_bank); const int keyboard_config_count = input_manager->getDeviceList()->getKeyboardConfigAmount(); for (int i=0; i<keyboard_config_count; i++) { //KeyboardConfig *config = input_manager->getDeviceList()->getKeyboardConfig(i); std::ostringstream kbname; kbname << "keyboard" << i; const std::string internal_name = kbname.str(); // since irrLicht's list widget has the nasty tendency to put the // icons very close to the text, I'm adding spaces to compensate. devices->addItem(internal_name, (core::stringw(" ") + _("Keyboard %i", i)).c_str(), 0 /* icon */); } const int gpad_config_count = input_manager->getDeviceList()->getGamePadConfigAmount(); for (int i = 0; i < gpad_config_count; i++) { GamepadConfig *config = input_manager->getDeviceList()->getGamepadConfig(i); // Don't display the configuration if a matching device is not available if (config->isPlugged()) { // since irrLicht's list widget has the nasty tendency to put the // icons very close to the text, I'm adding spaces to compensate. irr::core::stringw name = (" " + config->getName()).c_str(); if (config->getNumberOfDevices() > 1) { name += core::stringw(L" (x"); name += config->getNumberOfDevices(); name += core::stringw(L")"); } std::ostringstream gpname; gpname << "gamepad" << i; const std::string internal_name = gpname.str(); const int icon = (config->isEnabled() ? 1 : 2); devices->addItem(internal_name, name, icon); } // if config->isPlugged } // for i<gpad_config_count } // buildDeviceList