mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-13 18:17:39 -04:00
do_menu pass internal synclist reference to callback
keep running into the rigid nature of do_menu it isn't too bad when you don't need voice but once you do the fun awaits do_menu likes to talk on menu enter which is in a loop when you use do_menu I would like to move the processing to the callback TOO BAD you only get an action and the menu_item_ex struct you sent it when calling the function Change-Id: Iaefd0cc133435d675b7dd27a558c504d6ccb327a
This commit is contained in:
parent
4663d94b4e
commit
c39f95465b
39 changed files with 343 additions and 110 deletions
15
apps/menu.h
15
apps/menu.h
|
@ -27,6 +27,7 @@
|
|||
#include "icons.h"
|
||||
#include "root_menu.h" /* needed for MENU_* return codes */
|
||||
#include "settings_list.h"
|
||||
#include "gui/list.h"
|
||||
|
||||
|
||||
enum menu_item_type {
|
||||
|
@ -79,18 +80,21 @@ struct menu_item_ex {
|
|||
};
|
||||
union {
|
||||
/* For settings */
|
||||
int (*menu_callback)(int action, const struct menu_item_ex *this_item);
|
||||
int (*menu_callback)(int action, const struct menu_item_ex *this_item,
|
||||
struct gui_synclist *this_list);
|
||||
/* For everything else, except if the text is dynamic */
|
||||
const struct menu_callback_with_desc {
|
||||
int (*menu_callback)(int action,
|
||||
const struct menu_item_ex *this_item);
|
||||
int (*menu_callback)(int action,
|
||||
const struct menu_item_ex *this_item,
|
||||
struct gui_synclist *this_list);
|
||||
unsigned char *desc; /* string or ID */
|
||||
int icon_id; /* from icons_6x8 in icons.h */
|
||||
} *callback_and_desc;
|
||||
/* For when the item text is dynamic */
|
||||
const struct menu_get_name_and_icon {
|
||||
int (*menu_callback)(int action,
|
||||
const struct menu_item_ex *this_item);
|
||||
const struct menu_item_ex *this_item,
|
||||
struct gui_synclist *this_list);
|
||||
char *(*list_get_name)(int selected_item, void * data,
|
||||
char *buffer, size_t buffer_len);
|
||||
int (*list_speak_item)(int selected_item, void * data);
|
||||
|
@ -101,7 +105,8 @@ struct menu_item_ex {
|
|||
};
|
||||
|
||||
typedef int (*menu_callback_type)(int action,
|
||||
const struct menu_item_ex *this_item);
|
||||
const struct menu_item_ex *this_item,
|
||||
struct gui_synclist *this_list);
|
||||
void do_setting_from_menu(const struct menu_item_ex *temp,
|
||||
struct viewport parent[NB_SCREENS]);
|
||||
void do_setting_screen(const struct settings_list *setting, const char * title,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue