diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c index 0c1d117460..b9c83683f2 100644 --- a/apps/menus/settings_menu.c +++ b/apps/menus/settings_menu.c @@ -485,7 +485,7 @@ int sleeptimer_voice(int selected_item, void*data) { (void)selected_item; (void)data; - talk_sleeptimer(); + talk_sleeptimer(-1); return 0; } diff --git a/apps/misc.c b/apps/misc.c index 5ba907dc65..40d06b9dc1 100644 --- a/apps/misc.c +++ b/apps/misc.c @@ -1555,13 +1555,14 @@ int toggle_sleeptimer(void) return 0; } -void talk_sleeptimer(void) +void talk_sleeptimer(int custom_duration) { - int seconds = get_sleep_timer(); + int seconds = custom_duration < 0 ? get_sleep_timer() : custom_duration*60; long talk_ids[] = { - seconds ? LANG_SLEEP_TIMER_CANCEL_CURRENT - : LANG_SLEEP_TIMER_START_CURRENT, + custom_duration >= 0 ? LANG_SLEEP_TIMER : + (seconds ? LANG_SLEEP_TIMER_CANCEL_CURRENT : LANG_SLEEP_TIMER_START_CURRENT), VOICE_PAUSE, + custom_duration == 0 ? LANG_OFF : (seconds ? seconds_to_min(seconds) : global_settings.sleeptimer_duration) | UNIT_MIN << UNIT_SHIFT, TALK_FINAL_ID diff --git a/apps/misc.h b/apps/misc.h index e4204bab73..f28acd9ec1 100644 --- a/apps/misc.h +++ b/apps/misc.h @@ -101,7 +101,7 @@ const char* format_sleeptimer(char* buffer, size_t buffer_size, canceled, and how long it will be or how long is remaining in brackets */ char* string_sleeptimer(char *buffer, size_t buffer_len); int toggle_sleeptimer(void); -void talk_sleeptimer(void); +void talk_sleeptimer(int custom_duration); #if CONFIG_RTC void talk_timedate(void); diff --git a/apps/shortcuts.c b/apps/shortcuts.c index 652243f934..7846d689af 100644 --- a/apps/shortcuts.c +++ b/apps/shortcuts.c @@ -607,10 +607,10 @@ static int shortcut_menu_speak_item(int selected_item, void * data) talk_timedate(); else #endif - if (sc->u.timedata.sleep_timeout < 0) - talk_sleeptimer(); - else if (sc->name[0]) + if (sc->name[0]) talk_spell(sc->name, false); + else + talk_sleeptimer(sc->u.timedata.sleep_timeout); break; case SHORTCUT_SHUTDOWN: case SHORTCUT_REBOOT: