Start adding 'Content Downloader' options

This commit is contained in:
twinaphex 2015-07-04 03:37:43 +02:00
parent 7634ffb4ac
commit d20f110a2f
7 changed files with 95 additions and 2 deletions

View File

@ -246,7 +246,7 @@ static int deferred_push_disk_options(menu_displaylist_info_t *info)
char *core_buf;
size_t core_len;
int cb_core_updater_list(void *data_, size_t len)
static int cb_net_generic(void *data_, size_t len)
{
char *data = (char*)data_;
menu_handle_t *menu = menu_driver_get_ptr();
@ -273,10 +273,25 @@ int cb_core_updater_list(void *data_, size_t len)
return 0;
}
int cb_core_updater_list(void *data_, size_t len)
{
return cb_net_generic(data_, len);
}
int cb_core_content_list(void *data_, size_t len)
{
return cb_net_generic(data_, len);
}
static int deferred_push_core_updater_list(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_CORES_UPDATER);
}
static int deferred_push_core_content_list(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_CORE_CONTENT);
}
#endif
static int deferred_push_history_list(menu_displaylist_info_t *info)
@ -531,6 +546,11 @@ static int menu_cbs_init_bind_deferred_push_compare_label(menu_file_list_cbs_t *
{
switch (label_hash)
{
case MENU_LABEL_DEFERRED_CORE_CONTENT_LIST:
#ifdef HAVE_NETWORKING
cbs->action_deferred_push = deferred_push_core_content_list;
#endif
break;
case MENU_LABEL_DEFERRED_CORE_UPDATER_LIST:
#ifdef HAVE_NETWORKING
cbs->action_deferred_push = deferred_push_core_updater_list;

View File

@ -516,6 +516,43 @@ static int action_ok_core_updater_list(const char *path,
return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC);
}
static int action_ok_core_content_list(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx)
{
char url_path[PATH_MAX_LENGTH] = {0};
menu_displaylist_info_t info = {0};
menu_list_t *menu_list = menu_list_get_ptr();
settings_t *settings = config_get_ptr();
if (!menu_list)
return -1;
(void)url_path;
menu_entries_set_nonblocking_refresh();
if (settings->network.buildbot_url[0] == '\0')
return -1;
#ifdef HAVE_NETWORKING
event_command(EVENT_CMD_NETWORK_INIT);
fill_pathname_join(url_path, settings->network.buildbot_assets_url,
"cores/gw/.index", sizeof(url_path));
rarch_main_data_msg_queue_push(DATA_TYPE_HTTP, url_path, "cb_core_content_list", 0, 1,
true);
#endif
info.list = menu_list->menu_stack;
info.type = type;
info.directory_ptr = idx;
strlcpy(info.path, path, sizeof(info.path));
strlcpy(info.label,
menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_CONTENT_LIST), sizeof(info.label));
return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC);
}
static int action_ok_remap_file(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx)
{
@ -1730,6 +1767,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
case MENU_LABEL_RECORD_CONFIG:
cbs->action_ok = action_ok_record_configfile;
break;
case MENU_LABEL_DOWNLOAD_CORE_CONTENT:
cbs->action_ok = action_ok_core_content_list;
break;
case MENU_LABEL_VALUE_CORE_UPDATER_LIST:
cbs->action_ok = action_ok_core_updater_list;
break;

View File

@ -26,6 +26,10 @@ static const char *menu_hash_to_str_us_label(uint32_t hash)
{
switch (hash)
{
case MENU_LABEL_DEFERRED_CORE_CONTENT_LIST:
return "deferred_core_content_list";
case MENU_LABEL_DOWNLOAD_CORE_CONTENT:
return "download_core_content";
case MENU_LABEL_SCAN_THIS_DIRECTORY:
return "scan_this_directory";
case MENU_LABEL_SCAN_FILE:
@ -604,6 +608,8 @@ const char *menu_hash_to_str_us(uint32_t hash)
switch (hash)
{
case MENU_LABEL_VALUE_DOWNLOAD_CORE_CONTENT:
return "Download Content";
case MENU_LABEL_VALUE_SCAN_THIS_DIRECTORY:
return "<Scan This Directory>";
case MENU_LABEL_VALUE_SCAN_FILE:

View File

@ -1658,6 +1658,13 @@ static int menu_displaylist_parse_add_content_list(menu_displaylist_info_t *info
(void)global;
#ifdef HAVE_NETWORKING
menu_list_push(info->list,
menu_hash_to_str(MENU_LABEL_VALUE_DOWNLOAD_CORE_CONTENT),
menu_hash_to_str(MENU_LABEL_DOWNLOAD_CORE_CONTENT),
MENU_SETTING_ACTION, 0, 0);
#endif
#ifdef HAVE_LIBRETRODB
menu_list_push(info->list,
menu_hash_to_str(MENU_LABEL_VALUE_SCAN_DIRECTORY),
@ -2253,6 +2260,15 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type)
need_push = true;
break;
case DISPLAYLIST_CORE_CONTENT:
menu_list_clear(info->list);
#ifdef HAVE_NETWORKING
menu_list_clear(info->list);
print_buf_lines(info->list, core_buf, core_len, MENU_FILE_DOWNLOAD_CORE);
need_push = true;
need_refresh = true;
#endif
break;
case DISPLAYLIST_CORES_UPDATER:
menu_list_clear(info->list);
#ifdef HAVE_NETWORKING

View File

@ -80,7 +80,8 @@ enum
DISPLAYLIST_OPTIONS_MANAGEMENT,
DISPLAYLIST_OPTIONS_DISK,
DISPLAYLIST_OPTIONS_SHADERS,
DISPLAYLIST_ADD_CONTENT_LIST
DISPLAYLIST_ADD_CONTENT_LIST,
DISPLAYLIST_CORE_CONTENT
};
typedef struct menu_displaylist_info

View File

@ -25,6 +25,11 @@ extern "C" {
#define MENU_VALUE_SEARCH 0xd0d5febbU
#define MENU_LABEL_DEFERRED_CORE_CONTENT_LIST 0x76150c63U
#define MENU_LABEL_VALUE_DOWNLOAD_CORE_CONTENT 0xa8bb22d8U
#define MENU_LABEL_DOWNLOAD_CORE_CONTENT 0xc63b1d3fU
#define MENU_LABEL_SCAN_THIS_DIRECTORY 0x6921b775U
#define MENU_LABEL_VALUE_SCAN_THIS_DIRECTORY 0x2911e177U

View File

@ -36,10 +36,12 @@
#define CB_UPDATE_DATABASES 0x931eb8d3U
#define CB_UPDATE_SHADERS_GLSL 0x0121a186U
#define CB_UPDATE_SHADERS_CG 0xc93a53feU
#define CB_CORE_CONTENT_LIST 0xebc51227U
extern char core_updater_path[PATH_MAX_LENGTH];
int cb_core_updater_list(void *data_, size_t len);
int cb_core_content_list(void *data_, size_t len);
#ifdef HAVE_ZLIB
static int zlib_extract_core_callback(const char *name, const char *valid_exts,
@ -261,6 +263,9 @@ static int cb_http_conn_default(void *data_, size_t len)
case CB_CORE_UPDATER_LIST:
http->cb = &cb_core_updater_list;
break;
case CB_CORE_CONTENT_LIST:
http->cb = &cb_core_content_list;
break;
case CB_UPDATE_ASSETS:
http->cb = &cb_update_assets;
break;