diff options
| author | Jonathan Gordon <rockbox@jdgordon.info> | 2007-04-26 13:52:53 +0000 |
|---|---|---|
| committer | Jonathan Gordon <rockbox@jdgordon.info> | 2007-04-26 13:52:53 +0000 |
| commit | ed8b3bb74b5d1d75d9e05ce060579f19248a97f7 (patch) | |
| tree | c6b011232895c545fc9cf9b1096a95417da0bce8 /apps/plugins | |
| parent | 50798120310938cd61d19fdb943a3c654f846a9f (diff) | |
| download | rockbox-ed8b3bb74b5d1d75d9e05ce060579f19248a97f7.zip rockbox-ed8b3bb74b5d1d75d9e05ce060579f19248a97f7.tar.gz rockbox-ed8b3bb74b5d1d75d9e05ce060579f19248a97f7.tar.bz2 rockbox-ed8b3bb74b5d1d75d9e05ce060579f19248a97f7.tar.xz | |
Accept FS#7080 by Mauricio Peccorini with some minor changes by me:
- show more info in the stopwatch screen, and use the whole display for lap times
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13271 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins')
| -rw-r--r-- | apps/plugins/stopwatch.c | 45 |
1 files changed, 34 insertions, 11 deletions
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c index 3d60b7e..6d4c4d6 100644 --- a/apps/plugins/stopwatch.c +++ b/apps/plugins/stopwatch.c @@ -22,16 +22,13 @@ PLUGIN_HEADER #ifdef HAVE_LCD_BITMAP -#define LAP_LINES 6 #define TIMER_Y 1 #else -#define LAP_LINES 1 #define TIMER_Y 0 #endif #define LAP_Y TIMER_Y+1 -#define MAX_LAPS 10 -#define MAX_SCROLL (MAX_LAPS - LAP_LINES) +#define MAX_LAPS 64 /* variable button definitions */ #if CONFIG_KEYPAD == RECORDER_PAD @@ -148,9 +145,30 @@ static void ticks_to_string(int ticks,int lap,int buflen, char * buf) } else { - rb->snprintf(buf, buflen, - "%2d %2d:%02d:%02d.%02d", - lap, hours, minutes, seconds, cs); + + if (lap > 1) + { + int last_ticks, last_hours, last_minutes, last_seconds, last_cs; + last_ticks = lap_times[(lap-1)%MAX_LAPS] - lap_times[(lap-2)%MAX_LAPS]; + last_hours = last_ticks / (HZ * 3600); + last_ticks -= (HZ * last_hours * 3600); + last_minutes = last_ticks / (HZ * 60); + last_ticks -= (HZ * last_minutes * 60); + last_seconds = last_ticks / HZ; + last_ticks -= (HZ * last_seconds); + last_cs = last_ticks; + + rb->snprintf(buf, buflen, + "%2d %2d:%02d:%02d.%02d [%2d:%02d:%02d.%02d]", + lap, hours, minutes, seconds, cs, last_hours, + last_minutes, last_seconds, last_cs); + } + else + { + rb->snprintf(buf, buflen, + "%2d %2d:%02d:%02d.%02d", + lap, hours, minutes, seconds, cs); + } } } @@ -161,16 +179,21 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) int lap; int done = false; bool update_lap = true; + int lines, h; (void)parameter; rb = api; #ifdef HAVE_LCD_BITMAP rb->lcd_setfont(FONT_UI); + rb->lcd_getstringsize("M", NULL, &h); + lines = (LCD_HEIGHT / h) - (LAP_Y); +#else + lines = 1; #endif rb->lcd_clear_display(); - + while (!done) { if (counting) @@ -188,7 +211,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) if(update_lap) { lap_start = curr_lap - lap_scroll; - for (lap = lap_start; lap > lap_start - LAP_LINES; lap--) + for (lap = lap_start; lap > lap_start - lines; lap--) { if (lap > 0) { @@ -272,8 +295,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) /* Scroll Lap timer down */ case STOPWATCH_SCROLL_DOWN: - if ((lap_scroll < curr_lap - LAP_LINES) && - (lap_scroll < MAX_SCROLL) ) + if ((lap_scroll < curr_lap - lines) && + (lap_scroll < (MAX_LAPS - lines)) ) { lap_scroll ++; update_lap = true; |