diff options
author | William Wilgus <wilgus.william@gmail.com> | 2020-07-19 13:42:04 -0400 |
---|---|---|
committer | William Wilgus <me.theuser@yahoo.com> | 2020-07-19 22:10:26 +0000 |
commit | c39f95465b9844f70f375f1690e0bf75c7ee7cc1 (patch) | |
tree | 2fda6bd805a74f41dd4303c7699eabb9e1aa4a1c /apps/menu.h | |
parent | 4663d94b4e4edec609b6a24581ee345f2a1bedaa (diff) | |
download | rockbox-c39f95465b9844f70f375f1690e0bf75c7ee7cc1.tar.gz rockbox-c39f95465b9844f70f375f1690e0bf75c7ee7cc1.zip |
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
Diffstat (limited to 'apps/menu.h')
-rw-r--r-- | apps/menu.h | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/apps/menu.h b/apps/menu.h index 7ace51329f..e56a4a149b 100644 --- a/apps/menu.h +++ b/apps/menu.h | |||
@@ -27,6 +27,7 @@ | |||
27 | #include "icons.h" | 27 | #include "icons.h" |
28 | #include "root_menu.h" /* needed for MENU_* return codes */ | 28 | #include "root_menu.h" /* needed for MENU_* return codes */ |
29 | #include "settings_list.h" | 29 | #include "settings_list.h" |
30 | #include "gui/list.h" | ||
30 | 31 | ||
31 | 32 | ||
32 | enum menu_item_type { | 33 | enum menu_item_type { |
@@ -79,18 +80,21 @@ struct menu_item_ex { | |||
79 | }; | 80 | }; |
80 | union { | 81 | union { |
81 | /* For settings */ | 82 | /* For settings */ |
82 | int (*menu_callback)(int action, const struct menu_item_ex *this_item); | 83 | int (*menu_callback)(int action, const struct menu_item_ex *this_item, |
84 | struct gui_synclist *this_list); | ||
83 | /* For everything else, except if the text is dynamic */ | 85 | /* For everything else, except if the text is dynamic */ |
84 | const struct menu_callback_with_desc { | 86 | const struct menu_callback_with_desc { |
85 | int (*menu_callback)(int action, | 87 | int (*menu_callback)(int action, |
86 | const struct menu_item_ex *this_item); | 88 | const struct menu_item_ex *this_item, |
89 | struct gui_synclist *this_list); | ||
87 | unsigned char *desc; /* string or ID */ | 90 | unsigned char *desc; /* string or ID */ |
88 | int icon_id; /* from icons_6x8 in icons.h */ | 91 | int icon_id; /* from icons_6x8 in icons.h */ |
89 | } *callback_and_desc; | 92 | } *callback_and_desc; |
90 | /* For when the item text is dynamic */ | 93 | /* For when the item text is dynamic */ |
91 | const struct menu_get_name_and_icon { | 94 | const struct menu_get_name_and_icon { |
92 | int (*menu_callback)(int action, | 95 | int (*menu_callback)(int action, |
93 | const struct menu_item_ex *this_item); | 96 | const struct menu_item_ex *this_item, |
97 | struct gui_synclist *this_list); | ||
94 | char *(*list_get_name)(int selected_item, void * data, | 98 | char *(*list_get_name)(int selected_item, void * data, |
95 | char *buffer, size_t buffer_len); | 99 | char *buffer, size_t buffer_len); |
96 | int (*list_speak_item)(int selected_item, void * data); | 100 | int (*list_speak_item)(int selected_item, void * data); |
@@ -101,7 +105,8 @@ struct menu_item_ex { | |||
101 | }; | 105 | }; |
102 | 106 | ||
103 | typedef int (*menu_callback_type)(int action, | 107 | typedef int (*menu_callback_type)(int action, |
104 | const struct menu_item_ex *this_item); | 108 | const struct menu_item_ex *this_item, |
109 | struct gui_synclist *this_list); | ||
105 | void do_setting_from_menu(const struct menu_item_ex *temp, | 110 | void do_setting_from_menu(const struct menu_item_ex *temp, |
106 | struct viewport parent[NB_SCREENS]); | 111 | struct viewport parent[NB_SCREENS]); |
107 | void do_setting_screen(const struct settings_list *setting, const char * title, | 112 | void do_setting_screen(const struct settings_list *setting, const char * title, |