diff --git a/intl/msg_hash_us.c b/intl/msg_hash_us.c index 3c32178c95..e77dfb4a55 100644 --- a/intl/msg_hash_us.c +++ b/intl/msg_hash_us.c @@ -1357,6 +1357,8 @@ static const char *menu_hash_to_str_us_label_enum(enum msg_hash_enums msg) return "download_core_content"; case MENU_ENUM_LABEL_DOWNLOAD_CORE_CONTENT_DIRS: return "download_core_content_dirs"; + case MENU_ENUM_LABEL_CB_DOWNLOAD_URL: + return "cb_download_url"; case MENU_ENUM_LABEL_SCAN_THIS_DIRECTORY: return "scan_this_directory"; case MENU_ENUM_LABEL_SCAN_FILE: diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 64b8daed2e..1ac8988b89 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -614,6 +614,13 @@ static int menu_cbs_init_bind_deferred_push_compare_label( BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_settings_list); return 0; } + else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_CONTENT_DIRS_LIST))) + { +#ifdef HAVE_NETWORKING + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_content_dirs_list); +#endif + return 0; + } if (strstr(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_RDB_ENTRY_DETAIL))) { diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index d4420a7c94..0f9c449d4a 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1715,6 +1715,11 @@ static int action_ok_download_generic(const char *path, switch (enum_idx) { + case MENU_ENUM_LABEL_CB_DOWNLOAD_URL: + fill_pathname_join(s, label, + path, sizeof(s)); + enum_idx = MENU_ENUM_LABEL_CB_CORE_CONTENT_DOWNLOAD; + break; case MENU_ENUM_LABEL_CB_CORE_CONTENT_DOWNLOAD: fill_pathname_join(s, settings->network.buildbot_assets_url, "cores/gw", sizeof(s)); @@ -1790,6 +1795,13 @@ static int action_ok_thumbnails_updater_download(const char *path, MENU_ENUM_LABEL_CB_THUMBNAILS_UPDATER_DOWNLOAD); } +static int action_ok_download_url(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return action_ok_download_generic(path, label, type, idx, entry_idx, + MENU_ENUM_LABEL_CB_DOWNLOAD_URL); +} + static int action_ok_core_updater_download(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -3097,6 +3109,9 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, case FILE_TYPE_DOWNLOAD_CORE: BIND_ACTION_OK(cbs, action_ok_core_updater_download); break; + case FILE_TYPE_DOWNLOAD_URL: + BIND_ACTION_OK(cbs, action_ok_download_url); + break; case FILE_TYPE_DOWNLOAD_THUMBNAIL: BIND_ACTION_OK(cbs, action_ok_thumbnails_updater_download); break; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index ed9ce8850d..6e5581f8a1 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -62,7 +62,8 @@ extern unsigned rpl_entry_selection_ptr; extern char *core_buf; extern size_t core_len; -static void print_buf_lines(file_list_t *list, char *buf, int buf_size, +static void print_buf_lines(file_list_t *list, char *buf, + const char *label, int buf_size, enum menu_file_type type) { char c; @@ -102,7 +103,7 @@ static void print_buf_lines(file_list_t *list, char *buf, int buf_size, if (line_start[ln] == '\n') line_start[ln] = '\0'; - menu_entries_add_enum(list, line_start, "", + menu_entries_add_enum(list, line_start, label, MSG_UNKNOWN, type, 0, 0); switch (type) @@ -4426,19 +4427,23 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) break; case DISPLAYLIST_CORE_CONTENT: #ifdef HAVE_NETWORKING - print_buf_lines(info->list, core_buf, + print_buf_lines(info->list, core_buf, "", core_len, FILE_TYPE_DOWNLOAD_CORE_CONTENT); info->need_push = true; info->need_refresh = true; #endif break; case DISPLAYLIST_CORE_CONTENT_DIRS: + { #ifdef HAVE_NETWORKING - print_buf_lines(info->list, core_buf, - core_len, FILE_TYPE_DOWNLOAD_CORE_CONTENT); - info->need_push = true; - info->need_refresh = true; + char new_label[PATH_MAX_LENGTH]; + fill_pathname_join(new_label, settings->network.buildbot_assets_url, "cores", sizeof(new_label)); + print_buf_lines(info->list, core_buf, new_label, + core_len, FILE_TYPE_DOWNLOAD_URL); + info->need_push = true; + info->need_refresh = true; #endif + } break; case DISPLAYLIST_CORES_UPDATER: #ifdef HAVE_NETWORKING @@ -4451,7 +4456,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) break; case DISPLAYLIST_THUMBNAILS_UPDATER: #ifdef HAVE_NETWORKING - print_buf_lines(info->list, core_buf, + print_buf_lines(info->list, core_buf, "", core_len, FILE_TYPE_DOWNLOAD_THUMBNAIL_CONTENT); info->need_push = true; info->need_refresh = true; @@ -4460,7 +4465,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) break; case DISPLAYLIST_LAKKA: #ifdef HAVE_NETWORKING - print_buf_lines(info->list, core_buf, + print_buf_lines(info->list, core_buf, "", core_len, FILE_TYPE_DOWNLOAD_LAKKA); info->need_push = true; info->need_refresh = true; diff --git a/msg_hash.h b/msg_hash.h index 2dfc1dfbf2..b09fbe74ef 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -51,6 +51,7 @@ enum menu_file_type FILE_TYPE_IMAGEVIEWER, FILE_TYPE_REMAP, FILE_TYPE_DOWNLOAD_CORE, + FILE_TYPE_DOWNLOAD_URL, FILE_TYPE_DOWNLOAD_CORE_CONTENT, FILE_TYPE_DOWNLOAD_CORE_INFO, FILE_TYPE_DOWNLOAD_THUMBNAIL_CONTENT, @@ -1496,6 +1497,7 @@ enum msg_hash_enums /* Callback strings */ MENU_ENUM_LABEL_CB_THUMBNAILS_UPDATER_DOWNLOAD, + MENU_ENUM_LABEL_CB_DOWNLOAD_URL, MENU_ENUM_LABEL_CB_UPDATE_OVERLAYS, MENU_ENUM_LABEL_CB_CORE_UPDATER_LIST, MENU_ENUM_LABEL_CB_MENU_WALLPAPER,