summaryrefslogtreecommitdiff
path: root/apps/gui/viewport.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/viewport.c')
-rw-r--r--apps/gui/viewport.c33
1 files changed, 32 insertions, 1 deletions
diff --git a/apps/gui/viewport.c b/apps/gui/viewport.c
index ef61494b71..9cd905fa14 100644
--- a/apps/gui/viewport.c
+++ b/apps/gui/viewport.c
@@ -33,6 +33,9 @@
33#include "viewport.h" 33#include "viewport.h"
34#include "statusbar.h" 34#include "statusbar.h"
35#include "screen_access.h" 35#include "screen_access.h"
36#include "appevents.h"
37
38static bool statusbar_enabled = true;
36 39
37int viewport_get_nb_lines(struct viewport *vp) 40int viewport_get_nb_lines(struct viewport *vp)
38{ 41{
@@ -50,7 +53,7 @@ void viewport_set_defaults(struct viewport *vp, enum screen_type screen)
50 vp->x = 0; 53 vp->x = 0;
51 vp->width = screens[screen].lcdwidth; 54 vp->width = screens[screen].lcdwidth;
52 55
53 vp->y = gui_statusbar_height(); 56 vp->y = statusbar_enabled?gui_statusbar_height():0;
54 vp->height = screens[screen].lcdheight - vp->y; 57 vp->height = screens[screen].lcdheight - vp->y;
55#ifdef HAVE_LCD_BITMAP 58#ifdef HAVE_LCD_BITMAP
56 vp->drawmode = DRMODE_SOLID; 59 vp->drawmode = DRMODE_SOLID;
@@ -82,3 +85,31 @@ void viewport_set_defaults(struct viewport *vp, enum screen_type screen)
82 } 85 }
83#endif 86#endif
84} 87}
88
89
90void viewportmanager_set_statusbar(bool enabled)
91{
92 if (enabled && global_settings.statusbar)
93 {
94 add_event(GUI_EVENT_FOURHERTZ, false, viewportmanager_draw_statusbars);
95 gui_syncstatusbar_draw(&statusbars, true);
96 }
97 else
98 {
99 remove_event(GUI_EVENT_FOURHERTZ, viewportmanager_draw_statusbars);
100 }
101 statusbar_enabled = enabled;
102}
103
104void viewportmanager_draw_statusbars(void* data)
105{
106 (void)data;
107 if (statusbar_enabled)
108 gui_syncstatusbar_draw(&statusbars, false);
109}
110
111void viewportmanager_statusbar_changed(void* data)
112{
113 (void)data;
114 viewportmanager_set_statusbar(statusbar_enabled);
115}