(Menu) Add populate_entries to menu_ctx_driver - will be needed for RMenu XUI

This commit is contained in:
twinaphex 2013-11-19 06:09:14 +01:00
parent 1372df61de
commit 8fe6a04b56
5 changed files with 53 additions and 44 deletions

View File

@ -581,5 +581,6 @@ const menu_ctx_driver_t menu_ctx_rgui = {
rgui_free,
NULL,
NULL,
NULL,
"rgui",
};

View File

@ -476,5 +476,6 @@ const menu_ctx_driver_t menu_ctx_rmenu = {
rmenu_free,
rmenu_init_assets,
rmenu_free_assets,
NULL,
"rmenu",
};

View File

@ -2014,6 +2014,9 @@ void menu_populate_entries(void *data, unsigned menu_type)
file_list_push(rgui->selection_buf, "Quit RetroArch", RGUI_SETTINGS_QUIT_RARCH, 0);
break;
}
if (menu_ctx && menu_ctx->populate_entries)
menu_ctx->populate_entries(rgui, menu_type);
}
void menu_parse_and_resolve(void *data, unsigned menu_type)

View File

@ -33,6 +33,7 @@ typedef struct menu_ctx_driver
void (*free)(void*);
void (*init_assets)(void*);
void (*free_assets)(void*);
void (*populate_entries)(void*, unsigned);
// Human readable string.
const char *ident;

View File

@ -295,34 +295,34 @@ static void set_dpad_emulation_label(unsigned port, char *str, size_t sizeof_str
{
}
static void init_menulist(unsigned menu_id)
static void rmenu_xui_populate_entries(void *data, unsigned menu_type)
{
XuiListDeleteItems(m_menulist, 0, XuiListGetItemCount(m_menulist));
switch (menu_id)
{
case INGAME_MENU_CORE_OPTIONS_MODE:
if (g_extern.system.core_options)
{
size_t opts = core_option_size(g_extern.system.core_options);
for (size_t i = 0; i < opts; i++)
{
char label[256];
strlcpy(label, core_option_get_desc(g_extern.system.core_options, i),
sizeof(label));
snprintf(label, sizeof(label), "%s : %s", label,
core_option_get_val(g_extern.system.core_options, i));
mbstowcs(strw_buffer, label,
sizeof(strw_buffer) / sizeof(wchar_t));
XuiListInsertItems(m_menulist, i, 1);
XuiListSetText(m_menulist, i, strw_buffer);
}
}
else
{
XuiListInsertItems(m_menulist, 0, 1);
XuiListSetText(m_menulist, 0, L"No options available.");
}
if (g_extern.system.core_options)
{
size_t opts = core_option_size(g_extern.system.core_options);
for (size_t i = 0; i < opts; i++)
{
char label[256];
strlcpy(label, core_option_get_desc(g_extern.system.core_options, i),
sizeof(label));
snprintf(label, sizeof(label), "%s : %s", label,
core_option_get_val(g_extern.system.core_options, i));
mbstowcs(strw_buffer, label,
sizeof(strw_buffer) / sizeof(wchar_t));
XuiListInsertItems(m_menulist, i, 1);
XuiListSetText(m_menulist, i, strw_buffer);
}
}
else
{
XuiListInsertItems(m_menulist, 0, 1);
XuiListSetText(m_menulist, 0, L"No options available.");
}
break;
case INGAME_MENU_LOAD_GAME_HISTORY_MODE:
{
@ -453,7 +453,7 @@ static void init_menulist(unsigned menu_id)
}
}
static unsigned xui_input_to_rgui_action(unsigned input)
static unsigned xui_input_to_rmenu_xui_action(unsigned input)
{
switch (input)
{
@ -478,7 +478,7 @@ HRESULT CRetroArchLoadGameHistory::OnControlNavigate(
unsigned current_index = XuiListGetCurSel(m_menulist, NULL);
unsigned input = pControlNavigateData->nControlNavigate;
unsigned action = xui_input_to_rgui_action(input);
unsigned action = xui_input_to_rmenu_xui_action(input);
if (action == RGUI_ACTION_OK)
{
@ -512,7 +512,7 @@ HRESULT CRetroArchControls::OnInit(XUIMessageInit * pInitData, BOOL& bHandled)
XuiTextElementSetText(m_menutitle, L"Input options");
init_menulist(INGAME_MENU_INPUT_OPTIONS_MODE);
rmenu_xui_populate_entries(NULL, INGAME_MENU_INPUT_OPTIONS_MODE);
return 0;
}
@ -522,7 +522,7 @@ HRESULT CRetroArchFileBrowser::OnControlNavigate(
{
bHandled = TRUE;
unsigned input = pControlNavigateData->nControlNavigate;
unsigned action = xui_input_to_rgui_action(input);
unsigned action = xui_input_to_rmenu_xui_action(input);
switch(action)
{
@ -543,7 +543,7 @@ HRESULT CRetroArchShaderBrowser::OnControlNavigate(
XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled)
{
unsigned input = pControlNavigateData->nControlNavigate;
unsigned action = xui_input_to_rgui_action(input);
unsigned action = xui_input_to_rmenu_xui_action(input);
bHandled = TRUE;
switch(action)
@ -565,7 +565,7 @@ HRESULT CRetroArchCoreBrowser::OnControlNavigate(
XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled)
{
unsigned input = pControlNavigateData->nControlNavigate;
unsigned action = xui_input_to_rgui_action(input);
unsigned action = xui_input_to_rmenu_xui_action(input);
bHandled = TRUE;
switch(action)
@ -610,7 +610,7 @@ HRESULT CRetroArchControls::OnControlNavigate(
current_index = XuiListGetCurSel(m_menulist, NULL);
unsigned input = pControlNavigateData->nControlNavigate;
unsigned action = xui_input_to_rgui_action(input);
unsigned action = xui_input_to_rmenu_xui_action(input);
switch(current_index)
{
@ -666,7 +666,7 @@ HRESULT CRetroArchLoadGameHistory::OnInit(XUIMessageInit * pInitData, BOOL& bHan
XuiTextElementSetText(m_menutitle, L"Load History");
init_menulist(INGAME_MENU_LOAD_GAME_HISTORY_MODE);
rmenu_xui_populate_entries(NULL, INGAME_MENU_LOAD_GAME_HISTORY_MODE);
return 0;
}
@ -679,7 +679,7 @@ HRESULT CRetroArchSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled)
XuiTextElementSetText(m_menutitle, L"Settings");
init_menulist(INGAME_MENU_SETTINGS_MODE);
rmenu_xui_populate_entries(NULL, INGAME_MENU_SETTINGS_MODE);
return 0;
}
@ -692,7 +692,7 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro
current_index = XuiListGetCurSel(m_menulist, NULL);
unsigned input = pControlNavigateData->nControlNavigate;
unsigned action = xui_input_to_rgui_action(input);
unsigned action = xui_input_to_rmenu_xui_action(input);
switch(current_index)
{
@ -756,7 +756,7 @@ HRESULT CRetroArchCoreOptions::OnInit(XUIMessageInit * pInitData, BOOL& bHandled
XuiTextElementSetText(m_menutitle, L"Core Options");
init_menulist(INGAME_MENU_CORE_OPTIONS_MODE);
rmenu_xui_populate_entries(NULL, INGAME_MENU_CORE_OPTIONS_MODE);
return 0;
}
@ -781,7 +781,7 @@ HRESULT CRetroArchCoreOptions::OnControlNavigate(XUIMessageControlNavigate *pCon
{
unsigned current_index = XuiListGetCurSel(m_menulist, NULL);
unsigned input = pControlNavigateData->nControlNavigate;
unsigned action = xui_input_to_rgui_action(input);
unsigned action = xui_input_to_rmenu_xui_action(input);
if (g_extern.system.core_options)
{
@ -849,7 +849,7 @@ HRESULT CRetroArchAudioOptions::OnControlNavigate(XUIMessageControlNavigate *pCo
{
int current_index = XuiListGetCurSel(m_menulist, NULL);
unsigned input = pControlNavigateData->nControlNavigate;
unsigned action = xui_input_to_rgui_action(input);
unsigned action = xui_input_to_rmenu_xui_action(input);
switch (current_index)
{
@ -934,7 +934,7 @@ HRESULT CRetroArchVideoOptions::OnControlNavigate(XUIMessageControlNavigate *pCo
current_index = XuiListGetCurSel(m_menulist, NULL);
unsigned input = pControlNavigateData->nControlNavigate;
unsigned action = xui_input_to_rgui_action(input);
unsigned action = xui_input_to_rmenu_xui_action(input);
switch (current_index)
{
@ -1090,7 +1090,7 @@ HRESULT CRetroArchMain::OnInit(XUIMessageInit * pInitData, BOOL& bHandled)
GetChildById(L"XuiTxtTitle", &m_menutitle);
GetChildById(L"XuiTxtBottom", &m_menutitlebottom);
init_menulist(INGAME_MENU_MAIN_MODE);
rmenu_xui_populate_entries(NULL, INGAME_MENU_MAIN_MODE);
mbstowcs(strw_buffer, g_extern.title_buf, sizeof(strw_buffer) / sizeof(wchar_t));
XuiTextElementSetText(m_menutitlebottom, strw_buffer);
@ -1110,7 +1110,7 @@ HRESULT CRetroArchMain::OnControlNavigate(XUIMessageControlNavigate *pControlNav
current_index= XuiListGetCurSel(m_menulist, NULL);
unsigned input = pControlNavigateData->nControlNavigate;
unsigned action = xui_input_to_rgui_action(input);
unsigned action = xui_input_to_rmenu_xui_action(input);
HXUIOBJ current_obj = current_menu;
@ -1263,7 +1263,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled )
return 0;
}
static void* rgui_init (void)
static void* rmenu_xui_init (void)
{
HRESULT hr;
@ -1348,7 +1348,7 @@ static void* rgui_init (void)
return rgui;
}
static void rgui_free(void *data)
static void rmenu_xui_free(void *data)
{
(void)data;
app.Uninit();
@ -1367,7 +1367,7 @@ int rmenu_xui_iterate(void *data, unsigned action)
XuiSceneNavigateBack(current_menu, root_menu, XUSER_INDEX_ANY);
current_menu = root_menu;
XuiElementGetChildById(current_menu, L"XuiMenuList", &m_menulist);
init_menulist(INGAME_MENU_MAIN_MODE);
rmenu_xui_populate_entries(NULL, INGAME_MENU_MAIN_MODE);
}
return 0;
@ -1397,7 +1397,7 @@ bool menu_iterate_xui(void)
return true;
}
int rgui_input_postprocess(void *data, uint64_t old_state)
int rmenu_xui_input_postprocess(void *data, uint64_t old_state)
{
rgui_handle_t *rgui = (rgui_handle_t*)data;
bool quit = false;
@ -1426,7 +1426,10 @@ const menu_ctx_driver_t menu_ctx_rmenu_xui = {
NULL,
NULL,
NULL,
rgui_init,
rgui_free,
rmenu_xui_init,
rmenu_xui_free,
NULL,
NULL,
rmenu_xui_populate_entries,
"rmenu_xui",
};