diff options
| -rw-r--r-- | apps/lang/english.lang | 14 | ||||
| -rw-r--r-- | apps/menus/main_menu.c | 62 |
2 files changed, 62 insertions, 14 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 6a79371..d288d04 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang @@ -11590,3 +11590,17 @@ *: "Accessory Power Supply" </voice> </phrase> +<phrase> + id: LANG_UNKNOWN + desc: generic string for unknown states, such as an unset clock + user: + <source> + *: "Unknown" + </source> + <dest> + *: "Unknown" + </dest> + <voice> + *: "Unknown" + </voice> +</phrase> diff --git a/apps/menus/main_menu.c b/apps/menus/main_menu.c index 39f722f..8e4ee61 100644 --- a/apps/menus/main_menu.c +++ b/apps/menus/main_menu.c @@ -183,20 +183,34 @@ static char* info_getname(int selected_item, void *data, #if CONFIG_RTC case INFO_TIME: tm = get_time(); - snprintf(buffer, buffer_len, "%02d:%02d:%02d %s", - global_settings.timeformat == 0 ? tm->tm_hour : - ((tm->tm_hour + 11) % 12) + 1, - tm->tm_min, - tm->tm_sec, - global_settings.timeformat == 0 ? "" : - tm->tm_hour>11 ? "P" : "A"); + if (valid_time(tm)) + { + snprintf(buffer, buffer_len, "%02d:%02d:%02d %s", + global_settings.timeformat == 0 ? tm->tm_hour : + ((tm->tm_hour + 11) % 12) + 1, + tm->tm_min, + tm->tm_sec, + global_settings.timeformat == 0 ? "" : + tm->tm_hour>11 ? "P" : "A"); + } + else + { + snprintf(buffer, buffer_len, "%s", "--:--:--"); + } break; case INFO_DATE: tm = get_time(); - snprintf(buffer, buffer_len, "%s %d %d", - str(LANG_MONTH_JANUARY + tm->tm_mon), - tm->tm_mday, - tm->tm_year+1900); + if (valid_time(tm)) + { + snprintf(buffer, buffer_len, "%s %d %d", + str(LANG_MONTH_JANUARY + tm->tm_mon), + tm->tm_mday, + tm->tm_year+1900); + } + else + { + snprintf(buffer, buffer_len, "%s", str(LANG_UNKNOWN)); + } break; #endif case INFO_BUFFER: /* buffer */ @@ -270,6 +284,10 @@ static int info_speak_item(int selected_item, void * data) { struct info_data *info = (struct info_data*)data; +#if CONFIG_RTC + struct tm *tm; +#endif + switch (selected_item) { case INFO_VERSION: /* version */ @@ -277,12 +295,28 @@ static int info_speak_item(int selected_item, void * data) talk_spell(appsversion, true); break; #if CONFIG_RTC - case INFO_TIME: + case INFO_TIME: + tm = get_time(); talk_id(VOICE_CURRENT_TIME, false); - talk_time(get_time(), true); + if (valid_time(tm)) + { + talk_time(tm, true); + } + else + { + talk_id(LANG_UNKNOWN, true); + } break; case INFO_DATE: - talk_date(get_time(), true); + tm = get_time(); + if (valid_time(tm)) + { + talk_date(get_time(), true); + } + else + { + talk_id(LANG_UNKNOWN, true); + } break; #endif case INFO_BUFFER: /* buffer */ |