From 1e874931832488ca596f0c36f8e5da4eef486672 Mon Sep 17 00:00:00 2001 From: vk7js <58905135+vk7js@users.noreply.github.com> Date: Fri, 2 Sep 2022 17:00:08 +1000 Subject: [PATCH] When enter is pressed to change an item's value and edit mode is enabled, indicate this so that the user knows they can actually change the value. Updated voiceprompts.vpc with edit prompt. --- openrtx/include/core/voicePrompts.h | 3 ++- openrtx/src/ui/ui_menu.c | 22 +++++++++++++++------- voiceprompts.vpc | Bin 50575 -> 50726 bytes 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/openrtx/include/core/voicePrompts.h b/openrtx/include/core/voicePrompts.h index e9bea718..3e6c34a8 100644 --- a/openrtx/include/core/voicePrompts.h +++ b/openrtx/include/core/voicePrompts.h @@ -166,7 +166,8 @@ typedef enum PROMPT_CARET, // caret PROMPT_LEFT_BRACE, // left brace PROMPT_RIGHT_BRACE, // right brace - PROMPT_CUSTOM1, // Hotspot +PROMPT_EDIT, // edit +PROMPT_CUSTOM1, // Hotspot PROMPT_CUSTOM2, // ClearNode PROMPT_CUSTOM3, // ShariNode PROMPT_CUSTOM4, // MicroHub diff --git a/openrtx/src/ui/ui_menu.c b/openrtx/src/ui/ui_menu.c index e5d93322..8497821b 100644 --- a/openrtx/src/ui/ui_menu.c +++ b/openrtx/src/ui/ui_menu.c @@ -36,7 +36,7 @@ extern void _ui_drawMainBottom(); static char priorSelectedMenuName[MAX_ENTRY_LEN] = "\0"; static char priorSelectedMenuValue[MAX_ENTRY_LEN] = "\0"; - +static bool priorEditMode = false; const char *display_timer_values[] = { "Off", @@ -87,7 +87,7 @@ static bool DidSelectedMenuItemChange(char* menuName, char* menuValue) return false; } -static void announceMenuItemIfNeeded(char* name, char* value) +static void announceMenuItemIfNeeded(char* name, char* value, bool editMode) { if (state.settings.vpLevel <= vpLow) return; @@ -111,9 +111,10 @@ static void announceMenuItemIfNeeded(char* name, char* value) vp_announceText(name, vpqDefault); // This is a top-level menu rather than a menu/value pair. - if (value == NULL) + if (!editMode && (value == NULL)) vp_queueStringTableEntry(¤tLanguage->menu); - + if (editMode) + vp_queuePrompt(PROMPT_EDIT); if ((value != NULL) && (*value != '\0')) vp_announceText(value, vpqDefault); @@ -144,7 +145,7 @@ void _ui_drawMenuList(uint8_t selected, int (*getCurrentEntry)(char *buf, uint8_ // Draw rectangle under selected item, compensating for text height point_t rect_pos = {0, pos.y - layout.menu_h + 3}; gfx_drawRect(rect_pos, SCREEN_WIDTH, layout.menu_h, color_white, true); - announceMenuItemIfNeeded(entry_buf, NULL); + announceMenuItemIfNeeded(entry_buf, NULL, false); } gfx_print(pos, layout.menu_font, TEXT_ALIGN_LEFT, text_color, entry_buf); pos.y += layout.menu_h; @@ -188,10 +189,17 @@ void _ui_drawMenuListValue(ui_state_t* ui_state, uint8_t selected, } point_t rect_pos = {0, pos.y - layout.menu_h + 3}; gfx_drawRect(rect_pos, SCREEN_WIDTH, layout.menu_h, color_white, full_rect); - if (!ui_state->edit_mode) + bool editModeChanged = priorEditMode != ui_state->edit_mode; + priorEditMode = ui_state->edit_mode; + // force the menu item to be spoken when the edit mode changes. + // E.g. when pressing Enter on Display Brightness etc. + if (editModeChanged) + priorSelectedMenuName[0]='\0'; + if (!ui_state->edit_mode || editModeChanged) {// If in edit mode, only want to speak the char being entered,, //not repeat the entire display. - announceMenuItemIfNeeded(entry_buf, value_buf); + announceMenuItemIfNeeded(entry_buf, value_buf, + ui_state->edit_mode); } } gfx_print(pos, layout.menu_font, TEXT_ALIGN_LEFT, text_color, entry_buf); diff --git a/voiceprompts.vpc b/voiceprompts.vpc index d3985f6067a3877e1ad17a642856977e51972b8b..5f546187e63b38280af2b805a7914e6a5d1c60b0 100644 GIT binary patch delta 477 zcmWO0Pe{{o9LDjtn<6P?i0MIQR(KG?X?W4YApC<7jWVL3JalNfbgnd*gTDQ-b-QWp_-FruWyLt&jH$?xHHc|PzwpAMVc+a@1Pml@AgzzHpI z8BX)Ll3#tP7fZuq8~~hgSv|t^sE)m>$5FIo)_{ZBDcYK6=e_$*v~2EDDIut8Wbw?U*GaysDRbND5Ecp>hc zqM!>xFJaFCV=l<lOoj5Zw=#Jy1FTjb8XI9Df6zQ#1DVo=0e{no_}5xovY+S)mo;m;)h>Tv&7$mGwS5X! z43>B44&~ePnls`GlaIJ>ejo3i7|K*=cYGUW{Vm0|a?jHFO;hkFX4f*N`jNIhvtn`Y b$PyF2#_ldlr%uM_MwZ*{8Hc4*o#EO6&i0}I delta 332 zcmWO0&r1_<00r<5+oVH52kjC_J9}t{^x!S%(ka-@pqq%BYqd%vtEEY$ZtBW0${|tn z7giHx)T-6;zoMw3HCjFP7mID>vPdkF}fX(OcYY2)4Um>nW24?e3pY-?B8Z2 z$9Qo04!?tIcj>-IY?RJ1BKP?hTz$Yvur