Create menu_entries_get_last_stack_actiondata

This commit is contained in:
twinaphex 2015-10-17 18:57:47 +02:00
parent 5d036f70d1
commit 5663f6d60f
6 changed files with 83 additions and 78 deletions

View File

@ -646,7 +646,7 @@ static int generic_action_ok(const char *path,
flush_char = NULL;
flush_type = 49;
{
menu_file_list_cbs_t *cbs = menu_list_get_last_stack_actiondata(menu_list);
menu_file_list_cbs_t *cbs = menu_entries_get_last_stack_actiondata();
if (cbs)
{

View File

@ -2875,7 +2875,6 @@ int menu_displaylist_push(file_list_t *list, file_list_t *menu_list)
uint32_t hash_label = 0;
unsigned type = 0;
menu_displaylist_info_t info = {0};
menu_list_t *_menu_list = menu_list_get_ptr();
menu_entries_get_last_stack(&path, &label, &type, NULL);
@ -2899,10 +2898,9 @@ int menu_displaylist_push(file_list_t *list, file_list_t *menu_list)
return menu_displaylist_push_list(&info, DISPLAYLIST_HORIZONTAL);
}
cbs = (menu_file_list_cbs_t*)
menu_list_get_last_stack_actiondata(_menu_list);
cbs = menu_entries_get_last_stack_actiondata();
if (cbs->action_deferred_push)
if (cbs && cbs->action_deferred_push)
return cbs->action_deferred_push(&info);
return 0;

View File

@ -122,14 +122,11 @@ int menu_entries_get_title(char *s, size_t len)
unsigned menu_type = 0;
const char *path = NULL;
const char *label = NULL;
menu_file_list_cbs_t *cbs = NULL;
menu_list_t *menu_list = menu_list_get_ptr();
menu_file_list_cbs_t *cbs = menu_entries_get_last_stack_actiondata();
if (!menu_list)
if (!cbs)
return -1;
cbs = (menu_file_list_cbs_t*)menu_list_get_last_stack_actiondata(menu_list);
menu_entries_get_last_stack(&path, &label, &menu_type, NULL);
if (cbs && cbs->action_get_title)
@ -295,6 +292,14 @@ void menu_entries_push(file_list_t *list, const char *path, const char *label,
menu_list_push(list, path, label, type, directory_ptr, entry_idx);
}
menu_file_list_cbs_t *menu_entries_get_last_stack_actiondata(void)
{
menu_list_t *menu_list = menu_list_get_ptr();
if (!menu_list)
return NULL;
return (menu_file_list_cbs_t*)menu_list_get_last_stack_actiondata(menu_list);
}
void menu_entries_get_last_stack(const char **path, const char **label,
unsigned *file_type, size_t *entry_idx)
{

View File

@ -28,6 +28,71 @@
extern "C" {
#endif
typedef struct menu_file_list_cbs
{
rarch_setting_t *setting;
int (*action_iterate)(const char *label, unsigned action);
const char *action_iterate_ident;
int (*action_deferred_push)(menu_displaylist_info_t *info);
const char *action_deferred_push_ident;
int (*action_select)(const char *path, const char *label, unsigned type,
size_t idx);
const char *action_select_ident;
int (*action_get_title)(const char *path, const char *label,
unsigned type, char *s, size_t len);
const char *action_get_title_ident;
int (*action_ok)(const char *path, const char *label, unsigned type,
size_t idx, size_t entry_idx);
const char *action_ok_ident;
int (*action_cancel)(const char *path, const char *label, unsigned type,
size_t idx);
const char *action_cancel_ident;
int (*action_scan)(const char *path, const char *label, unsigned type,
size_t idx);
const char *action_scan_ident;
int (*action_start)(unsigned type, const char *label);
const char *action_start_ident;
int (*action_info)(unsigned type, const char *label);
const char *action_info_ident;
int (*action_content_list_switch)(void *data, void *userdata, const char
*path, const char *label, unsigned type);
const char *action_content_list_switch_ident;
int (*action_left)(unsigned type, const char *label, bool wraparound);
const char *action_left_ident;
int (*action_right)(unsigned type, const char *label, bool wraparound);
const char *action_right_ident;
int (*action_refresh)(file_list_t *list, file_list_t *menu_list);
const char *action_refresh_ident;
int (*action_up)(unsigned type, const char *label);
const char *action_up_ident;
int (*action_down)(unsigned type, const char *label);
const char *action_down_ident;
void (*action_get_value)(file_list_t* list,
unsigned *w, unsigned type, unsigned i,
const char *label, char *s, size_t len,
const char *entry_label,
const char *path,
char *path_buf, size_t path_buf_size);
const char *action_get_value_ident;
} menu_file_list_cbs_t;
typedef struct menu_entries menu_entries_t;
void menu_entries_set_start(size_t i);
@ -70,6 +135,8 @@ void menu_entries_new_list(menu_entries_t *entries, unsigned flags);
void menu_entries_get_last_stack(const char **path, const char **label,
unsigned *file_type, size_t *entry_idx);
menu_file_list_cbs_t *menu_entries_get_last_stack_actiondata(void);
void menu_entries_pop_stack(size_t *ptr);
#ifdef __cplusplus

View File

@ -220,14 +220,11 @@ void menu_entry_pathdir_get_value(uint32_t i, char *s, size_t len)
int menu_entry_pathdir_set_value(uint32_t i, const char *s)
{
menu_file_list_cbs_t *cbs = NULL;
const char *menu_path = NULL;
menu_list_t *menu_list = menu_list_get_ptr();
(void)s;
menu_file_list_cbs_t *cbs = menu_entries_get_last_stack_actiondata();
menu_entries_get_last_stack(&menu_path, NULL, NULL, NULL);
cbs = (menu_file_list_cbs_t*)menu_list_get_last_stack_actiondata(menu_list);
if (!cbs || !cbs->setting)
return -1;

View File

@ -19,6 +19,8 @@
#include <stddef.h>
#include <file/file_list.h>
#include "menu_entries.h"
#include "menu_setting.h"
#ifdef __cplusplus
@ -37,70 +39,6 @@ typedef enum
MENU_LIST_HORIZONTAL
} menu_list_type_t;
typedef struct menu_file_list_cbs
{
rarch_setting_t *setting;
int (*action_iterate)(const char *label, unsigned action);
const char *action_iterate_ident;
int (*action_deferred_push)(menu_displaylist_info_t *info);
const char *action_deferred_push_ident;
int (*action_select)(const char *path, const char *label, unsigned type,
size_t idx);
const char *action_select_ident;
int (*action_get_title)(const char *path, const char *label,
unsigned type, char *s, size_t len);
const char *action_get_title_ident;
int (*action_ok)(const char *path, const char *label, unsigned type,
size_t idx, size_t entry_idx);
const char *action_ok_ident;
int (*action_cancel)(const char *path, const char *label, unsigned type,
size_t idx);
const char *action_cancel_ident;
int (*action_scan)(const char *path, const char *label, unsigned type,
size_t idx);
const char *action_scan_ident;
int (*action_start)(unsigned type, const char *label);
const char *action_start_ident;
int (*action_info)(unsigned type, const char *label);
const char *action_info_ident;
int (*action_content_list_switch)(void *data, void *userdata, const char
*path, const char *label, unsigned type);
const char *action_content_list_switch_ident;
int (*action_left)(unsigned type, const char *label, bool wraparound);
const char *action_left_ident;
int (*action_right)(unsigned type, const char *label, bool wraparound);
const char *action_right_ident;
int (*action_refresh)(file_list_t *list, file_list_t *menu_list);
const char *action_refresh_ident;
int (*action_up)(unsigned type, const char *label);
const char *action_up_ident;
int (*action_down)(unsigned type, const char *label);
const char *action_down_ident;
void (*action_get_value)(file_list_t* list,
unsigned *w, unsigned type, unsigned i,
const char *label, char *s, size_t len,
const char *entry_label,
const char *path,
char *path_buf, size_t path_buf_size);
const char *action_get_value_ident;
} menu_file_list_cbs_t;
menu_list_t *menu_list_get_ptr(void);