summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorNils Wallménius <nils@rockbox.org>2008-04-20 21:01:39 +0000
committerNils Wallménius <nils@rockbox.org>2008-04-20 21:01:39 +0000
commitac1b30ef7351fdda552dede1cd08add823ca602c (patch)
treedae8645c655ced331c7e289b335266dff6e485aa /apps
parent380e9154288b22350102848a2941e0458e921623 (diff)
downloadrockbox-ac1b30ef7351fdda552dede1cd08add823ca602c.zip
rockbox-ac1b30ef7351fdda552dede1cd08add823ca602c.tar.gz
rockbox-ac1b30ef7351fdda552dede1cd08add823ca602c.tar.bz2
rockbox-ac1b30ef7351fdda552dede1cd08add823ca602c.tar.xz
Nicer handling of unset clock in the 'Rockbox Info' screen
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17199 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/lang/english.lang14
-rw-r--r--apps/menus/main_menu.c62
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 */