mirror of
https://github.com/libretro/RetroArch
synced 2025-03-30 07:20:36 +00:00
change menu_entries to my wish list of functionality
This commit is contained in:
parent
d339dfa39c
commit
bd66d9796f
@ -392,7 +392,7 @@ static void glui_frame(void)
|
|||||||
|
|
||||||
if (settings->menu.core_enable)
|
if (settings->menu.core_enable)
|
||||||
{
|
{
|
||||||
get_core_title(title_msg, sizeof(title_msg));
|
menu_entries_get_core_title(title_msg, sizeof(title_msg));
|
||||||
|
|
||||||
glui_blit_line(glui->margin,
|
glui_blit_line(glui->margin,
|
||||||
global->video_data.height - glui->line_height, title_msg,
|
global->video_data.height - glui->line_height, title_msg,
|
||||||
|
@ -426,7 +426,7 @@ static void rgui_render(void)
|
|||||||
|
|
||||||
if (settings->menu.core_enable)
|
if (settings->menu.core_enable)
|
||||||
{
|
{
|
||||||
get_core_title(title_msg, sizeof(title_msg));
|
menu_entries_get_core_title(title_msg, sizeof(title_msg));
|
||||||
blit_line(menu,
|
blit_line(menu,
|
||||||
RGUI_TERM_START_X,
|
RGUI_TERM_START_X,
|
||||||
(RGUI_TERM_HEIGHT * FONT_HEIGHT_STRIDE) +
|
(RGUI_TERM_HEIGHT * FONT_HEIGHT_STRIDE) +
|
||||||
|
@ -1215,7 +1215,7 @@ static void xmb_frame(void)
|
|||||||
|
|
||||||
if (settings->menu.core_enable)
|
if (settings->menu.core_enable)
|
||||||
{
|
{
|
||||||
get_core_title(title_msg, sizeof(title_msg));
|
menu_entries_get_core_title(title_msg, sizeof(title_msg));
|
||||||
xmb_draw_text(menu, xmb, title_msg, xmb->margins.title.left,
|
xmb_draw_text(menu, xmb, title_msg, xmb->margins.title.left,
|
||||||
global->video_data.height - xmb->margins.title.bottom, 1, 1, TEXT_ALIGN_LEFT);
|
global->video_data.height - xmb->margins.title.bottom, 1, 1, TEXT_ALIGN_LEFT);
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,64 @@
|
|||||||
#include "menu_setting.h"
|
#include "menu_setting.h"
|
||||||
#include "menu_input.h"
|
#include "menu_input.h"
|
||||||
#include "../settings.h"
|
#include "../settings.h"
|
||||||
|
#include "drivers/shared.h"
|
||||||
|
|
||||||
void get_core_title(char *title_msg, size_t title_msg_len)
|
size_t menu_entries_get_start()
|
||||||
|
{
|
||||||
|
menu_handle_t *menu = menu_driver_get_ptr();
|
||||||
|
|
||||||
|
if (!menu)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return menu->begin;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t menu_entries_get_end()
|
||||||
|
{
|
||||||
|
menu_handle_t *menu = menu_driver_get_ptr();
|
||||||
|
|
||||||
|
if (!menu)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return menu_list_get_size(menu->menu_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
void menu_entries_get_title(char *title, size_t title_len)
|
||||||
|
{
|
||||||
|
const char *dir = NULL;
|
||||||
|
const char *label = NULL;
|
||||||
|
unsigned menu_type = 0;
|
||||||
|
menu_handle_t *menu = menu_driver_get_ptr();
|
||||||
|
|
||||||
|
if (!menu)
|
||||||
|
return;
|
||||||
|
|
||||||
|
menu_list_get_last_stack(menu->menu_list, &dir, &label, &menu_type);
|
||||||
|
get_title(label, dir, menu_type, title, title_len);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t menu_entries_show_back()
|
||||||
|
{
|
||||||
|
menu_handle_t *menu = menu_driver_get_ptr();
|
||||||
|
|
||||||
|
if (!menu)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return (menu_list_get_stack_size(menu->menu_list) > 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void menu_entries_select_back()
|
||||||
|
{
|
||||||
|
menu_list_t *menu_list = menu_list_get_ptr();
|
||||||
|
if (!menu_list)
|
||||||
|
return;
|
||||||
|
|
||||||
|
menu_apply_deferred_settings();
|
||||||
|
menu_list_pop_stack(menu_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
void menu_entries_get_core_title(char *title_msg, size_t title_msg_len)
|
||||||
{
|
{
|
||||||
global_t *global = global_get_ptr();
|
global_t *global = global_get_ptr();
|
||||||
const char *core_name = global->menu.info.library_name;
|
const char *core_name = global->menu.info.library_name;
|
||||||
@ -306,8 +362,10 @@ int menu_entry_get_current_id(bool use_representation)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Returns true if the menu should reload */
|
// JM: In the cases where this used to return true, it should actually
|
||||||
uint32_t menu_entry_select(uint32_t i)
|
// arrange for menu_entries_* to start returning new things AND ensure
|
||||||
|
// that ui_companion_cocoatouch_notify_list_pushed is called.
|
||||||
|
void menu_entry_select(uint32_t i)
|
||||||
{
|
{
|
||||||
menu_entry_t entry;
|
menu_entry_t entry;
|
||||||
menu_file_list_cbs_t *cbs = NULL;
|
menu_file_list_cbs_t *cbs = NULL;
|
||||||
@ -322,14 +380,14 @@ uint32_t menu_entry_select(uint32_t i)
|
|||||||
menu_list_get_actiondata_at_offset(menu_list->selection_buf, i);
|
menu_list_get_actiondata_at_offset(menu_list->selection_buf, i);
|
||||||
|
|
||||||
if (setting_is_of_path_type(setting))
|
if (setting_is_of_path_type(setting))
|
||||||
return false;
|
return;
|
||||||
if (setting_is_of_general_type(setting))
|
if (setting_is_of_general_type(setting))
|
||||||
{
|
{
|
||||||
nav->selection_ptr = i;
|
nav->selection_ptr = i;
|
||||||
if (cbs && cbs->action_ok)
|
if (cbs && cbs->action_ok)
|
||||||
cbs->action_ok(entry.path, entry.label, entry.type, i);
|
cbs->action_ok(entry.path, entry.label, entry.type, i);
|
||||||
|
|
||||||
return false;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
nav->selection_ptr = i;
|
nav->selection_ptr = i;
|
||||||
@ -344,7 +402,7 @@ uint32_t menu_entry_select(uint32_t i)
|
|||||||
menu_list_push(menu_list->menu_stack, "",
|
menu_list_push(menu_list->menu_stack, "",
|
||||||
"info_screen", 0, i);
|
"info_screen", 0, i);
|
||||||
}
|
}
|
||||||
return true;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int menu_entry_iterate(unsigned action)
|
int menu_entry_iterate(unsigned action)
|
||||||
|
@ -47,7 +47,12 @@ typedef struct menu_entry
|
|||||||
unsigned spacing;
|
unsigned spacing;
|
||||||
} menu_entry_t;
|
} menu_entry_t;
|
||||||
|
|
||||||
void get_core_title(char *title_msg, size_t title_msg_len);
|
size_t menu_entries_get_start();
|
||||||
|
size_t menu_entries_get_end();
|
||||||
|
void menu_entries_get_title(char *title, size_t title_len);
|
||||||
|
uint32_t menu_entries_show_back();
|
||||||
|
void menu_entries_select_back();
|
||||||
|
void menu_entries_get_core_title(char *title_msg, size_t title_msg_len);
|
||||||
|
|
||||||
rarch_setting_t *menu_entry_get_setting(uint32_t i);
|
rarch_setting_t *menu_entry_get_setting(uint32_t i);
|
||||||
|
|
||||||
@ -104,7 +109,7 @@ void menu_entry_get(menu_entry_t *entry, size_t i,
|
|||||||
|
|
||||||
int menu_entry_iterate(unsigned action);
|
int menu_entry_iterate(unsigned action);
|
||||||
|
|
||||||
uint32_t menu_entry_select(uint32_t i);
|
void menu_entry_select(uint32_t i);
|
||||||
|
|
||||||
int menu_entry_action(menu_entry_t *entry, unsigned i, unsigned action);
|
int menu_entry_action(menu_entry_t *entry, unsigned i, unsigned action);
|
||||||
|
|
||||||
|
@ -43,7 +43,6 @@
|
|||||||
|
|
||||||
- (id)initWithStyle:(UITableViewStyle)style;
|
- (id)initWithStyle:(UITableViewStyle)style;
|
||||||
- (id)itemForIndexPath:(NSIndexPath*)indexPath;
|
- (id)itemForIndexPath:(NSIndexPath*)indexPath;
|
||||||
- (void)menuRefresh;
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@ -25,12 +25,6 @@
|
|||||||
#include "../../../input/input_keymaps.h"
|
#include "../../../input/input_keymaps.h"
|
||||||
#include "../../../input/drivers/cocoa_input.h"
|
#include "../../../input/drivers/cocoa_input.h"
|
||||||
|
|
||||||
#include "../../../menu/menu_displaylist.h"
|
|
||||||
#include "../../../menu/menu_navigation.h"
|
|
||||||
#include "../../../menu/menu_list.h"
|
|
||||||
#include "../../../menu/menu_setting.h"
|
|
||||||
#include "../../../menu/drivers/shared.h"
|
|
||||||
|
|
||||||
#include "../../../menu/menu_entry.h"
|
#include "../../../menu/menu_entry.h"
|
||||||
|
|
||||||
// Menu Support
|
// Menu Support
|
||||||
@ -123,8 +117,6 @@ static void RunActionSheet(const char* title, const struct string_list* items,
|
|||||||
result.selectionStyle = UITableViewCellSelectionStyleNone;
|
result.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||||
result.textLabel.text = BOXSTRING(label);
|
result.textLabel.text = BOXSTRING(label);
|
||||||
|
|
||||||
if (buffer[0] == '\0')
|
|
||||||
strlcpy(buffer, "<default>", sizeof(buffer));
|
|
||||||
if (label[0] == '\0')
|
if (label[0] == '\0')
|
||||||
strlcpy(buffer, "N/A", sizeof(buffer));
|
strlcpy(buffer, "N/A", sizeof(buffer));
|
||||||
result.detailTextLabel.text = BOXSTRING(buffer);
|
result.detailTextLabel.text = BOXSTRING(buffer);
|
||||||
@ -641,10 +633,6 @@ didSelectRowAtIndexPath:(NSIndexPath *)indexPath
|
|||||||
[[self tableView] reloadData];
|
[[self tableView] reloadData];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)menuRefresh
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface RAMainMenu : RAMenuBase<RAMenuActioner>
|
@interface RAMainMenu : RAMenuBase<RAMenuActioner>
|
||||||
@ -670,32 +658,24 @@ didSelectRowAtIndexPath:(NSIndexPath *)indexPath
|
|||||||
char title[256], title_msg[256];
|
char title[256], title_msg[256];
|
||||||
NSMutableArray *everything;
|
NSMutableArray *everything;
|
||||||
RAMainMenu* __weak weakSelf;
|
RAMainMenu* __weak weakSelf;
|
||||||
const char *dir = NULL;
|
|
||||||
const char *label = NULL;
|
|
||||||
unsigned menu_type = 0;
|
|
||||||
menu_handle_t *menu = menu_driver_get_ptr();
|
|
||||||
|
|
||||||
if (!menu)
|
|
||||||
return;
|
|
||||||
|
|
||||||
everything = [NSMutableArray array];
|
everything = [NSMutableArray array];
|
||||||
|
|
||||||
get_core_title(title_msg, sizeof(title_msg));
|
menu_entries_get_core_title(title_msg, sizeof(title_msg));
|
||||||
self.title = BOXSTRING(title_msg);
|
self.title = BOXSTRING(title_msg);
|
||||||
|
|
||||||
menu_list_get_last_stack(menu->menu_list, &dir, &label, &menu_type);
|
menu_entries_get_title(title, sizeof(title));
|
||||||
get_title(label, dir, menu_type, title, sizeof(title));
|
|
||||||
[everything addObject:BOXSTRING(title)];
|
[everything addObject:BOXSTRING(title)];
|
||||||
|
|
||||||
end = menu_list_get_size(menu->menu_list);
|
end = menu_entries_get_end();
|
||||||
for (i = menu->begin; i < end; i++)
|
for (i = menu_entries_get_start(); i < end; i++)
|
||||||
[everything addObject:[self make_menu_item_for_entry: i]];
|
[everything addObject:[self make_menu_item_for_entry: i]];
|
||||||
|
|
||||||
self.sections = [NSMutableArray array];
|
self.sections = [NSMutableArray array];
|
||||||
[self.sections addObject:everything];
|
[self.sections addObject:everything];
|
||||||
|
|
||||||
weakSelf = self;
|
weakSelf = self;
|
||||||
if (menu_list_get_stack_size(menu->menu_list) > 1)
|
if (menu_entries_show_back())
|
||||||
[self set_leftbutton:BOXSTRING("Back")
|
[self set_leftbutton:BOXSTRING("Back")
|
||||||
target:weakSelf
|
target:weakSelf
|
||||||
action:@selector(menuBack)];
|
action:@selector(menuBack)];
|
||||||
@ -703,9 +683,6 @@ didSelectRowAtIndexPath:(NSIndexPath *)indexPath
|
|||||||
[self set_rightbutton:BOXSTRING("Switch")
|
[self set_rightbutton:BOXSTRING("Switch")
|
||||||
target:[RetroArch_iOS get]
|
target:[RetroArch_iOS get]
|
||||||
action:@selector(showGameView)];
|
action:@selector(showGameView)];
|
||||||
|
|
||||||
if ( menu->message_contents[0] != '\0' )
|
|
||||||
apple_display_alert(menu->message_contents, NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) set_leftbutton:(NSString *)title target:(id)target action:(SEL)action
|
- (void) set_leftbutton:(NSString *)title target:(id)target action:(SEL)action
|
||||||
@ -763,35 +740,12 @@ didSelectRowAtIndexPath:(NSIndexPath *)indexPath
|
|||||||
|
|
||||||
- (void)menuSelect: (uint32_t) i
|
- (void)menuSelect: (uint32_t) i
|
||||||
{
|
{
|
||||||
if (menu_entry_select(i))
|
menu_entry_select(i);
|
||||||
{
|
|
||||||
[self menuRefresh];
|
|
||||||
[self reloadData];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)menuRefresh
|
|
||||||
{
|
|
||||||
menu_handle_t *menu = menu_driver_get_ptr();
|
|
||||||
menu_list_t *menu_list = menu_list_get_ptr();
|
|
||||||
if (!menu || !menu_list)
|
|
||||||
return;
|
|
||||||
if (!menu->need_refresh)
|
|
||||||
return;
|
|
||||||
|
|
||||||
menu_displaylist_push(menu_list->selection_buf, menu_list->menu_stack);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)menuBack
|
- (void)menuBack
|
||||||
{
|
{
|
||||||
menu_list_t *menu_list = menu_list_get_ptr();
|
menu_entries_select_back();
|
||||||
if (!menu_list)
|
|
||||||
return;
|
|
||||||
|
|
||||||
menu_apply_deferred_settings();
|
|
||||||
menu_list_pop_stack(menu_list);
|
|
||||||
[self menuRefresh];
|
|
||||||
[self reloadData];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
@ -407,7 +407,7 @@ enum
|
|||||||
|
|
||||||
- (void)mainMenuRefresh
|
- (void)mainMenuRefresh
|
||||||
{
|
{
|
||||||
[self.mainmenu menuRefresh];
|
[self.mainmenu reloadData];
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
@ -519,24 +519,14 @@ static void ui_companion_cocoatouch_event_command(void *data,
|
|||||||
static void ui_companion_cocoatouch_notify_list_pushed(void *data,
|
static void ui_companion_cocoatouch_notify_list_pushed(void *data,
|
||||||
file_list_t *list, file_list_t *menu_list)
|
file_list_t *list, file_list_t *menu_list)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
(void)data;
|
(void)data;
|
||||||
(void)list;
|
(void)list;
|
||||||
(void)menu_list;
|
(void)menu_list;
|
||||||
|
|
||||||
RetroArch_iOS *ap = (RetroArch_iOS *)apple_platform;
|
RetroArch_iOS *ap = (RetroArch_iOS *)apple_platform;
|
||||||
|
|
||||||
RARCH_WARN("notify list pushed (this log entry is not printed)");
|
|
||||||
|
|
||||||
// JM: Ideally, RA would have set this, but I'm going to force it
|
|
||||||
// for testing, because my menu refresh relies on it.
|
|
||||||
menu_handle_t *menu = menu_driver_get_ptr();
|
|
||||||
if (!menu) return;
|
|
||||||
menu->need_refresh = true;
|
|
||||||
|
|
||||||
if (ap)
|
if (ap)
|
||||||
[ap mainMenuRefresh];
|
[ap mainMenuRefresh];
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const ui_companion_driver_t ui_companion_cocoatouch = {
|
const ui_companion_driver_t ui_companion_cocoatouch = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user