From f1034e00f6196c810466da66a9a24bf2e5f61272 Mon Sep 17 00:00:00 2001 From: Jonathan Gordon Date: Sun, 5 Jul 2009 18:07:58 +0000 Subject: FS#10406 - split the statusbar setting into one for each display, and allow the bar to be at the top or bottom of the display git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21665 a1c6a512-1295-4272-9138-f99709370657 --- apps/gui/viewport.c | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) (limited to 'apps/gui/viewport.c') diff --git a/apps/gui/viewport.c b/apps/gui/viewport.c index 22d3eb3eb8..67f63e349b 100644 --- a/apps/gui/viewport.c +++ b/apps/gui/viewport.c @@ -49,30 +49,47 @@ int viewport_get_nb_lines(struct viewport *vp) static bool showing_bars(enum screen_type screen) { + bool ignore = statusbar_enabled & VP_SB_IGNORE_SETTING(screen); if (statusbar_enabled & VP_SB_ONSCREEN(screen)) + { #ifdef HAVE_LCD_BITMAP - return global_settings.statusbar || - (statusbar_enabled & VP_SB_IGNORE_SETTING(screen)); +#ifdef HAVE_REMOTE_LCD + if (screen == SCREEN_REMOTE) + return global_settings.remote_statusbar || ignore; +#endif + return global_settings.statusbar || ignore; #else return true; #endif + } return false; } void viewport_set_defaults(struct viewport *vp, enum screen_type screen) { + bool bar_at_top = true; vp->x = 0; vp->width = screens[screen].lcdwidth; #ifdef HAVE_LCD_BITMAP vp->drawmode = DRMODE_SOLID; vp->font = FONT_UI; /* default to UI to discourage SYSFONT use */ - - vp->y = showing_bars(screen)?STATUSBAR_HEIGHT:0; +#ifdef HAVE_REMOTE_LCD + if (screen == SCREEN_REMOTE) + bar_at_top = global_settings.remote_statusbar != STATUSBAR_BOTTOM; + else +#endif + bar_at_top = global_settings.statusbar != STATUSBAR_BOTTOM; + + vp->height = screens[screen].lcdheight; + if (bar_at_top && showing_bars(screen)) + vp->y = STATUSBAR_HEIGHT; + else + vp->y = 0; #else vp->y = 0; #endif - vp->height = screens[screen].lcdheight - vp->y; + vp->height = screens[screen].lcdheight - (showing_bars(screen)?STATUSBAR_HEIGHT:0); #ifdef HAVE_REMOTE_LCD /* We only need this test if there is a remote LCD */ @@ -136,5 +153,12 @@ void viewportmanager_draw_statusbars(void* data) void viewportmanager_statusbar_changed(void* data) { (void)data; + statusbar_enabled = 0; + if (global_settings.statusbar != STATUSBAR_OFF) + statusbar_enabled = VP_SB_ONSCREEN(SCREEN_MAIN); +#ifdef HAVE_REMOTE_LCD + if (global_settings.remote_statusbar != STATUSBAR_OFF) + statusbar_enabled |= VP_SB_ONSCREEN(SCREEN_REMOTE); +#endif viewportmanager_set_statusbar(statusbar_enabled); } -- cgit v1.2.3