summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Ferrare <kevin@rockbox.org>2005-11-20 01:02:14 +0000
committerKevin Ferrare <kevin@rockbox.org>2005-11-20 01:02:14 +0000
commit1a1abf25f43e33dfa7d421d6c43f283763226dbd (patch)
tree71e57b7c1f5d3c2521fbf2215e938b55fe77bb99
parente3367212bd8a25cfe6468aa20adaacf4c5b0b2d4 (diff)
downloadrockbox-1a1abf25f43e33dfa7d421d6c43f283763226dbd.tar.gz
rockbox-1a1abf25f43e33dfa7d421d6c43f283763226dbd.tar.bz2
rockbox-1a1abf25f43e33dfa7d421d6c43f283763226dbd.zip
removed old statusbar and buttonbar code
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8004 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/alarm_menu.c35
-rw-r--r--apps/bookmark.c57
-rw-r--r--apps/filetree.c1
-rw-r--r--apps/gui/splash.c1
-rw-r--r--apps/gui/statusbar.c39
-rw-r--r--apps/gui/statusbar.h6
-rw-r--r--apps/gui/textarea.c4
-rw-r--r--apps/onplay.c4
-rw-r--r--apps/player/keyboard.c6
-rw-r--r--apps/recorder/icons.c181
-rw-r--r--apps/recorder/icons.h2
-rw-r--r--apps/recorder/keyboard.c20
-rw-r--r--apps/recorder/radio.c38
-rw-r--r--apps/recorder/recording.c6
-rw-r--r--apps/screen_access.c8
-rw-r--r--apps/screen_access.h1
-rw-r--r--apps/screens.c18
-rw-r--r--apps/sleeptimer.c4
-rw-r--r--apps/sound_menu.c4
-rw-r--r--apps/status.c278
-rw-r--r--apps/status.h25
-rw-r--r--firmware/SOURCES2
-rw-r--r--firmware/drivers/led.c54
-rw-r--r--firmware/export/led.h4
24 files changed, 163 insertions, 635 deletions
diff --git a/apps/alarm_menu.c b/apps/alarm_menu.c
index 9df664f8a8..ae5d5bb752 100644
--- a/apps/alarm_menu.c
+++ b/apps/alarm_menu.c
@@ -25,14 +25,12 @@
#include "options.h"
#include "lcd.h"
-#include "font.h"
#include "button.h"
#include "kernel.h"
#include "sprintf.h"
#include <string.h>
#include "settings.h"
#include "power.h"
-#include "status.h"
#include "icons.h"
#include "rtc.h"
#include "misc.h"
@@ -44,6 +42,8 @@
#include "backlight.h"
#include "splash.h"
+#include "statusbar.h"
+#include "textarea.h"
#define MARGIN_Y (global_settings.statusbar ? STATUSBAR_HEIGHT : 0)
bool alarm_screen(void)
@@ -54,6 +54,7 @@ bool alarm_screen(void)
struct tm *tm;
int togo;
int button;
+ int i;
bool update = true;
rtc_get_alarm(&h, &m);
@@ -69,20 +70,22 @@ bool alarm_screen(void)
while(!done) {
if(update)
{
- lcd_clear_display();
- status_draw(true);
- lcd_setfont(FONT_SYSFIXED);
- lcd_setmargins(0, MARGIN_Y);
- lcd_puts(0, 3, str(LANG_ALARM_MOD_KEYS));
+ FOR_NB_SCREENS(i)
+ {
+ gui_textarea_clear(&screens[i]);
+ screens[i].puts(0, 3, str(LANG_ALARM_MOD_KEYS));
+ }
update = false;
}
-
- snprintf(buf, 32, str(LANG_ALARM_MOD_TIME), h, m);
- lcd_puts(0, 1, buf);
- lcd_update();
+ snprintf(buf, 32, str(LANG_ALARM_MOD_TIME), h, m);
+ FOR_NB_SCREENS(i)
+ {
+ screens[i].puts(0, 1, buf);
+ gui_textarea_update(&screens[i]);
+ }
button = button_get_w_tmo(HZ);
-
+
switch(button) {
case BUTTON_PLAY:
/* prevent that an alarm occurs in the shutdown procedure */
@@ -95,7 +98,7 @@ bool alarm_screen(void)
rtc_enable_alarm(true);
gui_syncsplash(HZ*2, true, str(LANG_ALARM_MOD_TIME_TO_GO),
togo / 60, togo % 60);
- done = true;
+ done = true;
} else {
gui_syncsplash(HZ, true, str(LANG_ALARM_MOD_ERROR));
update = true;
@@ -125,9 +128,9 @@ bool alarm_screen(void)
if (h == -1)
h = 23;
break;
-
+
#if CONFIG_KEYPAD == RECORDER_PAD
- /* inc(h) */
+ /* inc(h) */
case BUTTON_UP:
case BUTTON_UP | BUTTON_REPEAT:
h = (h+1) % 24;
@@ -152,7 +155,7 @@ bool alarm_screen(void)
break;
case BUTTON_NONE:
- status_draw(false);
+ gui_syncstatusbar_draw(&statusbars, false);
break;
default:
diff --git a/apps/bookmark.c b/apps/bookmark.c
index c01567848a..4ca828089f 100644
--- a/apps/bookmark.c
+++ b/apps/bookmark.c
@@ -49,6 +49,8 @@
#include "misc.h"
#include "abrepeat.h"
#include "splash.h"
+#include "yesno.h"
+
#define MAX_BOOKMARKS 10
#define MAX_BOOKMARK_SIZE 350
#define RECENT_BOOKMARK_FILE ROCKBOX_DIR "/most-recent.bmark"
@@ -189,10 +191,6 @@ bool bookmark_mrb_load()
/* ----------------------------------------------------------------------- */
bool bookmark_autobookmark(void)
{
- /* prompts the user as to create a bookmark */
- bool done = false;
- int key = 0;
-
if (!system_check())
return false;
@@ -208,42 +206,23 @@ bool bookmark_autobookmark(void)
case BOOKMARK_RECENT_ONLY_YES:
return write_bookmark(false);
}
-
- /* Prompting user to confirm bookmark creation */
- lcd_clear_display();
#ifdef HAVE_LCD_BITMAP
- lcd_setmargins(0, STATUSBAR_HEIGHT);
- lcd_puts(0,0, str(LANG_AUTO_BOOKMARK_QUERY));
- lcd_puts(0,1, str(LANG_CONFIRM_WITH_PLAY_RECORDER));
- lcd_puts(0,2, str(LANG_CANCEL_WITH_ANY_RECORDER));
+ char *lines[]={str(LANG_AUTO_BOOKMARK_QUERY),
+ str(LANG_CONFIRM_WITH_PLAY_RECORDER),
+ str(LANG_CANCEL_WITH_ANY_RECORDER)};
+ struct text_message message={lines, 3};
#else
- status_draw(false);
- lcd_puts(0,0, str(LANG_AUTO_BOOKMARK_QUERY));
- lcd_puts(0,1,str(LANG_RESUME_CONFIRM_PLAYER));
+ char *lines[]={str(LANG_AUTO_BOOKMARK_QUERY),
+ str(LANG_RESUME_CONFIRM_PLAYER)};
+ struct text_message message={lines, 2};
#endif
- lcd_update();
-
- while (!done)
+ gui_syncstatusbar_draw(&statusbars, false);
+ if(gui_syncyesno_run(&message, NULL, NULL)==YESNO_YES)
{
- /* Wait for a key to be pushed */
- key = button_get(true);
- switch (key)
- {
- case SETTINGS_OK:
- if (global_settings.autocreatebookmark ==
- BOOKMARK_RECENT_ONLY_ASK)
- return write_bookmark(false);
- else
- return write_bookmark(true);
- break;
-
- default:
- /* Handle sys events, ignore button releases & repeats */
- if(default_event_handler(key) ||
- !(key & (BUTTON_REL|BUTTON_REPEAT)))
- done = true;
- break;
- }
+ if (global_settings.autocreatebookmark == BOOKMARK_RECENT_ONLY_ASK)
+ return write_bookmark(false);
+ else
+ return write_bookmark(true);
}
return false;
}
@@ -434,7 +413,6 @@ bool bookmark_autoload(const char* file)
{
return false;
}
-
fd = open(global_bookmark_file_name, O_RDONLY);
if(fd<0)
return false;
@@ -444,7 +422,6 @@ bool bookmark_autoload(const char* file)
return false;
}
close(fd);
-
if(global_settings.autoloadbookmark == BOOKMARK_YES)
{
return bookmark_load(global_bookmark_file_name, true);
@@ -453,6 +430,7 @@ bool bookmark_autoload(const char* file)
{
/* Prompting user to confirm bookmark load */
lcd_clear_display();
+ gui_syncstatusbar_draw(&statusbars, false);
#ifdef HAVE_LCD_BITMAP
lcd_setmargins(0, STATUSBAR_HEIGHT);
lcd_puts_scroll(0,0, str(LANG_BOOKMARK_AUTOLOAD_QUERY));
@@ -460,7 +438,6 @@ bool bookmark_autoload(const char* file)
lcd_puts(0,2, str(LANG_BOOKMARK_SELECT_LIST_BOOKMARKS));
lcd_puts(0,3, str(LANG_CANCEL_WITH_ANY_RECORDER));
#else
- status_draw(false);
lcd_puts_scroll(0,0, str(LANG_BOOKMARK_AUTOLOAD_QUERY));
lcd_puts(0,1,str(LANG_RESUME_CONFIRM_PLAYER));
#endif
@@ -857,7 +834,7 @@ static void display_bookmark(const char* bookmark,
global_filename);
}
- status_draw(false);
+ gui_syncstatusbar_draw(&statusbars, false);
lcd_puts_scroll(0,0,global_temp_buffer);
lcd_puts(0,1,str(LANG_RESUME_CONFIRM_PLAYER));
if (dot)
diff --git a/apps/filetree.c b/apps/filetree.c
index 236ee487d7..0a2c855375 100644
--- a/apps/filetree.c
+++ b/apps/filetree.c
@@ -342,7 +342,6 @@ int ft_enter(struct tree_context* c)
bool play = false;
int start_index=0;
- lcd_stop_scroll();
gui_syncsplash(0, true, str(LANG_WAIT));
switch ( file->attr & TREE_ATTR_MASK ) {
case TREE_ATTR_M3U:
diff --git a/apps/gui/splash.c b/apps/gui/splash.c
index ce8b3cd995..551888544f 100644
--- a/apps/gui/splash.c
+++ b/apps/gui/splash.c
@@ -56,6 +56,7 @@ static void splash(struct screen * screen,
#ifdef HAVE_LCD_CHARCELLS
screen->double_height (false);
#endif
+ screen->stop_scroll();
vsnprintf( splash_buf, sizeof(splash_buf), fmt, ap );
if(center) {
diff --git a/apps/gui/statusbar.c b/apps/gui/statusbar.c
index dad317e9e2..02c69815a1 100644
--- a/apps/gui/statusbar.c
+++ b/apps/gui/statusbar.c
@@ -107,17 +107,17 @@ void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw)
#ifdef HAVE_LCD_BITMAP
if(!global_settings.statusbar)
return;
-#endif
+#endif /* HAVE_LCD_BITMAP */
struct screen * display = bar->display;
#ifdef HAVE_RTC
struct tm* tm; /* For Time */
-#endif
+#endif /* HAVE_RTC */
#ifdef HAVE_LCD_CHARCELLS
(void)force_redraw; /* players always "redraw" */
-#endif
+#endif /* HAVE_LCD_CHARCELLS */
bar->info.volume = sound_val2phys(SOUND_VOLUME, global_settings.volume);
bar->info.inserted = charger_inserted();
@@ -129,22 +129,22 @@ void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw)
tm = get_time();
bar->info.hour = tm->tm_hour;
bar->info.minute = tm->tm_min;
-#endif
+#endif /* HAVE_RTC */
bar->info.shuffle = global_settings.playlist_shuffle;
#if CONFIG_KEYPAD == IRIVER_H100_PAD
bar->info.keylock = button_hold();
#else
bar->info.keylock = keys_locked;
-#endif
+#endif /* CONFIG_KEYPAD == IRIVER_H100_PAD */
bar->info.repeat = global_settings.repeat_mode;
bar->info.playmode = current_playmode();
-#if CONFIG_LED == LED_VIRTUAL
- bar->info.led = led_read(HZ/2); /* delay should match polling interval */
-#endif
+ if(!display->has_disk_led)
+ bar->info.led = led_read(HZ/2); /* delay should match polling interval */
+
#ifdef HAVE_USB_POWER
bar->info.usb_power = usb_powered();
-#endif
+#endif /* HAVE_USB_POWER */
/* only redraw if forced to, or info has changed */
if (force_redraw ||
@@ -161,7 +161,7 @@ void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw)
/* players always "redraw" */
{
-#endif
+#endif /* HAVE_LCD_BITMAP */
#ifdef HAVE_CHARGING
if (bar->info.inserted) {
@@ -220,7 +220,7 @@ void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw)
STATUSBAR_PLUG_X_POS,
STATUSBAR_Y_POS, STATUSBAR_PLUG_WIDTH,
STATUSBAR_HEIGHT);
-#endif
+#endif /* HAVE_USB_POWER */
bar->info.redraw_volume = gui_statusbar_icon_volume(bar,
bar->info.volume);
@@ -232,7 +232,7 @@ void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw)
case REPEAT_AB:
gui_statusbar_icon_play_mode(display, Icon_RepeatAB);
break;
-#endif
+#endif /* AB_REPEAT_ENABLE */
case REPEAT_ONE:
gui_statusbar_icon_play_mode(display, Icon_RepeatOne);
@@ -249,14 +249,12 @@ void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw)
gui_statusbar_icon_lock(display);
#ifdef HAVE_RTC
gui_statusbar_time(display, bar->info.hour, bar->info.minute);
-#endif
-#if CONFIG_LED == LED_VIRTUAL
- if (bar->info.led)
- statusbar_led();
-#endif
+#endif /* HAVE_RTC */
+ if(!display->has_disk_led && bar->info.led)
+ gui_statusbar_led(display);
display->update_rect(0, 0, display->width, STATUSBAR_HEIGHT);
bar->lastinfo = bar->info;
-#endif
+#endif /* HAVE_LCD_BITMAP */
}
@@ -284,7 +282,7 @@ void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw)
display->icon(ICON_AUDIO, audio);
display->icon(ICON_PARAM, param);
display->icon(ICON_USB, usb);
-#endif
+#endif /* HAVE_LCD_CHARCELLS */
}
#ifdef HAVE_LCD_BITMAP
@@ -448,7 +446,6 @@ void gui_statusbar_icon_lock(struct screen * display)
STATUSBAR_Y_POS, 5, 8);
}
-#if CONFIG_LED == LED_VIRTUAL
/*
* no real LED: disk activity in status bar
*/
@@ -459,8 +456,6 @@ void gui_statusbar_led(struct screen * display)
STATUSBAR_Y_POS, STATUSBAR_DISK_WIDTH,
STATUSBAR_HEIGHT);
}
-#endif
-
#ifdef HAVE_RTC
/*
diff --git a/apps/gui/statusbar.h b/apps/gui/statusbar.h
index afbdce6d5a..77ceefd69f 100644
--- a/apps/gui/statusbar.h
+++ b/apps/gui/statusbar.h
@@ -42,9 +42,8 @@ struct status_info {
bool keylock;
bool battery_safe;
bool redraw_volume; /* true if the volume gauge needs updating */
-#if CONFIG_LED == LED_VIRTUAL
bool led; /* disk LED simulation in the status bar */
-#endif
+
#ifdef HAVE_USB_POWER
bool usb_power;
#endif
@@ -100,9 +99,8 @@ void gui_statusbar_icon_play_state(struct screen * display, int state);
void gui_statusbar_icon_play_mode(struct screen * display, int mode);
void gui_statusbar_icon_shuffle(struct screen * display);
void gui_statusbar_icon_lock(struct screen * display);
-#if CONFIG_LED == LED_VIRTUAL
void gui_statusbar_led(struct screen * display);
-#endif
+
#ifdef HAVE_RTC
void gui_statusbar_time(struct screen * display, int hour, int minute);
diff --git a/apps/gui/textarea.c b/apps/gui/textarea.c
index d73f20d0e7..28ca2c5b29 100644
--- a/apps/gui/textarea.c
+++ b/apps/gui/textarea.c
@@ -18,6 +18,7 @@
****************************************************************************/
#include "textarea.h"
+#include "font.h"
void gui_textarea_clear(struct screen * display)
{
@@ -27,6 +28,7 @@ void gui_textarea_clear(struct screen * display)
screen_clear_area(display, 0, y_start, display->width, y_end - y_start);
display->stop_scroll();
screen_set_ymargin(display, y_start);
+ display->setfont(FONT_SYSFIXED);
#else
display->clear_display();
#endif
@@ -48,7 +50,7 @@ int gui_textarea_put_message(struct screen * display,
int i;
gui_textarea_clear(display);
for(i=0;i<message->nb_lines && i+ystart<display->nb_lines;i++)
- display->puts(0, i+ystart, message->message_lines[i]);
+ display->puts_scroll(0, i+ystart, message->message_lines[i]);
gui_textarea_update(display);
return(i);
}
diff --git a/apps/onplay.c b/apps/onplay.c
index 704e0c04ec..df4ff15db9 100644
--- a/apps/onplay.c
+++ b/apps/onplay.c
@@ -39,7 +39,7 @@
#include "tree.h"
#include "buffer.h"
#include "settings.h"
-#include "status.h"
+#include "statusbar.h"
#include "playlist_viewer.h"
#include "talk.h"
#include "onplay.h"
@@ -220,7 +220,7 @@ static bool add_to_playlist(int position, bool queue)
if (global_settings.playlist_shuffle)
playlist_shuffle(current_tick, -1);
playlist_start(0,0);
- status_draw(false);
+ gui_syncstatusbar_draw(&statusbars, false);
onplay_result = ONPLAY_START_PLAY;
}
diff --git a/apps/player/keyboard.c b/apps/player/keyboard.c
index fb06a0dc7b..385532a6f3 100644
--- a/apps/player/keyboard.c
+++ b/apps/player/keyboard.c
@@ -26,7 +26,7 @@
#include <string.h>
#include "lcd-player-charset.h"
#include "settings.h"
-#include "status.h"
+#include "statusbar.h"
#include "talk.h"
#include "misc.h"
@@ -153,7 +153,7 @@ int kbd_input(char* text, int buflen)
lcd_puts(1, 1, temptext);
lcd_put_cursor(curpos + 1, 1, KEYBOARD_CURSOR);
- status_draw(true);
+ gui_syncstatusbar_draw(&statusbars, true);
}
/* The default action is to redraw */
@@ -251,7 +251,7 @@ int kbd_input(char* text, int buflen)
break;
case BUTTON_NONE:
- status_draw(false);
+ gui_syncstatusbar_draw(&statusbars, false);
redraw = false;
break;
diff --git a/apps/recorder/icons.c b/apps/recorder/icons.c
index baba77bc52..1306a1d770 100644
--- a/apps/recorder/icons.c
+++ b/apps/recorder/icons.c
@@ -73,11 +73,9 @@ const unsigned char bitmap_icons_7x8[][7] =
{0x7f,0x04,0x4e,0x5f,0x44,0x38,0x7f} /* Repeat-AB playmode */
};
-#if CONFIG_LED == LED_VIRTUAL
/* Disk/MMC activity */
const unsigned char bitmap_icon_disk[12] =
{0x15,0x3f,0x7d,0x7B,0x77,0x67,0x79,0x7b,0x57,0x4f,0x47,0x7f};
-#endif
#if LCD_WIDTH == 112 || LCD_WIDTH == 128 \
|| (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_WIDTH == 128)
@@ -341,130 +339,6 @@ const unsigned char rockbox160x53x2[] = {
#endif
/*
- * Print battery icon to status bar
- */
-void statusbar_icon_battery(int percent)
-{
- int fill;
- char buffer[5];
- unsigned int width, height;
-
- /* fill battery */
- fill = percent;
- if (fill < 0)
- fill = 0;
- if (fill > 100)
- fill = 100;
-
-#if defined(HAVE_CHARGE_CTRL) && !defined(SIMULATOR) /* Rec v1 target only */
- /* show graphical animation when charging instead of numbers */
- if ((global_settings.battery_display) &&
- (charge_state != 1) &&
- (percent > -1)) {
-#else /* all others */
- if (global_settings.battery_display && (percent > -1)) {
-#endif
- /* Numeric display */
- snprintf(buffer, sizeof(buffer), "%3d", fill);
- lcd_setfont(FONT_SYSFIXED);
- lcd_getstringsize(buffer, &width, &height);
- if (height <= STATUSBAR_HEIGHT)
- lcd_putsxy(ICON_BATTERY_X_POS + ICON_BATTERY_WIDTH / 2 -
- width/2, STATUSBAR_Y_POS, buffer);
- lcd_setfont(FONT_UI);
-
- }
- else {
- /* draw battery */
- lcd_drawrect(ICON_BATTERY_X_POS, STATUSBAR_Y_POS, 17, 7);
- lcd_vline(ICON_BATTERY_X_POS + 17, STATUSBAR_Y_POS + 2,
- STATUSBAR_Y_POS + 4);
-
- fill = fill * 15 / 100;
- lcd_fillrect(ICON_BATTERY_X_POS + 1, STATUSBAR_Y_POS + 1, fill, 5);
- }
-
- if (percent == -1) {
- lcd_setfont(FONT_SYSFIXED);
- lcd_putsxy(ICON_BATTERY_X_POS + ICON_BATTERY_WIDTH / 2 - 4,
- STATUSBAR_Y_POS, "?");
- lcd_setfont(FONT_UI);
- }
-}
-
-/*
- * Print volume gauge to status bar
- */
-bool statusbar_icon_volume(int percent)
-{
- int i;
- int volume;
- int vol;
- char buffer[4];
- unsigned int width, height;
- bool needs_redraw = false;
- int type = global_settings.volume_type;
- static long switch_tick;
- static int last_volume = -1; /* -1 means "first update ever" */
-
- volume = percent;
- if (volume < 0)
- volume = 0;
- if (volume > 100)
- volume = 100;
-
- if (volume == 0) {
- lcd_mono_bitmap(bitmap_icons_7x8[Icon_Mute],
- ICON_VOLUME_X_POS + ICON_VOLUME_WIDTH / 2 - 4,
- STATUSBAR_Y_POS, 7, STATUSBAR_HEIGHT);
- }
- else {
- /* We want to redraw the icon later on */
- if (last_volume != volume && last_volume >= 0) {
- switch_tick = current_tick + HZ;
- }
-
- /* If the timeout hasn't yet been reached, we show it numerically
- and tell the caller that we want to be called again */
- if (TIME_BEFORE(current_tick,switch_tick)) {
- type = 1;
- needs_redraw = true;
- }
-
- /* display volume level numerical? */
- if (type)
- {
- snprintf(buffer, sizeof(buffer), "%2d", percent);
- lcd_setfont(FONT_SYSFIXED);
- lcd_getstringsize(buffer, &width, &height);
- if (height <= STATUSBAR_HEIGHT)
- lcd_putsxy(ICON_VOLUME_X_POS + ICON_VOLUME_WIDTH / 2 -
- width/2, STATUSBAR_Y_POS, buffer);
- lcd_setfont(FONT_UI);
- } else {
- /* display volume bar */
- vol = volume * 14 / 100;
- for(i=0; i < vol; i++) {
- lcd_vline(ICON_VOLUME_X_POS + i, STATUSBAR_Y_POS + 6 - i / 2,
- STATUSBAR_Y_POS + 6);
- }
- }
- }
- last_volume = volume;
-
- return needs_redraw;
-}
-
-/*
- * Print play state to status bar
- */
-void statusbar_icon_play_state(int state)
-{
- lcd_mono_bitmap(bitmap_icons_7x8[state], ICON_PLAY_STATE_X_POS,
- STATUSBAR_Y_POS, ICON_PLAY_STATE_WIDTH, STATUSBAR_HEIGHT);
-}
-
-/*
* Print play mode to status bar
*/
void statusbar_icon_play_mode(int mode)
@@ -478,59 +352,6 @@ void statusbar_icon_play_mode(int mode)
*/
void statusbar_icon_shuffle(void)
{
- lcd_mono_bitmap(bitmap_icons_7x8[Icon_Shuffle], ICON_SHUFFLE_X_POS,
+ lcd_mono_bitmap(bitmap_icons_7x8[Icon_Shuffle], ICON_SHUFFLE_X_POS,
STATUSBAR_Y_POS, ICON_SHUFFLE_WIDTH, STATUSBAR_HEIGHT);
}
-
-/*
- * Print lock when keys are locked
- */
-void statusbar_icon_lock(void)
-{
- lcd_mono_bitmap(bitmap_icons_5x8[Icon_Lock], LOCK_X_POS,
- STATUSBAR_Y_POS, 5, 8);
-}
-
-#if CONFIG_LED == LED_VIRTUAL
-/*
- * no real LED: disk activity in status bar
- */
-void statusbar_led(void)
-{
- lcd_mono_bitmap(bitmap_icon_disk, ICON_DISK_X_POS,
- STATUSBAR_Y_POS, ICON_DISK_WIDTH, STATUSBAR_HEIGHT);
-}
-#endif
-
-#ifdef HAVE_RTC
-/*
- * Print time to status bar
- */
-void statusbar_time(int hour, int minute)
-{
- unsigned char buffer[6];
- unsigned int width, height;
-
- if ( hour >= 0 &&
- hour <= 23 &&
- minute >= 0 &&
- minute <= 59 ) {
- if ( global_settings.timeformat ) { /* 12 hour clock */
- hour %= 12;
- if ( hour == 0 ) {
- hour += 12;
- }
- }
- snprintf(buffer, sizeof(buffer), "%02d:%02d", hour, minute);
- }
- else {
- strncpy(buffer, "--:--", sizeof buffer);
- }
-
- lcd_setfont(FONT_SYSFIXED);
- lcd_getstringsize(buffer, &width, &height);
- if (height <= STATUSBAR_HEIGHT)
- lcd_putsxy(TIME_X_END - width, STATUSBAR_Y_POS, buffer);
- lcd_setfont(FONT_UI);
-}
-#endif
diff --git a/apps/recorder/icons.h b/apps/recorder/icons.h
index 6ffcc9cb80..c996fd92aa 100644
--- a/apps/recorder/icons.h
+++ b/apps/recorder/icons.h
@@ -74,9 +74,7 @@ enum icons_7x8 {
extern const unsigned char bitmap_icons_5x8[1][5];
extern const unsigned char bitmap_icons_6x8[LastIcon][6];
extern const unsigned char bitmap_icons_7x8[Icon_Last][7];
-#if CONFIG_LED == LED_VIRTUAL
extern const unsigned char bitmap_icon_disk[];
-#endif
#if LCD_WIDTH == 112 || LCD_WIDTH == 128 || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_WIDTH == 128)
extern const unsigned char rockbox112x37[];
diff --git a/apps/recorder/keyboard.c b/apps/recorder/keyboard.c
index 5ff340b596..31c0643e3c 100644
--- a/apps/recorder/keyboard.c
+++ b/apps/recorder/keyboard.c
@@ -26,10 +26,11 @@
#include <string.h>
#include "font.h"
#include "screens.h"
-#include "status.h"
+#include "statusbar.h"
#include "talk.h"
#include "settings.h"
#include "misc.h"
+#include "buttonbar.h"
#define KEYBOARD_MARGIN 3
@@ -177,7 +178,11 @@ int kbd_input(char* text, int buflen)
char outline[256];
struct font* font = font_get(FONT_SYSFIXED);
int button, lastbutton = 0;
-
+#ifdef HAS_BUTTONBAR
+ struct gui_buttonbar buttonbar;
+ gui_buttonbar_init(&buttonbar);
+ gui_buttonbar_set_display(&buttonbar, &(screens[SCREEN_MAIN]) );
+#endif
lcd_setfont(FONT_SYSFIXED);
font_w = font->maxwidth;
font_h = font->height;
@@ -229,10 +234,10 @@ int kbd_input(char* text, int buflen)
i = (curpos + 1) * font_w;
lcd_vline(i, main_y, main_y + font_h);
-#if CONFIG_KEYPAD == RECORDER_PAD
+#ifdef HAS_BUTTONBAR
/* draw the status bar */
- buttonbar_set("Shift", "OK", "Del");
- buttonbar_draw();
+ gui_buttonbar_set(&buttonbar, "Shift", "OK", "Del");
+ gui_buttonbar_draw(&buttonbar);
#endif
#ifdef KBD_MODES
@@ -245,8 +250,7 @@ int kbd_input(char* text, int buflen)
lcd_set_drawmode(DRMODE_SOLID);
}
- status_draw(true);
-
+ gui_syncstatusbar_draw(&statusbars, true);
lcd_update();
}
@@ -454,7 +458,7 @@ int kbd_input(char* text, int buflen)
#endif /* !KBD_MODES */
case BUTTON_NONE:
- status_draw(false);
+ gui_syncstatusbar_draw(&statusbars, false);
redraw = false;
break;
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c
index ff1d49bd2a..a6b540dd3d 100644
--- a/apps/recorder/radio.c
+++ b/apps/recorder/radio.c
@@ -56,6 +56,7 @@
#include "textarea.h"
#include "splash.h"
#include "yesno.h"
+#include "buttonbar.h"
#include "power.h"
#ifdef CONFIG_TUNER
@@ -298,9 +299,13 @@ bool radio_screen(void)
int hours, minutes;
bool keep_playing = false;
bool statusbar = global_settings.statusbar;
+#ifdef HAS_BUTTONBAR
+ struct gui_buttonbar buttonbar;
+ gui_buttonbar_init(&buttonbar);
+ gui_buttonbar_set_display(&buttonbar, &(screens[SCREEN_MAIN]) );
+#endif
/* always display status bar in radio screen for now */
global_settings.statusbar = true;
-
FOR_NB_SCREENS(i){
gui_textarea_clear(&screens[i]);
screen_set_xmargin(&screens[i],0);
@@ -377,8 +382,8 @@ bool radio_screen(void)
radio_mode = RADIO_PRESET_MODE;
#endif
-#if CONFIG_KEYPAD == RECORDER_PAD
- buttonbar_set(str(LANG_BUTTONBAR_MENU), str(LANG_FM_BUTTONBAR_PRESETS),
+#ifdef HAS_BUTTONBAR
+ gui_buttonbar_set(&buttonbar, str(LANG_BUTTONBAR_MENU), str(LANG_FM_BUTTONBAR_PRESETS),
str(LANG_FM_BUTTONBAR_RECORD));
#endif
@@ -613,10 +618,10 @@ bool radio_screen(void)
gui_textarea_clear(&screens[i]);
screen_set_xmargin(&screens[i],0);
}
-#if CONFIG_KEYPAD == RECORDER_PAD
- buttonbar_set(str(LANG_BUTTONBAR_MENU),
- str(LANG_FM_BUTTONBAR_PRESETS),
- str(LANG_FM_BUTTONBAR_RECORD));
+#ifdef HAS_BUTTONBAR
+ gui_buttonbar_set(&buttonbar, str(LANG_BUTTONBAR_MENU),
+ str(LANG_FM_BUTTONBAR_PRESETS),
+ str(LANG_FM_BUTTONBAR_RECORD));
#endif
update_screen = true;
break;
@@ -646,10 +651,11 @@ bool radio_screen(void)
gui_textarea_clear(&screens[i]);
screen_set_xmargin(&screens[i],0);
}
-#if CONFIG_KEYPAD == RECORDER_PAD
- buttonbar_set(str(LANG_BUTTONBAR_MENU),
- str(LANG_FM_BUTTONBAR_PRESETS),
- str(LANG_FM_BUTTONBAR_RECORD));
+#ifdef HAS_BUTTONBAR
+ gui_buttonbar_set(&buttonbar,
+ str(LANG_BUTTONBAR_MENU),
+ str(LANG_FM_BUTTONBAR_PRESETS),
+ str(LANG_FM_BUTTONBAR_RECORD));
#endif
update_screen = true;
break;
@@ -807,16 +813,16 @@ bool radio_screen(void)
screens[i].puts_scroll(0, top_of_screen + 4, buf);
}
}
-
-#if CONFIG_KEYPAD == RECORDER_PAD
- buttonbar_draw();
-#endif
+
+#if HAS_BUTTONBAR
+ gui_buttonbar_draw(&buttonbar);
+#endif
FOR_NB_SCREENS(i)
gui_textarea_update(&screens[i]);
}
/* Only force the redraw if update_screen is true */
gui_syncstatusbar_draw(&statusbars,true);
-
+
update_screen = false;
}
diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c
index eda56a5bf9..63cd513c78 100644
--- a/apps/recorder/recording.c
+++ b/apps/recorder/recording.c
@@ -45,7 +45,7 @@
#include "icons.h"
#include "screens.h"
#include "peakmeter.h"
-#include "status.h"
+#include "statusbar.h"
#include "menu.h"
#include "sound_menu.h"
#include "timefuncs.h"
@@ -831,7 +831,7 @@ bool recording_screen(void)
lcd_puts(0, 6, buf);
}
- status_draw(true);
+ gui_syncstatusbar_draw(&statusbars, true);
peak_meter_draw(0, 8 + h*2, LCD_WIDTH, h);
lcd_update();
@@ -860,7 +860,7 @@ bool recording_screen(void)
if (audio_stat & AUDIO_STATUS_ERROR)
{
gui_syncsplash(0, true, str(LANG_DISK_FULL));
- status_draw(true);
+ gui_syncstatusbar_draw(&statusbars, true);
lcd_update();
audio_error_clear();
diff --git a/apps/screen_access.c b/apps/screen_access.c
index 6bceb1747e..db64e27199 100644
--- a/apps/screen_access.c
+++ b/apps/screen_access.c
@@ -38,6 +38,8 @@ void screen_init(struct screen * screen, enum screen_type screen_type)
#ifdef HAVE_REMOTE_LCD
case SCREEN_REMOTE:
screen->depth=LCD_REMOTE_DEPTH;
+ screen->has_disk_led=false;
+
#if 1 /* all remote LCDs are bitmapped so far */
screen->width=LCD_REMOTE_WIDTH;
screen->height=LCD_REMOTE_HEIGHT;
@@ -87,13 +89,17 @@ void screen_init(struct screen * screen, enum screen_type screen_type)
screen->clear_display=&lcd_remote_clear_display;
screen->update=&lcd_remote_update;
screen->puts=&lcd_remote_puts;
-
break;
#endif /* HAVE_REMOTE_LCD */
case SCREEN_MAIN:
default:
screen->depth=LCD_DEPTH;
+#if CONFIG_LED == LED_VIRTUAL
+ screen->has_disk_led=false;
+#else
+ screen->has_disk_led=true;
+#endif
#ifdef HAVE_LCD_BITMAP
screen->width=LCD_WIDTH;
screen->height=LCD_HEIGHT;
diff --git a/apps/screen_access.h b/apps/screen_access.h
index 782bd9219d..7f235a2480 100644
--- a/apps/screen_access.h
+++ b/apps/screen_access.h
@@ -54,6 +54,7 @@ struct screen
int depth;
int char_width;
int char_height;
+ bool has_disk_led;
#ifdef HAS_BUTTONBAR
bool has_buttonbar;
#endif
diff --git a/apps/screens.c b/apps/screens.c
index f861bb76c9..acfcd01dbe 100644
--- a/apps/screens.c
+++ b/apps/screens.c
@@ -48,6 +48,8 @@
#include "abrepeat.h"
#include "gwps-common.h"
#include "splash.h"
+#include "statusbar.h"
+
#if defined(HAVE_LCD_BITMAP)
#include "widgets.h"
#endif
@@ -108,7 +110,7 @@ void usb_display_info(void)
lcd_mono_bitmap(usb_logo, LCD_WIDTH/2-BMPWIDTH_usb_logo/2,
LCD_HEIGHT/2-BMPHEIGHT_usb_logo/2, BMPWIDTH_usb_logo,
BMPHEIGHT_usb_logo);
- status_draw(true);
+ gui_syncstatusbar_draw(&statusbars, true);
lcd_update();
#else
lcd_double_height(false);
@@ -116,7 +118,7 @@ void usb_display_info(void)
status_set_param(false);
status_set_audio(false);
status_set_usb(true);
- status_draw(false);
+ gui_syncstatusbar_draw(&statusbars, false);
#endif
}
@@ -138,7 +140,7 @@ void usb_screen(void)
#endif
- status_draw(false);
+ gui_syncstatusbar_draw(&statusbars, false);
}
}
#ifdef HAVE_LCD_CHARCELLS
@@ -358,7 +360,7 @@ int charging_screen(void)
remote_backlight_set_timeout(global_settings.remote_backlight_timeout);
#endif
backlight_set_on_when_charging(global_settings.backlight_on_when_charging);
- status_draw(true);
+ gui_syncstatusbar_draw(&statusbars, true);
#ifdef HAVE_LCD_CHARCELLS
logo_lock_patterns(true);
@@ -367,7 +369,7 @@ int charging_screen(void)
do
{
- status_draw(false);
+ gui_syncstatusbar_draw(&statusbars, false);
charging_display_info(true);
button = button_get_w_tmo(HZ/3);
if (button == BUTTON_ON)
@@ -990,7 +992,7 @@ bool set_time_screen(const char* string, struct tm *tm)
lcd_puts(0, 4, str(LANG_TIME_SET));
lcd_puts(0, 5, str(LANG_TIME_REVERT));
#ifdef HAVE_LCD_BITMAP
- status_draw(true);
+ gui_syncstatusbar_draw(&statusbars, true);
#endif
lcd_update();
@@ -1186,7 +1188,7 @@ bool browse_id3(void)
char* body;
lcd_clear_display();
- status_draw(true);
+ gui_syncstatusbar_draw(&statusbars, true);
line = draw_id3_item(line, top, LANG_ID3_TITLE, id3->title);
line = draw_id3_item(line, top, LANG_ID3_ARTIST, id3->artist);
line = draw_id3_item(line, top, LANG_ID3_ALBUM, id3->album);
@@ -1260,7 +1262,7 @@ bool browse_id3(void)
while (!exit && (top == old_top))
{
- status_draw(false);
+ gui_syncstatusbar_draw(&statusbars, false);
lcd_update();
button = button_get_w_tmo(HZ / 2);
diff --git a/apps/sleeptimer.c b/apps/sleeptimer.c
index 4e6ca5313e..982cbe621a 100644
--- a/apps/sleeptimer.c
+++ b/apps/sleeptimer.c
@@ -28,7 +28,7 @@
#include "settings.h"
#include "power.h"
#include "powermgmt.h"
-#include "status.h"
+#include "statusbar.h"
#include "debug.h"
#include "talk.h"
#include "icons.h"
@@ -155,7 +155,7 @@ bool sleeptimer_screen(void)
}
}
- status_draw(true);
+ gui_syncstatusbar_draw(&statusbars, true);
lcd_update();
}
diff --git a/apps/sound_menu.c b/apps/sound_menu.c
index f2d92d6df6..d8795ab8ae 100644
--- a/apps/sound_menu.c
+++ b/apps/sound_menu.c
@@ -26,7 +26,7 @@
#include "button.h"
#include "mp3_playback.h"
#include "settings.h"
-#include "status.h"
+#include "statusbar.h"
#include "screens.h"
#ifdef HAVE_LCD_BITMAP
#include "icons.h"
@@ -575,7 +575,7 @@ bool rectrigger(void)
lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
lcd_fillrect(0, stat_height, LCD_WIDTH, LCD_HEIGHT - stat_height);
lcd_set_drawmode(DRMODE_SOLID);
- status_draw(true);
+ gui_syncstatusbar_draw(&statusbars, true);
/* reselect FONT_SYSFONT as status_draw has changed the font */
/*lcd_setfont(FONT_SYSFIXED);*/
diff --git a/apps/status.c b/apps/status.c
index 00f8c5e1fe..e678c76674 100644
--- a/apps/status.c
+++ b/apps/status.c
@@ -28,6 +28,7 @@
#include "audio.h"
#include "gwps.h"
#include "abrepeat.h"
+#include "statusbar.h"
#ifdef HAVE_RTC
#include "timefuncs.h"
#endif
@@ -54,27 +55,6 @@ bool battery_state = true;
int battery_charge_step = 0;
#endif
-struct status_info {
- int battlevel;
- int volume;
- int hour;
- int minute;
- int playmode;
- int repeat;
- bool inserted;
- bool shuffle;
- bool keylock;
- bool battery_safe;
- bool redraw_volume; /* true if the volume gauge needs updating */
-#if CONFIG_LED == LED_VIRTUAL
- bool led; /* disk LED simulation in the status bar */
-#endif
-#ifdef HAVE_USB_POWER
- bool usb_power;
-#endif
-
-};
-
void status_init(void)
{
ff_mode = 0;
@@ -83,7 +63,7 @@ void status_init(void)
void status_set_ffmode(enum playmode mode)
{
ff_mode = mode; /* Either STATUS_FASTFORWARD or STATUS_FASTBACKWARD */
- status_draw(false);
+ gui_syncstatusbar_draw(&statusbars, false);
}
enum playmode status_get_ffmode(void)
@@ -162,257 +142,3 @@ void status_set_usb(bool b)
}
#endif /* HAVE_LCD_CHARCELLS */
-
-void status_draw(bool force_redraw)
-{
- /* This is static because we use memcmp() below to check for changes, and
- the unused bytes (due to struct member alignment) might change if
- the struct is allocated on the stack. */
- static struct status_info info;
-
-#ifdef HAVE_LCD_BITMAP
- static struct status_info lastinfo;
- struct tm* tm;
-
- if ( !global_settings.statusbar )
- return;
-#else
- (void)force_redraw; /* players always "redraw" */
-#endif
-
- info.volume = sound_val2phys(SOUND_VOLUME, global_settings.volume);
- info.inserted = charger_inserted();
- info.battlevel = battery_level();
- info.battery_safe = battery_level_safe();
-
-#ifdef HAVE_LCD_BITMAP
- tm = get_time();
- info.hour = tm->tm_hour;
- info.minute = tm->tm_min;
- info.shuffle = global_settings.playlist_shuffle;
-#if CONFIG_KEYPAD == IRIVER_H100_PAD
- info.keylock = button_hold();
-#else
- info.keylock = keys_locked;
-#endif
- info.repeat = global_settings.repeat_mode;
- info.playmode = current_playmode();
-#if CONFIG_LED == LED_VIRTUAL
- info.led = led_read(HZ/2); /* delay should match polling interval */
-#endif
-#ifdef HAVE_USB_POWER
- info.usb_power = usb_powered();
-#endif
-
- /* only redraw if forced to, or info has changed */
- if (force_redraw ||
- info.inserted ||
- !info.battery_safe ||
- info.redraw_volume ||
- memcmp(&info, &lastinfo, sizeof(struct status_info)))
- {
- lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
- lcd_fillrect(0,0,LCD_WIDTH,8);
- lcd_set_drawmode(DRMODE_SOLID);
-#else
- /* players always "redraw" */
- {
-#endif
-
-#ifdef HAVE_CHARGING
- if (info.inserted) {
- battery_state = true;
-#if defined(HAVE_CHARGE_CTRL) || CONFIG_BATTERY == BATT_LIION2200
- /* zero battery run time if charging */
- if (charge_state > 0) {
- global_settings.runtime = 0;
- lasttime = current_tick;
- }
-
- /* animate battery if charging */
- if ((charge_state == 1) ||
- (charge_state == 2)) {
-#else
- global_settings.runtime = 0;
- lasttime = current_tick;
- {
-#endif
- /* animate in three steps (34% per step for a better look) */
- info.battlevel = battery_charge_step * 34;
- if (info.battlevel > 100)
- info.battlevel = 100;
- if(TIME_AFTER(current_tick, switch_tick)) {
- battery_charge_step=(battery_charge_step+1)%4;
- switch_tick = current_tick + HZ;
- }
- }
- }
- else
-#endif /* HAVE_CHARGING */
- {
- if (info.battery_safe)
- battery_state = true;
- else {
- /* blink battery if level is low */
- if(TIME_AFTER(current_tick, switch_tick) &&
- (info.battlevel > -1)) {
- switch_tick = current_tick+HZ;
- battery_state =! battery_state;
- }
- }
- }
-
-#ifdef HAVE_LCD_BITMAP
- if (battery_state)
- statusbar_icon_battery(info.battlevel);
-
- /* draw power plug if charging */
- if (info.inserted)
- lcd_mono_bitmap(bitmap_icons_7x8[Icon_Plug], ICON_PLUG_X_POS,
- STATUSBAR_Y_POS, ICON_PLUG_WIDTH, STATUSBAR_HEIGHT);
-#ifdef HAVE_USB_POWER
- else if (info.usb_power)
- lcd_mono_bitmap(bitmap_icons_7x8[Icon_USBPlug], ICON_PLUG_X_POS,
- STATUSBAR_Y_POS, ICON_PLUG_WIDTH, STATUSBAR_HEIGHT);
-#endif
-
- info.redraw_volume = statusbar_icon_volume(info.volume);
- statusbar_icon_play_state(current_playmode() + Icon_Play);
- switch (info.repeat) {
-#ifdef AB_REPEAT_ENABLE
- case REPEAT_AB:
- statusbar_icon_play_mode(Icon_RepeatAB);
- break;
-#endif
-
- case REPEAT_ONE:
- statusbar_icon_play_mode(Icon_RepeatOne);
- break;
-
- case REPEAT_ALL:
- case REPEAT_SHUFFLE:
- statusbar_icon_play_mode(Icon_Repeat);
- break;
- }
- if (info.shuffle)
- statusbar_icon_shuffle();
- if (info.keylock)
- statusbar_icon_lock();
-#ifdef HAVE_RTC
- statusbar_time(info.hour, info.minute);
-#endif
-#if CONFIG_LED == LED_VIRTUAL
- if (info.led)
- statusbar_led();
-#endif
- lcd_update_rect(0, 0, LCD_WIDTH, STATUSBAR_HEIGHT);
- lastinfo = info;
-#endif
- }
-
-
-#if defined(HAVE_LCD_CHARCELLS)
- if (info.battlevel > -1)
- lcd_icon(ICON_BATTERY, battery_state);
- lcd_icon(ICON_BATTERY_1, info.battlevel > 25);
- lcd_icon(ICON_BATTERY_2, info.battlevel > 50);
- lcd_icon(ICON_BATTERY_3, info.battlevel > 75);
-
- lcd_icon(ICON_VOLUME, true);
- lcd_icon(ICON_VOLUME_1, info.volume > 10);
- lcd_icon(ICON_VOLUME_2, info.volume > 30);
- lcd_icon(ICON_VOLUME_3, info.volume > 50);
- lcd_icon(ICON_VOLUME_4, info.volume > 70);
- lcd_icon(ICON_VOLUME_5, info.volume > 90);
-
- lcd_icon(ICON_PLAY, current_playmode() == STATUS_PLAY);
- lcd_icon(ICON_PAUSE, current_playmode() == STATUS_PAUSE);
-
- lcd_icon(ICON_REPEAT, global_settings.repeat_mode != REPEAT_OFF);
- lcd_icon(ICON_1, global_settings.repeat_mode == REPEAT_ONE);
-
- lcd_icon(ICON_RECORD, record);
- lcd_icon(ICON_AUDIO, audio);
- lcd_icon(ICON_PARAM, param);
- lcd_icon(ICON_USB, usb);
-#endif
-
-}
-
-#if defined(HAVE_LCD_BITMAP) && (CONFIG_KEYPAD == RECORDER_PAD)
-static void draw_buttonbar_btn(int num, const char* caption)
-{
- int xpos, ypos, button_width, text_width;
- int fw, fh;
-
- lcd_setfont(FONT_SYSFIXED);
- lcd_getstringsize("M", &fw, &fh);
-
- button_width = LCD_WIDTH/3;
- xpos = num * button_width;
- ypos = LCD_HEIGHT - fh;
-
- if(caption)
- {
- /* center the text */
- text_width = fw * strlen(caption);
- lcd_putsxy(xpos + (button_width - text_width)/2, ypos, caption);
- }
-
- lcd_set_drawmode(DRMODE_COMPLEMENT);
- lcd_fillrect(xpos, ypos, button_width - 1, fh);
- lcd_set_drawmode(DRMODE_SOLID);
-}
-
-static char stored_caption1[8];
-static char stored_caption2[8];
-static char stored_caption3[8];
-
-void buttonbar_set(const char* caption1, const char *caption2,
- const char *caption3)
-{
- buttonbar_unset();
- if(caption1)
- {
- strncpy(stored_caption1, caption1, 7);
- stored_caption1[7] = 0;
- }
- if(caption2)
- {
- strncpy(stored_caption2, caption2, 7);
- stored_caption2[7] = 0;
- }
- if(caption3)
- {
- strncpy(stored_caption3, caption3, 7);
- stored_caption3[7] = 0;
- }
-}
-
-void buttonbar_unset(void)
-{
- stored_caption1[0] = 0;
- stored_caption2[0] = 0;
- stored_caption3[0] = 0;
-}
-
-void buttonbar_draw(void)
-{
- lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
- lcd_fillrect(0, LCD_HEIGHT-8, LCD_WIDTH, 8);
- lcd_set_drawmode(DRMODE_SOLID);
- draw_buttonbar_btn(0, stored_caption1);
- draw_buttonbar_btn(1, stored_caption2);
- draw_buttonbar_btn(2, stored_caption3);
-}
-
-bool buttonbar_isset(void)
-{
- /* If all buttons are unset, the button bar is considered disabled */
- return (global_settings.buttonbar &&
- ((stored_caption1[0] != 0) ||
- (stored_caption2[0] != 0) ||
- (stored_caption3[0] != 0)));
-}
-
-#endif
diff --git a/apps/status.h b/apps/status.h
index 25d3166d78..68319257b8 100644
--- a/apps/status.h
+++ b/apps/status.h
@@ -52,27 +52,14 @@ void status_set_ffmode(enum playmode mode);
enum playmode status_get_ffmode(void);
int current_playmode(void);
-#ifdef HAVE_LCD_BITMAP
-bool statusbar(bool state);
-#if CONFIG_KEYPAD == RECORDER_PAD
-void buttonbar_set(const char* caption1, const char* caption2,
- const char* caption3);
-void buttonbar_unset(void);
-bool buttonbar_isset(void);
-void buttonbar_draw(void);
-#define BUTTONBAR_HEIGHT 8
-#endif /* CONFIG_KEYPAD == RECORDER_PAD */
-#endif /* HAVE_LCD_BITMAP */
-void status_draw(bool force_redraw);
-
-#if defined(HAVE_LCD_CHARCELLS)
+#ifdef SIMULATOR
+#include <time.h>
+#endif
+#ifdef HAVE_LCD_CHARCELLS
void status_set_record(bool b);
void status_set_audio(bool b);
void status_set_param(bool b);
void status_set_usb(bool b);
-#endif
+#endif /* HAVE_LCD_CHARCELLS */
-#ifdef SIMULATOR
-#include <time.h>
-#endif
-#endif
+#endif /* _STATUS_H */
diff --git a/firmware/SOURCES b/firmware/SOURCES
index fb8ed7b6d7..e5056c54df 100644
--- a/firmware/SOURCES
+++ b/firmware/SOURCES
@@ -65,9 +65,7 @@ drivers/lcd-ipod.c
drivers/lcd-h300.c
#endif
drivers/power.c
-#ifdef CONFIG_LED
drivers/led.c
-#endif
#ifndef SIMULATOR
drivers/adc.c
#ifdef HAVE_MMC
diff --git a/firmware/drivers/led.c b/firmware/drivers/led.c
index ca4aadac71..1e38fa63d3 100644
--- a/firmware/drivers/led.c
+++ b/firmware/drivers/led.c
@@ -23,44 +23,50 @@
#include "system.h"
#include "kernel.h"
+static bool disk_led_status;
+static long last_on; /* timestamp of switching off */
+
+
+
+void disk_led_on(void)
+{
+ disk_led_status=true;
#if CONFIG_LED == LED_REAL
+#ifdef GMINI_ARCH
+ P2 |= 1;
+#else
+ or_b(0x40, &PBDRL);
+#endif
+#endif
+}
-void led(bool on)
+void disk_led_off(void)
{
- if ( on )
+ if(disk_led_status)
+ {
+ last_on = current_tick;/* remember for off delay */
+ disk_led_status=false;
+#if CONFIG_LED == LED_REAL
#ifdef GMINI_ARCH
- P2 |= 1;
- else
P2 &= ~1;
#else
- {
- or_b(0x40, &PBDRL);
- }
- else
- {
and_b(~0x40, &PBDRL);
- }
#endif
+#endif
+ }
}
-#elif CONFIG_LED == LED_VIRTUAL
-
-static bool current;
-static long last_on; /* timestamp of switching off */
-
void led(bool on)
{
- if (current && !on) /* switching off */
- {
- last_on = current_tick; /* remember for off delay */
- }
- current = on;
+ if ( on )
+ disk_led_on();
+ else
+ disk_led_off();
}
-bool led_read(int delayticks) /* read by status bar update */
+bool led_read(int delayticks)
{
/* reading "off" is delayed by user-supplied monoflop value */
- return (current || TIME_BEFORE(current_tick, last_on+delayticks));
+ return (disk_led_status ||
+ TIME_BEFORE(current_tick, last_on+delayticks));
}
-
-#endif /* CONFIG_LED */
diff --git a/firmware/export/led.h b/firmware/export/led.h
index f1b3b95447..1dad329e4b 100644
--- a/firmware/export/led.h
+++ b/firmware/export/led.h
@@ -23,8 +23,6 @@
#include <stdbool.h>
extern void led( bool on );
-#if CONFIG_LED == LED_VIRTUAL
-extern bool led_read(int delayticks); /* read for status bar */
-#endif
+extern bool led_read(int delayticks);
#endif