(RMenu/RMenu XUI) Move browser_update to upper-layer menu_common.c -

use same function for both RMenu and RMenu XUI
This commit is contained in:
twinaphex 2013-04-18 19:05:43 +02:00
parent 1f6d3a8610
commit 798f40b6a1
5 changed files with 52 additions and 91 deletions

View File

@ -248,6 +248,49 @@ bool filebrowser_iterate(void *data, unsigned action)
return ret; return ret;
} }
void filebrowser_update(void *data, uint64_t input, const char *extensions)
{
filebrowser_action_t action = FILEBROWSER_ACTION_NOOP;
bool ret = true;
if (input & (1ULL << DEVICE_NAV_DOWN))
action = FILEBROWSER_ACTION_DOWN;
else if (input & (1ULL << DEVICE_NAV_UP))
action = FILEBROWSER_ACTION_UP;
else if (input & (1ULL << DEVICE_NAV_RIGHT))
action = FILEBROWSER_ACTION_RIGHT;
else if (input & (1ULL << DEVICE_NAV_LEFT))
action = FILEBROWSER_ACTION_LEFT;
else if (input & (1ULL << DEVICE_NAV_R2))
action = FILEBROWSER_ACTION_SCROLL_DOWN;
else if (input & (1ULL << DEVICE_NAV_L2))
action = FILEBROWSER_ACTION_SCROLL_UP;
else if (input & (1ULL << DEVICE_NAV_A))
{
char tmp_str[PATH_MAX];
fill_pathname_parent_dir(tmp_str, rgui->browser->current_dir.directory_path, sizeof(tmp_str));
if (tmp_str[0] != '\0')
action = FILEBROWSER_ACTION_CANCEL;
}
else if (input & (1ULL << DEVICE_NAV_START))
{
action = FILEBROWSER_ACTION_RESET;
filebrowser_set_root_and_ext(rgui->browser, NULL, default_paths.filesystem_root_dir);
strlcpy(rgui->browser->current_dir.extensions, extensions,
sizeof(rgui->browser->current_dir.extensions));
#ifdef HAVE_RMENU_XUI
filebrowser_fetch_directory_entries(1ULL << RMENU_DEVICE_NAV_B);
#endif
}
if (action != FILEBROWSER_ACTION_NOOP)
ret = filebrowser_iterate(rgui->browser, action);
if (!ret)
msg_queue_push(g_extern.msg_queue, "ERROR - Failed to open directory.", 1, 180);
}
#else #else
struct rgui_file struct rgui_file

View File

@ -544,46 +544,6 @@ static void display_menubar(uint8_t menu_type)
#endif #endif
} }
static void browser_update(void *data, uint64_t input, const char *extensions)
{
filebrowser_action_t action = FILEBROWSER_ACTION_NOOP;
bool ret = true;
if (input & (1ULL << DEVICE_NAV_DOWN))
action = FILEBROWSER_ACTION_DOWN;
else if (input & (1ULL << DEVICE_NAV_UP))
action = FILEBROWSER_ACTION_UP;
else if (input & (1ULL << DEVICE_NAV_RIGHT))
action = FILEBROWSER_ACTION_RIGHT;
else if (input & (1ULL << DEVICE_NAV_LEFT))
action = FILEBROWSER_ACTION_LEFT;
else if (input & (1ULL << DEVICE_NAV_R2))
action = FILEBROWSER_ACTION_SCROLL_DOWN;
else if (input & (1ULL << DEVICE_NAV_L2))
action = FILEBROWSER_ACTION_SCROLL_UP;
else if (input & (1ULL << DEVICE_NAV_A))
{
char tmp_str[PATH_MAX];
fill_pathname_parent_dir(tmp_str, rgui->browser->current_dir.directory_path, sizeof(tmp_str));
if (tmp_str[0] != '\0')
action = FILEBROWSER_ACTION_CANCEL;
}
else if (input & (1ULL << DEVICE_NAV_START))
{
action = FILEBROWSER_ACTION_RESET;
filebrowser_set_root_and_ext(rgui->browser, NULL, default_paths.filesystem_root_dir);
strlcpy(rgui->browser->current_dir.extensions, extensions,
sizeof(rgui->browser->current_dir.extensions));
}
if (action != FILEBROWSER_ACTION_NOOP)
ret = filebrowser_iterate(rgui->browser, action);
if (!ret)
msg_queue_push(g_extern.msg_queue, "ERROR - Failed to open directory.", 1, 180);
}
static void browser_render(void *data) static void browser_render(void *data)
{ {
unsigned file_count = rgui->browser->list->size; unsigned file_count = rgui->browser->list->size;
@ -659,7 +619,7 @@ static int select_file(void *data, uint64_t input)
break; break;
} }
browser_update(rgui->browser, input, extensions); filebrowser_update(rgui->browser, input, extensions);
if (input & (1ULL << DEVICE_NAV_B)) if (input & (1ULL << DEVICE_NAV_B))
{ {
@ -784,7 +744,7 @@ static int select_directory(void *data, uint64_t input)
bool is_dir = filebrowser_iterate(rgui->browser, FILEBROWSER_ACTION_PATH_ISDIR); bool is_dir = filebrowser_iterate(rgui->browser, FILEBROWSER_ACTION_PATH_ISDIR);
bool pop_menu_stack = false; bool pop_menu_stack = false;
browser_update(rgui->browser, input, "empty"); filebrowser_update(rgui->browser, input, "empty");
if (input & (1ULL << DEVICE_NAV_Y)) if (input & (1ULL << DEVICE_NAV_Y))
{ {
@ -2584,7 +2544,7 @@ static int select_rom(void *data, uint64_t input)
if (driver.input->set_keybinds) if (driver.input->set_keybinds)
driver.input->set_keybinds(&key_label_b, 0, 0, 0, (1ULL << KEYBINDS_ACTION_GET_BIND_LABEL)); driver.input->set_keybinds(&key_label_b, 0, 0, 0, (1ULL << KEYBINDS_ACTION_GET_BIND_LABEL));
browser_update(rgui->browser, input, g_extern.system.valid_extensions); filebrowser_update(rgui->browser, input, g_extern.system.valid_extensions);
if (input & (1ULL << DEVICE_NAV_SELECT)) if (input & (1ULL << DEVICE_NAV_SELECT))
menu_stack_push(GENERAL_VIDEO_MENU, false); menu_stack_push(GENERAL_VIDEO_MENU, false);
@ -2610,7 +2570,7 @@ static int select_rom(void *data, uint64_t input)
if (drive_map != NULL) if (drive_map != NULL)
{ {
filebrowser_set_root_and_ext(rgui->browser, g_extern.system.valid_extensions, drive_map); filebrowser_set_root_and_ext(rgui->browser, g_extern.system.valid_extensions, drive_map);
browser_update(rgui->browser, 1ULL << DEVICE_NAV_B, g_extern.system.valid_extensions); filebrowser_update(rgui->browser, 1ULL << DEVICE_NAV_B, g_extern.system.valid_extensions);
} }
} }
else if (input & (1ULL << DEVICE_NAV_R1)) else if (input & (1ULL << DEVICE_NAV_R1))
@ -2619,7 +2579,7 @@ static int select_rom(void *data, uint64_t input)
if (drive_map != NULL) if (drive_map != NULL)
{ {
filebrowser_set_root_and_ext(rgui->browser, g_extern.system.valid_extensions, drive_map); filebrowser_set_root_and_ext(rgui->browser, g_extern.system.valid_extensions, drive_map);
browser_update(rgui->browser, 1ULL << DEVICE_NAV_B, g_extern.system.valid_extensions); filebrowser_update(rgui->browser, 1ULL << DEVICE_NAV_B, g_extern.system.valid_extensions);
} }
} }

View File

@ -299,11 +299,9 @@ static void menu_settings_create_menu_item_label_w(wchar_t *strwbuf, unsigned se
mbstowcs(strwbuf, str, size / sizeof(wchar_t)); mbstowcs(strwbuf, str, size / sizeof(wchar_t));
} }
static void browser_update(void *data, uint64_t input, const char *extensions); void filebrowser_fetch_directory_entries(uint64_t action)
static void filebrowser_fetch_directory_entries(uint64_t action)
{ {
browser_update(rgui->browser, action, rgui->browser->current_dir.extensions); filebrowser_update(rgui->browser, action, rgui->browser->current_dir.extensions);
mbstowcs(strw_buffer, rgui->browser->current_dir.directory_path, sizeof(strw_buffer) / sizeof(wchar_t)); mbstowcs(strw_buffer, rgui->browser->current_dir.directory_path, sizeof(strw_buffer) / sizeof(wchar_t));
XuiTextElementSetText(m_list_path, strw_buffer); XuiTextElementSetText(m_list_path, strw_buffer);
@ -320,48 +318,6 @@ static void filebrowser_fetch_directory_entries(uint64_t action)
} }
} }
static void browser_update(void *data, uint64_t input, const char *extensions)
{
filebrowser_action_t action = FILEBROWSER_ACTION_NOOP;
bool ret = true;
if (input & (1ULL << RMENU_DEVICE_NAV_DOWN))
action = FILEBROWSER_ACTION_DOWN;
else if (input & (1ULL << RMENU_DEVICE_NAV_UP))
action = FILEBROWSER_ACTION_UP;
else if (input & (1ULL << RMENU_DEVICE_NAV_RIGHT))
action = FILEBROWSER_ACTION_RIGHT;
else if (input & (1ULL << RMENU_DEVICE_NAV_LEFT))
action = FILEBROWSER_ACTION_LEFT;
else if (input & (1ULL << RMENU_DEVICE_NAV_R2))
action = FILEBROWSER_ACTION_SCROLL_DOWN;
else if (input & (1ULL << RMENU_DEVICE_NAV_L2))
action = FILEBROWSER_ACTION_SCROLL_UP;
else if (input & (1ULL << RMENU_DEVICE_NAV_A))
{
char tmp_str[256];
fill_pathname_parent_dir(tmp_str, rgui->browser->current_dir.directory_path, sizeof(tmp_str));
if (tmp_str[0] != '\0')
action = FILEBROWSER_ACTION_CANCEL;
}
else if (input & (1ULL << RMENU_DEVICE_NAV_START))
{
action = FILEBROWSER_ACTION_RESET;
filebrowser_set_root_and_ext(rgui->browser, g_extern.system.valid_extensions,
g_settings.rgui_browser_directory);
strlcpy(rgui->browser->current_dir.extensions, extensions,
sizeof(rgui->browser->current_dir.extensions));
filebrowser_fetch_directory_entries(1ULL << RMENU_DEVICE_NAV_B);
}
if(action != FILEBROWSER_ACTION_NOOP)
ret = filebrowser_iterate(rgui->browser, action);
if(!ret)
msg_queue_push(g_extern.msg_queue, "ERROR - Failed to open directory.", 1, 180);
}
HRESULT CRetroArchFileBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) HRESULT CRetroArchFileBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandled)
{ {
GetChildById(L"XuiRomList", &m_list); GetChildById(L"XuiRomList", &m_list);

View File

@ -62,5 +62,6 @@ enum
}; };
bool menu_iterate_xui(void); bool menu_iterate_xui(void);
void filebrowser_fetch_directory_entries(uint64_t action);
#endif #endif

View File

@ -51,6 +51,7 @@ typedef enum
FILEBROWSER_ACTION_NOOP FILEBROWSER_ACTION_NOOP
} filebrowser_action_t; } filebrowser_action_t;
void filebrowser_update(void *data, uint64_t input, const char *extensions);
void filebrowser_set_root_and_ext(void *data, const char *ext, const char *root_dir); void filebrowser_set_root_and_ext(void *data, const char *ext, const char *root_dir);
bool filebrowser_iterate(void *data, unsigned action); bool filebrowser_iterate(void *data, unsigned action);