From c39f95465b9844f70f375f1690e0bf75c7ee7cc1 Mon Sep 17 00:00:00 2001 From: William Wilgus Date: Sun, 19 Jul 2020 13:42:04 -0400 Subject: 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 --- apps/menu.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'apps/menu.h') 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, -- cgit