summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-08-30 00:39:31 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-08-30 00:39:31 +0000
commitb847a7b296328a08eef4c74492dbd0056dff1318 (patch)
tree9ca1c5e311ace2dc9ae42229367065c6d0176040
parent924b5313ac2fe15d13b662ff762094ffb6f4ab5d (diff)
downloadrockbox-b847a7b296328a08eef4c74492dbd0056dff1318.tar.gz
rockbox-b847a7b296328a08eef4c74492dbd0056dff1318.zip
Added status_draw() to set_playmode().
Moved rtc reading from icons.c code to status.c Added boundary checks for time display values. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2066 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/recorder/icons.c28
-rw-r--r--apps/recorder/icons.h2
-rw-r--r--apps/status.c12
3 files changed, 26 insertions, 16 deletions
diff --git a/apps/recorder/icons.c b/apps/recorder/icons.c
index d1ee11dbed..3f6518903f 100644
--- a/apps/recorder/icons.c
+++ b/apps/recorder/icons.c
@@ -290,23 +290,33 @@ void statusbar_icon_lock(void)
/*
* Print time to status bar
*/
-void statusbar_time(void)
+void statusbar_time(int minutes)
{
- int hour,minute;
unsigned char buffer[6];
unsigned int width, height;
#if defined(LOADABLE_FONTS)
unsigned char *font;
#endif
- hour = rtc_read(0x03);
- minute = rtc_read(0x02);
+ int hour = minutes / 60;
+ int minute = minutes % 60;
+
+ if ( hour >= 0 &&
+ hour <= 23 &&
+ minute >= 0 &&
+ minute <= 59 )
+ {
+ snprintf(buffer, sizeof(buffer), "%d%d:%d%d",
+ (hour & 0x30) >> 4,
+ hour & 0x0f,
+ (minute & 0xf0) >> 4,
+ minute & 0x0f);
+ }
+ else
+ {
+ strncpy(buffer, "--:--", sizeof buffer);
+ }
- snprintf(buffer, sizeof(buffer), "%d%d:%d%d",
- (hour & 0x30) >> 4,
- hour & 0x0f,
- (minute & 0xf0) >> 4,
- minute & 0x0f);
#if defined(LCD_PROPFONTS)
lcd_getstringsize(buffer, 0, &width, &height);
#elif defined(LOADABLE_FONTS)
diff --git a/apps/recorder/icons.h b/apps/recorder/icons.h
index ff6a011b98..cebff7ca2c 100644
--- a/apps/recorder/icons.h
+++ b/apps/recorder/icons.h
@@ -86,6 +86,6 @@ extern void statusbar_icon_play_mode(int mode);
extern void statusbar_icon_shuffle(void);
extern void statusbar_icon_lock(void);
#ifdef HAVE_RTC
-extern void statusbar_time(void);
+extern void statusbar_time(int minutes);
#endif
#endif /* End HAVE_LCD_BITMAP */
diff --git a/apps/status.c b/apps/status.c
index c777a9e8ab..38a732a814 100644
--- a/apps/status.c
+++ b/apps/status.c
@@ -48,6 +48,7 @@ void status_init(void)
void status_set_playmode(enum playmode mode)
{
current_mode = mode;
+ status_draw();
}
#ifdef HAVE_LCD_BITMAP
@@ -63,10 +64,10 @@ bool statusbar(bool state)
void status_draw(void)
{
-#if defined(HAVE_LCD_CHARCELLS)
int battlevel = battery_level();
int volume = mpeg_val2phys(SOUND_VOLUME, global_settings.volume);
+#if defined(HAVE_LCD_CHARCELLS)
lcd_icon(ICON_BATTERY, true);
if(battlevel > 25)
lcd_icon(ICON_BATTERY_1, true);
@@ -126,9 +127,6 @@ void status_draw(void)
}
#endif
#ifdef HAVE_LCD_BITMAP
- int battlevel = battery_level();
- int volume = mpeg_val2phys(SOUND_VOLUME, global_settings.volume);
-
if(global_settings.statusbar && statusbar_enabled) {
statusbar_wipe();
#ifdef HAVE_CHARGE_CTRL
@@ -155,7 +153,8 @@ void status_draw(void)
}
}
- if(battery_state) statusbar_icon_battery(battlevel, plug_state);
+ if (battery_state)
+ statusbar_icon_battery(battlevel, plug_state);
#else
statusbar_icon_battery(battlevel, false);
#endif
@@ -170,8 +169,9 @@ void status_draw(void)
if (keys_locked)
statusbar_icon_lock();
#ifdef HAVE_RTC
- statusbar_time();
+ statusbar_time( rtc_read(3)*60 + rtc_read(2) );
#endif
+
#ifdef SIMULATOR
lcd_update();
#else