From 925d60c0cc2c1ce7b4c294a24b3e4277d571211f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 27 Dec 2016 00:02:09 +0100 Subject: [PATCH] Implement part 2 of Browse URL --- Makefile.common | 11 ++++++----- griffin/griffin.c | 4 ++++ intl/msg_hash_lbl.h | 2 ++ menu/cbs/menu_cbs_deferred_push.c | 10 ++++++++++ menu/cbs/menu_cbs_ok.c | 20 ++++++++++++++++++++ menu/menu_cbs.h | 1 + menu/menu_displaylist.c | 24 ++++++++++++++++++++++++ menu/menu_displaylist.h | 1 + msg_hash.h | 3 ++- 9 files changed, 70 insertions(+), 6 deletions(-) diff --git a/Makefile.common b/Makefile.common index 25a870d5da..0e6a143042 100644 --- a/Makefile.common +++ b/Makefile.common @@ -1103,12 +1103,13 @@ ifeq ($(HAVE_NETWORKING), 1) DEFINES += -DHAVE_NETWORKING OBJ += $(LIBRETRO_COMM_DIR)/net/net_compat.o \ $(LIBRETRO_COMM_DIR)/net/net_http.o \ + $(LIBRETRO_COMM_DIR)/net/net_http_parse.o \ $(LIBRETRO_COMM_DIR)/net/net_socket.o \ - $(LIBRETRO_COMM_DIR)/net/net_natt.o \ - network/net_http_special.o \ - tasks/task_http.o \ - tasks/task_netplay_lan_scan.o \ - tasks/task_wifi.o + $(LIBRETRO_COMM_DIR)/net/net_natt.o \ + network/net_http_special.o \ + tasks/task_http.o \ + tasks/task_netplay_lan_scan.o \ + tasks/task_wifi.o ifneq ($(HAVE_SOCKET_LEGACY),1) OBJ += $(LIBRETRO_COMM_DIR)/net/net_ifinfo.o diff --git a/griffin/griffin.c b/griffin/griffin.c index 18fb49aad4..6eb2c11491 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -138,6 +138,10 @@ ACHIEVEMENTS #include "../cheevos.c" #endif +#if defined(HAVE_NETWORKING) +#include "../libretro-common/net/net_http_parse.c" +#endif + /*============================================================ MD5 ============================================================ */ diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 146eaca154..e470f94b05 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -215,6 +215,8 @@ MSG_HASH(MENU_ENUM_LABEL_CUSTOM_RATIO, "custom_ratio") MSG_HASH(MENU_ENUM_LABEL_DATABASE_MANAGER_LIST, "database_manager_list") +MSG_HASH(MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_START, + "deferred_browse_url_start") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_LIST, "deferred_browse_url_list") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_ACCOUNTS_CHEEVOS_LIST, diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index bf7fb4cc3b..b3c90963d7 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -779,6 +779,11 @@ static int deferred_push_browse_url_list(menu_displaylist_info_t *info) return deferred_push_dlist(info, DISPLAYLIST_BROWSE_URL_LIST); } +static int deferred_push_browse_url_start(menu_displaylist_info_t *info) +{ + return deferred_push_dlist(info, DISPLAYLIST_BROWSE_URL_START); +} + static int deferred_push_core_list(menu_displaylist_info_t *info) { return deferred_push_dlist(info, DISPLAYLIST_CORES); @@ -858,6 +863,11 @@ static int menu_cbs_init_bind_deferred_push_compare_label( BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_browse_url_list); return 0; } + if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_START))) + { + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_browse_url_start); + return 0; + } if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_SETTINGS_LIST))) { BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_settings_list); diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 3eb89eaaf7..f27c11747c 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -253,6 +253,15 @@ int generic_action_ok_displaylist_push(const char *path, switch (action_type) { + case ACTION_OK_DL_BROWSE_URL_START: + info.type = type; + info.directory_ptr = idx; + info_path = new_path_tmp; + info_label = msg_hash_to_str( + MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_START); + info.enum_idx = MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_START; + dl_type = DISPLAYLIST_GENERIC; + break; case ACTION_OK_DL_USER_BINDS_LIST: info.type = type; info.directory_ptr = idx; @@ -1639,6 +1648,7 @@ int generic_action_ok_help(const char *path, entry_idx, ACTION_OK_DL_HELP); } + static void menu_input_st_cheat_cb(void *userdata, const char *str) { (void)userdata; @@ -2869,6 +2879,13 @@ end: extern size_t hack_shader_pass; #endif +static int action_ok_browse_url_start(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, NULL, label, type, idx, + entry_idx, ACTION_OK_DL_BROWSE_URL_START); +} + static int action_ok_shader_pass(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -3705,6 +3722,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, { switch (cbs->enum_idx) { + case MENU_ENUM_LABEL_BROWSE_START: + BIND_ACTION_OK(cbs, action_ok_browse_url_start); + break; case MENU_ENUM_LABEL_FILE_BROWSER_CORE: BIND_ACTION_OK(cbs, action_ok_load_core); break; diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index b5d782ed7d..3933ab9e15 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -99,6 +99,7 @@ enum ACTION_OK_DL_USER_SETTINGS_LIST, ACTION_OK_DL_DIRECTORY_SETTINGS_LIST, ACTION_OK_DL_PRIVACY_SETTINGS_LIST, + ACTION_OK_DL_BROWSE_URL_START, ACTION_OK_DL_CONTENT_SETTINGS }; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index cd162655bd..93546f0ca2 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -41,6 +41,7 @@ #endif #ifdef HAVE_NETWORKING +#include #include "../network/netplay/netplay_discovery.h" #endif @@ -3902,6 +3903,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) switch (type) { case DISPLAYLIST_BROWSE_URL_LIST: + case DISPLAYLIST_BROWSE_URL_START: case DISPLAYLIST_HELP_SCREEN_LIST: case DISPLAYLIST_MAIN_MENU: case DISPLAYLIST_SETTINGS_ALL: @@ -4089,6 +4091,28 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) MENU_SETTING_NO_ITEM, 0, 0); ret = 0; #endif + info->need_refresh = true; + info->need_push = true; + break; + case DISPLAYLIST_BROWSE_URL_START: +#ifdef HAVE_NETWORKING + { + char link[1024]; + char name[1024]; + const char *line = "Test\n"; + + link[0] = name[0] = '\0'; + + string_parse_html_anchor(line, link, name, sizeof(link), sizeof(name)); + + menu_entries_append_enum(info->list, + link, + name, + MSG_UNKNOWN, + 0, 0, 0); + } +#endif + info->need_refresh = true; info->need_push = true; break; diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index c3d75420fd..5e63c5f768 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -137,6 +137,7 @@ enum menu_displaylist_ctl_state DISPLAYLIST_PLAYLIST_SETTINGS_LIST, DISPLAYLIST_ACCOUNTS_CHEEVOS_LIST, DISPLAYLIST_BROWSE_URL_LIST, + DISPLAYLIST_BROWSE_URL_START, DISPLAYLIST_LOAD_CONTENT_LIST, DISPLAYLIST_INFORMATION_LIST, DISPLAYLIST_CONTENT_SETTINGS, diff --git a/msg_hash.h b/msg_hash.h index a1a9e59b88..f00f2df260 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -788,6 +788,7 @@ enum msg_hash_enums MENU_LABEL(BROWSE_URL), MENU_LABEL(BROWSE_START), /* Deferred */ + MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_START, MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_LIST, MENU_ENUM_LABEL_DEFERRED_ARCHIVE_ACTION_DETECT_CORE, MENU_ENUM_LABEL_DEFERRED_ARCHIVE_ACTION, @@ -1599,7 +1600,7 @@ enum msg_hash_enums #define MENU_LABEL_DEFERRED_LAKKA_LIST 0x3db437c4U #define MENU_LABEL_DEFERRED_INPUT_HOTKEY_BINDS_LIST 0x10b41d97U #define MENU_LABEL_DEFERRED_CONFIGURATIONS_LIST 0x679a1b0bU - +#define MENU_LABEL_DEFERRED_BROWSE_URL_START 0xcef58296U /* Cheevos settings */