QWidget *UserBindsPage::widget() { unsigned p, retro_id; unsigned max_users = *(input_driver_get_uint(INPUT_ACTION_MAX_USERS)); QWidget *widget = new QWidget; QGridLayout *layout = new QGridLayout; QComboBox *userCombo = new QComboBox; QStackedWidget *stack = new QStackedWidget; for (p = 0; p < max_users; p++) { userCombo->addItem(QString::number(p)); QWidget *uWidget = new QWidget(); FormLayout *form = new FormLayout(); for (retro_id = 0; retro_id < RARCH_FIRST_CUSTOM_BIND + 20; retro_id++) { char descriptor[300]; const struct retro_keybind *keybind = &input_config_binds[p][retro_id]; const struct retro_keybind *auto_bind = (const struct retro_keybind*) input_config_get_bind_auto(p, retro_id); input_config_get_bind_string(descriptor, keybind, auto_bind, sizeof(descriptor)); const struct retro_keybind *keyptr = &input_config_binds[p][retro_id]; QString label = msg_hash_to_str(keyptr->enum_idx); form->addRow(QString(msg_hash_to_str(keyptr->enum_idx)), new QPushButton(QString(descriptor))); } uWidget->setLayout(form); stack->addWidget(uWidget); } connect(userCombo, SIGNAL(activated(int)), stack, SLOT(setCurrentIndex(int))); layout->addWidget(userCombo, 0, 0); layout->addWidget(stack, 1, 0); widget->setLayout(layout); return widget; }
int menu_dialog_iterate(char *s, size_t len, const char *label) { #ifdef HAVE_CHEEVOS cheevos_ctx_desc_t desc_info; #endif bool do_exit = false; settings_t *settings = config_get_ptr(); switch (menu_dialog_current_type) { case MENU_DIALOG_WELCOME: { static rarch_timer_t timer; if (!rarch_timer_is_running(&timer)) rarch_timer_begin(&timer, 3); rarch_timer_tick(&timer); menu_hash_get_help_enum( MENU_ENUM_LABEL_WELCOME_TO_RETROARCH, s, len); if (!timer.timer_end && rarch_timer_has_expired(&timer)) { rarch_timer_end(&timer); do_exit = true; } } break; case MENU_DIALOG_HELP_CONTROLS: { unsigned i; char s2[PATH_MAX_LENGTH]; const unsigned binds[] = { RETRO_DEVICE_ID_JOYPAD_UP, RETRO_DEVICE_ID_JOYPAD_DOWN, RETRO_DEVICE_ID_JOYPAD_A, RETRO_DEVICE_ID_JOYPAD_B, RETRO_DEVICE_ID_JOYPAD_SELECT, RETRO_DEVICE_ID_JOYPAD_START, RARCH_MENU_TOGGLE, RARCH_QUIT_KEY, RETRO_DEVICE_ID_JOYPAD_X, RETRO_DEVICE_ID_JOYPAD_Y, }; char desc[ARRAY_SIZE(binds)][64]; for (i = 0; i < ARRAY_SIZE(binds); i++) desc[i][0] = '\0'; for (i = 0; i < ARRAY_SIZE(binds); i++) { const struct retro_keybind *keybind = &input_config_binds[0][binds[i]]; const struct retro_keybind *auto_bind = (const struct retro_keybind*) input_config_get_bind_auto(0, binds[i]); input_config_get_bind_string(desc[i], keybind, auto_bind, sizeof(desc[i])); } s2[0] = '\0'; menu_hash_get_help_enum(MENU_ENUM_LABEL_VALUE_MENU_ENUM_CONTROLS_PROLOG, s2, sizeof(s2)); snprintf(s, len, "%s" "[%s]: " "%-20s\n" "[%s]: " "%-20s\n" "[%s]: " "%-20s\n" "[%s]: " "%-20s\n" "[%s]: " "%-20s\n" "[%s]: " "%-20s\n" "[%s]: " "%-20s\n" "[%s]: " "%-20s\n" "[%s]: " "%-20s\n", s2, msg_hash_to_str( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_UP), desc[0], msg_hash_to_str( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_DOWN), desc[1], msg_hash_to_str( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_CONFIRM), desc[2], msg_hash_to_str( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK), desc[3], msg_hash_to_str( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_INFO), desc[4], msg_hash_to_str( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_START), desc[5], msg_hash_to_str( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_MENU), desc[6], msg_hash_to_str( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_QUIT), desc[7], msg_hash_to_str( MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_KEYBOARD), desc[8] ); } break; #ifdef HAVE_CHEEVOS case MENU_DIALOG_HELP_CHEEVOS_DESCRIPTION: desc_info.idx = menu_dialog_current_id; desc_info.s = s; desc_info.len = len; cheevos_get_description(&desc_info); break; #endif case MENU_DIALOG_HELP_WHAT_IS_A_CORE: menu_hash_get_help_enum(MENU_ENUM_LABEL_VALUE_WHAT_IS_A_CORE_DESC, s, len); break; case MENU_DIALOG_HELP_LOADING_CONTENT: menu_hash_get_help_enum(MENU_ENUM_LABEL_LOAD_CONTENT_LIST, s, len); break; case MENU_DIALOG_HELP_CHANGE_VIRTUAL_GAMEPAD: menu_hash_get_help_enum( MENU_ENUM_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD_DESC, s, len); break; case MENU_DIALOG_HELP_AUDIO_VIDEO_TROUBLESHOOTING: menu_hash_get_help_enum( MENU_ENUM_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC, s, len); break; case MENU_DIALOG_HELP_SCANNING_CONTENT: menu_hash_get_help_enum(MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC, s, len); break; case MENU_DIALOG_HELP_EXTRACT: menu_hash_get_help_enum(MENU_ENUM_LABEL_VALUE_EXTRACTING_PLEASE_WAIT, s, len); if (settings->bools.bundle_finished) { settings->bools.bundle_finished = false; do_exit = true; } break; case MENU_DIALOG_QUIT_CONFIRM: case MENU_DIALOG_INFORMATION: case MENU_DIALOG_QUESTION: case MENU_DIALOG_WARNING: case MENU_DIALOG_ERROR: menu_hash_get_help_enum(menu_dialog_current_msg, s, len); break; case MENU_DIALOG_NONE: default: break; } if (do_exit) { menu_dialog_current_type = MENU_DIALOG_NONE; return 1; } return 0; }