diff --git a/apps/misc.c b/apps/misc.c index b50128220d..a404a46e94 100644 --- a/apps/misc.c +++ b/apps/misc.c @@ -210,12 +210,13 @@ bool warn_on_pl_erase(void) bool show_search_progress(bool init, int display_count, int current, int total) { - static int last_tick = 0; + static long last_tick, talked_tick; /* Don't show splashes for 1/2 second after starting search */ if (init) { last_tick = current_tick + HZ/2; + talked_tick = 0; return true; } @@ -227,8 +228,18 @@ bool show_search_progress(bool init, int display_count, int current, int total) splash_progress(current, total, str(LANG_PLAYLIST_SEARCH_MSG), display_count, str(LANG_OFF_ABORT)); else - splashf(0, ID2P(LANG_PLAYLIST_SEARCH_MSG), + { + if (global_settings.talk_menu && + TIME_AFTER(current_tick, talked_tick + (HZ * 5))) + { + talked_tick = current_tick; + talk_number(display_count, false); + talk_id(LANG_PLAYLIST_SEARCH_MSG, true); + } + /* (voiced above) */ + splashf(0, str(LANG_PLAYLIST_SEARCH_MSG), display_count, str(LANG_OFF_ABORT)); + } if (action_userabort(TIMEOUT_NOBLOCK)) return false; diff --git a/apps/playlist_viewer.c b/apps/playlist_viewer.c index 15214cdd28..47429c4616 100644 --- a/apps/playlist_viewer.c +++ b/apps/playlist_viewer.c @@ -1255,6 +1255,7 @@ bool search_playlist(void) int found_indicies_count = 0, last_found_count = -1; int button; int track_display = global_settings.playlist_viewer_track_display; + long talked_tick = 0; struct gui_synclist playlist_lists; struct playlist_track_info track; @@ -1273,7 +1274,15 @@ bool search_playlist(void) { if (found_indicies_count != last_found_count) { - splashf(0, ID2P(LANG_PLAYLIST_SEARCH_MSG), found_indicies_count, + if (global_settings.talk_menu && + TIME_AFTER(current_tick, talked_tick + (HZ * 5))) + { + talked_tick = current_tick; + talk_number(found_indicies_count, false); + talk_id(LANG_PLAYLIST_SEARCH_MSG, true); + } + /* (voiced above) */ + splashf(0, str(LANG_PLAYLIST_SEARCH_MSG), found_indicies_count, str(LANG_OFF_ABORT)); last_found_count = found_indicies_count; } diff --git a/apps/radio/presets.c b/apps/radio/presets.c index cb95f80027..9ac4b75ee3 100644 --- a/apps/radio/presets.c +++ b/apps/radio/presets.c @@ -553,6 +553,7 @@ int presets_scan(void *viewports) { bool do_scan = true; int curr_freq = radio_get_current_frequency(); + long talked_tick = 0; struct viewport *vp = (struct viewport *)viewports; FOR_NB_SCREENS(i) @@ -581,7 +582,15 @@ int presets_scan(void *viewports) frac = freq % 100; freq /= 100; - splashf(0, ID2P(LANG_FM_SCANNING), freq, frac); + if (global_settings.talk_menu && + TIME_AFTER(current_tick, talked_tick + (HZ * 5))) + { + talked_tick = current_tick; + talk_id(LANG_FM_SCANNING, false); + talk_value_decimal(curr_freq, UNIT_INT, 6, true); + } + /* (voiced above) */ + splashf(0, str(LANG_FM_SCANNING), freq, frac); if(tuner_set(RADIO_SCAN_FREQUENCY, curr_freq)) { @@ -592,6 +601,8 @@ int presets_scan(void *viewports) } curr_freq += fmr->freq_step; + + yield(); /* (voice_thread) */ } radio_set_current_frequency(curr_freq);