summaryrefslogtreecommitdiff
path: root/apps/menu.h
diff options
context:
space:
mode:
authorWilliam Wilgus <wilgus.william@gmail.com>2020-07-19 13:42:04 -0400
committerWilliam Wilgus <me.theuser@yahoo.com>2020-07-19 22:10:26 +0000
commitc39f95465b9844f70f375f1690e0bf75c7ee7cc1 (patch)
tree2fda6bd805a74f41dd4303c7699eabb9e1aa4a1c /apps/menu.h
parent4663d94b4e4edec609b6a24581ee345f2a1bedaa (diff)
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.h15
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 @@
#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,