Ejemplo n.º 1
0
int menu_cbs_init_bind_deferred_push(menu_file_list_cbs_t *cbs,
      const char *path, const char *label, unsigned type, size_t idx,
      const char *elem0, const char *elem1,
      uint32_t label_hash, uint32_t menu_label_hash)
{
   settings_t *settings   = config_get_ptr();

   if (!cbs)
      return -1;

   BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_default);

   if (cbs->setting)
   {
      const char *parent_group   = menu_setting_get_parent_group(cbs->setting);
      uint32_t parent_group_hash = menu_hash_calculate(parent_group);

      if ((parent_group_hash == MENU_VALUE_MAIN_MENU) && menu_setting_get_type(cbs->setting) == ST_GROUP)
      {
         if (!settings->menu.collapse_subgroups_enable)
         {
            BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_settings_subgroup);
            return 0;
         }
      }
   }

   if (menu_cbs_init_bind_deferred_push_compare_label(cbs, label, label_hash) == 0)
      return 0;

   if (menu_cbs_init_bind_deferred_push_compare_type(cbs, type, label_hash) == 0)
      return 0;

   return -1;
}
Ejemplo n.º 2
0
static int menu_cbs_init_bind_right_compare_label(menu_file_list_cbs_t *cbs,
      const char *label, uint32_t label_hash, const char *menu_label)
{
   unsigned i;

   if (cbs->setting)
   {
      const char *parent_group   = menu_setting_get_parent_group(cbs->setting);

      if (string_is_equal(parent_group, msg_hash_to_str(MENU_ENUM_LABEL_MAIN_MENU)) 
               && (menu_setting_get_type(cbs->setting) == ST_GROUP))
      {
         BIND_ACTION_RIGHT(cbs, action_right_scroll);
         return 0;
      }
   }

   for (i = 0; i < MAX_USERS; i++)
   {
      uint32_t label_setting_hash;
      char label_setting[PATH_MAX_LENGTH] = {0};

      snprintf(label_setting, sizeof(label_setting), "input_player%d_joypad_index", i + 1);
      label_setting_hash = msg_hash_calculate(label_setting);

      if (label_hash != label_setting_hash)
         continue;

      BIND_ACTION_RIGHT(cbs, bind_right_generic);
      return 0;
   }

   if (string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_PLAYLISTS_TAB)))
   {
      BIND_ACTION_RIGHT(cbs, action_right_mainmenu);
      return 0;
   }

   if (strstr(label, "rdb_entry"))
   {
      BIND_ACTION_RIGHT(cbs, action_right_scroll);
   }
   else
   {
      if (cbs->enum_idx != MSG_UNKNOWN)
      {
         switch (cbs->enum_idx)
         {
            case MENU_ENUM_LABEL_VIDEO_SHADER_SCALE_PASS:
               BIND_ACTION_RIGHT(cbs, action_right_shader_scale_pass);
               break;
            case MENU_ENUM_LABEL_VIDEO_SHADER_FILTER_PASS:
               BIND_ACTION_RIGHT(cbs, action_right_shader_filter_pass);
               break;
            case MENU_ENUM_LABEL_VIDEO_SHADER_DEFAULT_FILTER:
               BIND_ACTION_RIGHT(cbs, action_right_shader_filter_default);
               break;
            case MENU_ENUM_LABEL_VIDEO_SHADER_NUM_PASSES:
               BIND_ACTION_RIGHT(cbs, action_right_shader_num_passes);
               break;
            case MENU_ENUM_LABEL_CHEAT_NUM_PASSES:
               BIND_ACTION_RIGHT(cbs, action_right_cheat_num_passes);
               break;
            case MENU_ENUM_LABEL_SCREEN_RESOLUTION:
               BIND_ACTION_RIGHT(cbs, action_right_video_resolution);
               break;
            case MENU_ENUM_LABEL_NO_ITEMS:
            case MENU_ENUM_LABEL_NO_PLAYLIST_ENTRIES_AVAILABLE:
               if (  string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_MAIN_MENU))       ||
                     string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_PLAYLISTS_TAB))   ||
                     string_is_equal(menu_label, msg_hash_to_str(MENU_ENUM_LABEL_HORIZONTAL_MENU))
                  )
               {
                  BIND_ACTION_RIGHT(cbs, action_right_mainmenu);
                  break;
               }
            default:
               return -1;
         }
      }
      else
      {
         return -1;
      }
   }

   return 0;
}
Ejemplo n.º 3
0
static int menu_cbs_init_bind_left_compare_label(menu_file_list_cbs_t *cbs,
      const char *label, uint32_t label_hash, uint32_t menu_label_hash, const char *elem0)
{
   unsigned i;

   if (cbs->setting)
   {
      const char *parent_group   = menu_setting_get_parent_group(cbs->setting);
      uint32_t parent_group_hash = menu_hash_calculate(parent_group);

      if ((parent_group_hash == MENU_VALUE_MAIN_MENU) && (menu_setting_get_type(cbs->setting) == ST_GROUP))
      {
         BIND_ACTION_LEFT(cbs, action_left_mainmenu);
         return 0;
      }
   }

   for (i = 0; i < MAX_USERS; i++)
   {
      uint32_t label_setting_hash;
      char label_setting[PATH_MAX_LENGTH];

      label_setting[0] = '\0';
      snprintf(label_setting, sizeof(label_setting), "input_player%d_joypad_index", i + 1);

      label_setting_hash = menu_hash_calculate(label_setting);

      if (label_hash != label_setting_hash)
         continue;

      BIND_ACTION_LEFT(cbs, bind_left_generic);
      return 0;
   }

   if (strstr(label, "rdb_entry"))
   {
      BIND_ACTION_LEFT(cbs, action_left_scroll);
   }
   else
   {
      switch (label_hash)
      {
         case MENU_LABEL_VIDEO_SHADER_SCALE_PASS:
            BIND_ACTION_LEFT(cbs, action_left_shader_scale_pass);
            break;
         case MENU_LABEL_VIDEO_SHADER_FILTER_PASS:
            BIND_ACTION_LEFT(cbs, action_left_shader_filter_pass);
            break;
         case MENU_LABEL_VIDEO_SHADER_DEFAULT_FILTER:
            BIND_ACTION_LEFT(cbs, action_left_shader_filter_default);
            break;
         case MENU_LABEL_VIDEO_SHADER_NUM_PASSES:
            BIND_ACTION_LEFT(cbs, action_left_shader_num_passes);
            break;
         case MENU_LABEL_CHEAT_NUM_PASSES:
            BIND_ACTION_LEFT(cbs, action_left_cheat_num_passes);
            break;
         case MENU_LABEL_SCREEN_RESOLUTION: 
            BIND_ACTION_LEFT(cbs, action_left_video_resolution);
            break;
         case MENU_LABEL_NO_PLAYLIST_ENTRIES_AVAILABLE:
            switch (menu_label_hash)
            {
               case MENU_VALUE_HORIZONTAL_MENU:
               case MENU_VALUE_MAIN_MENU:
                  BIND_ACTION_LEFT(cbs, action_left_mainmenu);
                  break;
            }
         default:
            return -1;
      }
   }

   return 0;
}
Ejemplo n.º 4
0
static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
      const char *label, uint32_t label_hash, const char *elem1)
{
   if (cbs->setting)
   {
      const char *parent_group   = menu_setting_get_parent_group(cbs->setting);
      uint32_t parent_group_hash = menu_hash_calculate(parent_group);

      if ((parent_group_hash == MENU_VALUE_MAIN_MENU) && menu_setting_get_type(cbs->setting) == ST_GROUP)
      {
         BIND_ACTION_GET_TITLE(cbs, action_get_title_group_settings);
         return 0;
      }
   }

   switch (label_hash)
   {
      case MENU_LABEL_DEFERRED_DATABASE_MANAGER_LIST:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_deferred_database_manager_list);
         break;
      case MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_deferred_cursor_manager_list);
         break;
      case MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_DEVELOPER:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_developer);
         break;
      case MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_PUBLISHER:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_publisher);
         break;
      case MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ORIGIN:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_origin);
         break;
      case MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_FRANCHISE:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_franchise);
         break;
      case MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_EDGE_MAGAZINE_RATING:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_edge_magazine_rating);
         break;
      case MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_EDGE_MAGAZINE_ISSUE:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_edge_magazine_issue);
         break;
      case MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_RELEASEMONTH:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_releasedate_by_month);
         break;
      case MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_RELEASEYEAR:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_releasedate_by_year);
         break;
      case MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ESRB_RATING:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_esrb_rating);
         break;
      case MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ELSPA_RATING:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_elspa_rating);
         break;
      case MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_PEGI_RATING:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_pegi_rating);
         break;
      case MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_CERO_RATING:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_cero_rating);
         break;
      case MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_BBFC_RATING:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_bbfc_rating);
         break;
      case MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_MAX_USERS:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_max_users);
         break;
      case MENU_LABEL_DEFERRED_RDB_ENTRY_DETAIL:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_database_info);
         break;
      case MENU_LABEL_DEFERRED_CORE_LIST:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_deferred_core_list);
         break;
      case MENU_LABEL_CONFIGURATIONS:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_configurations);
         break;
      case MENU_LABEL_JOYPAD_AUTOCONFIG_DIR:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_autoconfig_directory);
         break;
      case MENU_LABEL_EXTRACTION_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_extraction_directory);
         break;
      case MENU_LABEL_SYSTEM_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_system_directory);
         break;
      case MENU_LABEL_ASSETS_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_assets_directory);
         break;
      case MENU_LABEL_SAVEFILE_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_savefile_directory);
         break;
      case MENU_LABEL_OVERLAY_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_overlay_directory);
         break;
      case MENU_LABEL_RGUI_BROWSER_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_browser_directory);
         break;
      case MENU_LABEL_PLAYLIST_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_playlist_directory);
         break;
      case MENU_LABEL_CONTENT_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_content_directory);
         break;
      case MENU_LABEL_SCREENSHOT_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_screenshot_directory);
         break;
      case MENU_LABEL_VIDEO_SHADER_DIR:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_video_shader_directory);
         break;
      case MENU_LABEL_VIDEO_FILTER_DIR:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_video_filter_directory);
         break;
      case MENU_LABEL_AUDIO_FILTER_DIR:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_audio_filter_directory);
         break;
      case MENU_LABEL_CURSOR_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_cursor_directory);
         break;
      case MENU_LABEL_RECORDING_CONFIG_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_recording_config_directory);
         break;
      case MENU_LABEL_RECORDING_OUTPUT_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_recording_output_directory);
         break;
      case MENU_LABEL_OSK_OVERLAY_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_onscreen_overlay_keyboard_directory);
         break;
      case MENU_LABEL_INPUT_REMAPPING_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_input_remapping_directory);
         break;
      case MENU_LABEL_CONTENT_DATABASE_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_content_database_directory);
         break;
      case MENU_LABEL_SAVESTATE_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_savestate_directory);
         break;
      case MENU_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_dynamic_wallpapers_directory);
         break;
      case MENU_LABEL_CORE_ASSETS_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_core_assets_directory);
         break;
      case MENU_LABEL_RGUI_CONFIG_DIRECTORY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_config_directory);
         break;
      case MENU_LABEL_CORE_LIST:
      case MENU_LABEL_MANAGEMENT:
      case MENU_LABEL_ONLINE_UPDATER:
      case MENU_LABEL_SETTINGS:
      case MENU_LABEL_FRONTEND_COUNTERS:
      case MENU_LABEL_CORE_COUNTERS:
      case MENU_LABEL_LOAD_CONTENT_HISTORY:
      case MENU_LABEL_INFO_SCREEN:
      case MENU_LABEL_SYSTEM_INFORMATION:
      case MENU_LABEL_DEBUG_INFORMATION:
      case MENU_LABEL_CORE_INFORMATION:
      case MENU_LABEL_VIDEO_SHADER_PARAMETERS:
      case MENU_LABEL_VIDEO_SHADER_PRESET_PARAMETERS:
      case MENU_LABEL_DISK_OPTIONS:
      case MENU_LABEL_CORE_OPTIONS:
      case MENU_LABEL_SHADER_OPTIONS:
      case MENU_LABEL_CORE_CHEAT_OPTIONS:
      case MENU_LABEL_CORE_INPUT_REMAPPING_OPTIONS:
      case MENU_LABEL_DATABASE_MANAGER_LIST:
      case MENU_LABEL_CURSOR_MANAGER_LIST:
      case MENU_LABEL_DEFERRED_CORE_UPDATER_LIST:
      case MENU_LABEL_CONTENT_COLLECTION_LIST:
      case MENU_LABEL_INFORMATION_LIST:
      case MENU_LABEL_LOAD_CONTENT_LIST:
      case MENU_LABEL_CONTENT_SETTINGS:
      case MENU_LABEL_ADD_CONTENT_LIST:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_action_generic);
         break;
      case MENU_LABEL_DISK_IMAGE_APPEND:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_disk_image_append);
         break;
      case MENU_LABEL_VIDEO_SHADER_PRESET:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_video_shader_preset);
         break;
      case MENU_LABEL_CHEAT_FILE_LOAD:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_cheat_file_load);
         break;
      case MENU_LABEL_REMAP_FILE_LOAD:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_remap_file_load);
         break;
      case MENU_LABEL_HELP:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_help);
         break;
      case MENU_LABEL_HELP_LIST:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_help_list);
         break;
      case MENU_LABEL_INPUT_OVERLAY:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_overlay);
         break;
      case MENU_LABEL_VIDEO_FONT_PATH:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_font_path);
         break;
      case MENU_LABEL_VIDEO_FILTER:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_video_filter);
         break;
      case MENU_LABEL_AUDIO_DSP_PLUGIN:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_audio_filter);
         break;
      case MENU_LABEL_CHEAT_DATABASE_PATH:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_cheat_directory);
         break;
      case MENU_LABEL_LIBRETRO_DIR_PATH:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_core_directory);
         break;
      case MENU_LABEL_LIBRETRO_INFO_PATH:
         BIND_ACTION_GET_TITLE(cbs, action_get_title_core_info_directory);
         break;
      default:
         return -1;
   }

   return 0;
}