diff options
Diffstat (limited to 'apps/gui')
-rw-r--r-- | apps/gui/list.c | 55 | ||||
-rw-r--r-- | apps/gui/list.h | 2 | ||||
-rw-r--r-- | apps/gui/statusbar.c | 2 | ||||
-rw-r--r-- | apps/gui/viewport.c | 169 | ||||
-rw-r--r-- | apps/gui/viewport.h | 82 | ||||
-rw-r--r-- | apps/gui/wps.c | 1 |
6 files changed, 240 insertions, 71 deletions
diff --git a/apps/gui/list.c b/apps/gui/list.c index 8a65d3f298..3627f12221 100644 --- a/apps/gui/list.c +++ b/apps/gui/list.c | |||
@@ -55,29 +55,37 @@ static int offset_step = 16; /* pixels per screen scroll step */ | |||
55 | /* should lines scroll out of the screen */ | 55 | /* should lines scroll out of the screen */ |
56 | static bool offset_out_of_view = false; | 56 | static bool offset_out_of_view = false; |
57 | #endif | 57 | #endif |
58 | static int force_list_reinit = false; | ||
59 | 58 | ||
60 | static void gui_list_select_at_offset(struct gui_synclist * gui_list, | 59 | static void gui_list_select_at_offset(struct gui_synclist * gui_list, |
61 | int offset); | 60 | int offset); |
62 | void list_draw(struct screen *display, struct gui_synclist *list); | 61 | void list_draw(struct screen *display, struct gui_synclist *list); |
63 | 62 | ||
64 | #ifdef HAVE_LCD_BITMAP | 63 | #ifdef HAVE_LCD_BITMAP |
65 | static struct viewport parent[NB_SCREENS]; | 64 | static void list_init_viewports(struct gui_synclist *list) |
66 | void list_init_viewports(struct gui_synclist *list) | ||
67 | { | 65 | { |
66 | struct viewport* vp; | ||
68 | int i; | 67 | int i; |
69 | struct viewport *vp; | 68 | bool parent_used = (*list->parent != NULL); |
70 | FOR_NB_SCREENS(i) | 69 | if (!parent_used) |
71 | { | 70 | { |
72 | vp = &parent[i]; | 71 | vp = viewport_get_current_vp(); |
73 | if (!list || list->parent[i] == vp) | 72 | FOR_NB_SCREENS(i) |
74 | viewport_set_defaults(vp, i); | 73 | list->parent[i] = &vp[i]; |
75 | } | 74 | } |
76 | #ifdef HAVE_BUTTONBAR | 75 | #ifdef HAVE_BUTTONBAR |
77 | if (list && (list->parent[0] == &parent[0]) && global_settings.buttonbar) | 76 | if (list && !parent_used[SCREEN_MAIN] && global_settings.buttonbar) |
78 | list->parent[0]->height -= BUTTONBAR_HEIGHT; | 77 | list->parent[0]->height -= BUTTONBAR_HEIGHT; |
79 | #endif | 78 | #endif |
80 | force_list_reinit = false; | 79 | } |
80 | #else | ||
81 | #define list_init_viewports(a) | ||
82 | #endif | ||
83 | |||
84 | #ifdef HAVE_LCD_BITMAP | ||
85 | bool list_display_title(struct gui_synclist *list, enum screen_type screen) | ||
86 | { | ||
87 | return list->title != NULL && | ||
88 | viewport_get_nb_lines(list->parent[screen])>2; | ||
81 | } | 89 | } |
82 | #else | 90 | #else |
83 | static struct viewport parent[NB_SCREENS] = | 91 | static struct viewport parent[NB_SCREENS] = |
@@ -90,20 +98,6 @@ static struct viewport parent[NB_SCREENS] = | |||
90 | .height = LCD_HEIGHT | 98 | .height = LCD_HEIGHT |
91 | }, | 99 | }, |
92 | }; | 100 | }; |
93 | void list_init_viewports(struct gui_synclist *list) | ||
94 | { | ||
95 | (void)list; | ||
96 | force_list_reinit = false; | ||
97 | } | ||
98 | #endif | ||
99 | |||
100 | #ifdef HAVE_LCD_BITMAP | ||
101 | bool list_display_title(struct gui_synclist *list, enum screen_type screen) | ||
102 | { | ||
103 | return list->title != NULL && | ||
104 | viewport_get_nb_lines(list->parent[screen])>2; | ||
105 | } | ||
106 | #else | ||
107 | #define list_display_title(l, i) false | 101 | #define list_display_title(l, i) false |
108 | #endif | 102 | #endif |
109 | 103 | ||
@@ -141,9 +135,12 @@ void gui_synclist_init(struct gui_synclist * gui_list, | |||
141 | if (list_parent) | 135 | if (list_parent) |
142 | gui_list->parent[i] = &list_parent[i]; | 136 | gui_list->parent[i] = &list_parent[i]; |
143 | else | 137 | else |
144 | { | 138 | gui_list->parent[i] = |
145 | gui_list->parent[i] = &parent[i]; | 139 | #ifdef HAVE_LCD_BITMAP |
146 | } | 140 | NULL; |
141 | #else | ||
142 | &parent[i]; | ||
143 | #endif | ||
147 | } | 144 | } |
148 | list_init_viewports(gui_list); | 145 | list_init_viewports(gui_list); |
149 | gui_list->limit_scroll = false; | 146 | gui_list->limit_scroll = false; |
@@ -162,7 +159,6 @@ void gui_synclist_init(struct gui_synclist * gui_list, | |||
162 | gui_list->title_color = -1; | 159 | gui_list->title_color = -1; |
163 | gui_list->callback_get_item_color = NULL; | 160 | gui_list->callback_get_item_color = NULL; |
164 | #endif | 161 | #endif |
165 | force_list_reinit = true; | ||
166 | } | 162 | } |
167 | 163 | ||
168 | /* this toggles the selection bar or cursor */ | 164 | /* this toggles the selection bar or cursor */ |
@@ -218,7 +214,7 @@ void gui_synclist_draw(struct gui_synclist *gui_list) | |||
218 | #ifdef HAVE_BUTTONBAR | 214 | #ifdef HAVE_BUTTONBAR |
219 | static bool last_buttonbar = false; | 215 | static bool last_buttonbar = false; |
220 | #endif | 216 | #endif |
221 | if (force_list_reinit || | 217 | if ( |
222 | #ifdef HAVE_BUTTONBAR | 218 | #ifdef HAVE_BUTTONBAR |
223 | last_buttonbar != screens[SCREEN_MAIN].has_buttonbar || | 219 | last_buttonbar != screens[SCREEN_MAIN].has_buttonbar || |
224 | #endif | 220 | #endif |
@@ -436,7 +432,6 @@ void gui_synclist_set_title(struct gui_synclist * gui_list, | |||
436 | } else { | 432 | } else { |
437 | gui_list->title_width = 0; | 433 | gui_list->title_width = 0; |
438 | } | 434 | } |
439 | force_list_reinit = true; | ||
440 | } | 435 | } |
441 | 436 | ||
442 | 437 | ||
diff --git a/apps/gui/list.h b/apps/gui/list.h index 50aaebe93a..23997e8a65 100644 --- a/apps/gui/list.h +++ b/apps/gui/list.h | |||
@@ -139,8 +139,6 @@ extern void gui_list_screen_scroll_step(int ofs); | |||
139 | extern void gui_list_screen_scroll_out_of_view(bool enable); | 139 | extern void gui_list_screen_scroll_out_of_view(bool enable); |
140 | #endif /* HAVE_LCD_BITMAP */ | 140 | #endif /* HAVE_LCD_BITMAP */ |
141 | 141 | ||
142 | void list_init_viewports(struct gui_synclist * lists); | ||
143 | |||
144 | extern void gui_synclist_init( | 142 | extern void gui_synclist_init( |
145 | struct gui_synclist * lists, | 143 | struct gui_synclist * lists, |
146 | list_get_name callback_get_item_name, | 144 | list_get_name callback_get_item_name, |
diff --git a/apps/gui/statusbar.c b/apps/gui/statusbar.c index 5e215090f5..024ade330f 100644 --- a/apps/gui/statusbar.c +++ b/apps/gui/statusbar.c | |||
@@ -263,7 +263,7 @@ void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw) | |||
263 | memcmp(&(bar->info), &(bar->lastinfo), sizeof(struct status_info))) | 263 | memcmp(&(bar->info), &(bar->lastinfo), sizeof(struct status_info))) |
264 | { | 264 | { |
265 | struct viewport vp; | 265 | struct viewport vp; |
266 | viewport_set_defaults(&vp, display->screen_type); | 266 | viewport_set_fullscreen(&vp, display->screen_type); |
267 | vp.height = STATUSBAR_HEIGHT; | 267 | vp.height = STATUSBAR_HEIGHT; |
268 | vp.x = STATUSBAR_X_POS; | 268 | vp.x = STATUSBAR_X_POS; |
269 | if (statusbar_position(display->screen_type) != STATUSBAR_BOTTOM) | 269 | if (statusbar_position(display->screen_type) != STATUSBAR_BOTTOM) |
diff --git a/apps/gui/viewport.c b/apps/gui/viewport.c index ef527d90cc..bb4c291cc0 100644 --- a/apps/gui/viewport.c +++ b/apps/gui/viewport.c | |||
@@ -56,6 +56,22 @@ | |||
56 | 56 | ||
57 | static int statusbar_enabled = 0; | 57 | static int statusbar_enabled = 0; |
58 | 58 | ||
59 | #ifdef HAVE_LCD_BITMAP | ||
60 | |||
61 | static struct { | ||
62 | struct viewport* vp; | ||
63 | int active; | ||
64 | } ui_vp_info; | ||
65 | |||
66 | static struct viewport custom_vp[NB_SCREENS]; | ||
67 | |||
68 | /* callbacks for GUI_EVENT_* events */ | ||
69 | static void viewportmanager_ui_vp_changed(void *param); | ||
70 | static void statusbar_toggled(void* param); | ||
71 | static int viewport_init_ui_vp(void); | ||
72 | #endif | ||
73 | static void viewportmanager_redraw(void* data); | ||
74 | |||
59 | int viewport_get_nb_lines(struct viewport *vp) | 75 | int viewport_get_nb_lines(struct viewport *vp) |
60 | { | 76 | { |
61 | #ifdef HAVE_LCD_BITMAP | 77 | #ifdef HAVE_LCD_BITMAP |
@@ -78,9 +94,9 @@ static bool showing_bars(enum screen_type screen) | |||
78 | #endif | 94 | #endif |
79 | } | 95 | } |
80 | return false; | 96 | return false; |
81 | } | 97 | } |
82 | 98 | ||
83 | void viewport_set_defaults(struct viewport *vp, enum screen_type screen) | 99 | void viewport_set_fullscreen(struct viewport *vp, enum screen_type screen) |
84 | { | 100 | { |
85 | vp->x = 0; | 101 | vp->x = 0; |
86 | vp->width = screens[screen].lcdwidth; | 102 | vp->width = screens[screen].lcdwidth; |
@@ -120,6 +136,30 @@ void viewport_set_defaults(struct viewport *vp, enum screen_type screen) | |||
120 | #endif | 136 | #endif |
121 | } | 137 | } |
122 | 138 | ||
139 | void viewport_set_defaults(struct viewport *vp, enum screen_type screen) | ||
140 | { | ||
141 | #ifdef HAVE_LCD_BITMAP | ||
142 | if (ui_vp_info.active) | ||
143 | *vp = custom_vp[screen]; | ||
144 | else | ||
145 | #endif | ||
146 | viewport_set_fullscreen(vp, screen); | ||
147 | } | ||
148 | |||
149 | void viewportmanager_init(void) | ||
150 | { | ||
151 | viewportmanager_set_statusbar(VP_SB_ALLSCREENS); | ||
152 | #ifdef HAVE_LCD_BITMAP | ||
153 | add_event(GUI_EVENT_STATUSBAR_TOGGLE, false, statusbar_toggled); | ||
154 | ui_vp_info.active = viewport_init_ui_vp(); | ||
155 | ui_vp_info.vp = custom_vp; | ||
156 | #endif | ||
157 | } | ||
158 | |||
159 | int viewportmanager_get_statusbar(void) | ||
160 | { | ||
161 | return statusbar_enabled; | ||
162 | } | ||
123 | 163 | ||
124 | int viewportmanager_set_statusbar(int enabled) | 164 | int viewportmanager_set_statusbar(int enabled) |
125 | { | 165 | { |
@@ -133,37 +173,101 @@ int viewportmanager_set_statusbar(int enabled) | |||
133 | if (showing_bars(i)) | 173 | if (showing_bars(i)) |
134 | gui_statusbar_draw(&statusbars.statusbars[i], true); | 174 | gui_statusbar_draw(&statusbars.statusbars[i], true); |
135 | } | 175 | } |
136 | add_event(GUI_EVENT_ACTIONUPDATE, false, viewportmanager_draw_statusbars); | 176 | add_event(GUI_EVENT_ACTIONUPDATE, false, viewportmanager_redraw); |
137 | } | 177 | } |
138 | else | 178 | else |
139 | { | 179 | { |
140 | remove_event(GUI_EVENT_ACTIONUPDATE, viewportmanager_draw_statusbars); | 180 | remove_event(GUI_EVENT_ACTIONUPDATE, viewportmanager_redraw); |
141 | } | 181 | } |
142 | return old; | 182 | return old; |
143 | } | 183 | } |
144 | 184 | ||
145 | void viewportmanager_draw_statusbars(void* data) | 185 | static void viewportmanager_redraw(void* data) |
146 | { | 186 | { |
147 | int i; | 187 | int i; |
148 | 188 | ||
149 | FOR_NB_SCREENS(i) | 189 | FOR_NB_SCREENS(i) |
150 | { | 190 | { |
151 | if (showing_bars(i)) | 191 | if (showing_bars(i)) |
152 | gui_statusbar_draw(&statusbars.statusbars[i], (bool)data); | 192 | gui_statusbar_draw(&statusbars.statusbars[i], NULL != data); |
153 | } | 193 | } |
154 | } | 194 | } |
195 | #ifdef HAVE_LCD_BITMAP | ||
155 | 196 | ||
156 | void viewportmanager_statusbar_changed(void* data) | 197 | static void statusbar_toggled(void* param) |
157 | { | 198 | { |
158 | (void)data; | 199 | (void)param; |
159 | statusbar_enabled = 0; | 200 | /* update vp manager for the new setting and reposition vps |
160 | if (global_settings.statusbar != STATUSBAR_OFF) | 201 | * if necessary */ |
161 | statusbar_enabled = VP_SB_ONSCREEN(SCREEN_MAIN); | 202 | viewportmanager_theme_changed(THEME_STATUSBAR); |
203 | } | ||
204 | |||
205 | void viewportmanager_theme_changed(int which) | ||
206 | { | ||
207 | if (which & THEME_UI_VIEWPORT) | ||
208 | { | ||
209 | /* reset the ui viewport */ | ||
210 | if ((ui_vp_info.active = viewport_init_ui_vp())) | ||
211 | add_event(GUI_EVENT_REFRESH, false, viewportmanager_ui_vp_changed); | ||
212 | else | ||
213 | remove_event(GUI_EVENT_REFRESH, viewportmanager_ui_vp_changed); | ||
214 | /* and point to it */ | ||
215 | ui_vp_info.vp = custom_vp; | ||
216 | } | ||
217 | if (which & THEME_STATUSBAR) | ||
218 | { | ||
219 | statusbar_enabled = 0; | ||
220 | if (global_settings.statusbar != STATUSBAR_OFF) | ||
221 | statusbar_enabled = VP_SB_ONSCREEN(SCREEN_MAIN); | ||
162 | #ifdef HAVE_REMOTE_LCD | 222 | #ifdef HAVE_REMOTE_LCD |
163 | if (global_settings.remote_statusbar != STATUSBAR_OFF) | 223 | if (global_settings.remote_statusbar != STATUSBAR_OFF) |
164 | statusbar_enabled |= VP_SB_ONSCREEN(SCREEN_REMOTE); | 224 | statusbar_enabled |= VP_SB_ONSCREEN(SCREEN_REMOTE); |
165 | #endif | 225 | #endif |
226 | if (statusbar_enabled) | ||
227 | add_event(GUI_EVENT_ACTIONUPDATE, false, viewportmanager_redraw); | ||
228 | else | ||
229 | remove_event(GUI_EVENT_ACTIONUPDATE, viewportmanager_redraw); | ||
230 | |||
231 | /* reposition viewport to fit statusbar, only if not using the ui vp */ | ||
232 | if (!ui_vp_info.active) | ||
233 | { | ||
234 | int i; | ||
235 | FOR_NB_SCREENS(i) | ||
236 | viewport_set_fullscreen(&custom_vp[i], i); | ||
237 | } | ||
238 | } | ||
239 | } | ||
240 | |||
241 | static void viewportmanager_ui_vp_changed(void *param) | ||
242 | { | ||
243 | /* if the user changed the theme, we need to initiate a full redraw */ | ||
244 | int i; | ||
245 | /* cast param to a function */ | ||
246 | void (*draw_func)(void) = ((void(*)(void))param); | ||
247 | /* start with clearing the screen */ | ||
248 | FOR_NB_SCREENS(i) | ||
249 | screens[i].clear_display(); | ||
250 | /* redraw the statusbar if it was enabled */ | ||
166 | viewportmanager_set_statusbar(statusbar_enabled); | 251 | viewportmanager_set_statusbar(statusbar_enabled); |
252 | /* call the passed function which will redraw the content of | ||
253 | * the current screen */ | ||
254 | if (param != NULL) | ||
255 | draw_func(); | ||
256 | FOR_NB_SCREENS(i) | ||
257 | screens[i].update(); | ||
258 | } | ||
259 | |||
260 | void viewport_set_current_vp(struct viewport* vp) | ||
261 | { | ||
262 | if (vp != NULL) | ||
263 | ui_vp_info.vp = vp; | ||
264 | else | ||
265 | ui_vp_info.vp = custom_vp; | ||
266 | } | ||
267 | |||
268 | struct viewport* viewport_get_current_vp(void) | ||
269 | { | ||
270 | return ui_vp_info.vp; | ||
167 | } | 271 | } |
168 | 272 | ||
169 | #ifdef HAVE_LCD_COLOR | 273 | #ifdef HAVE_LCD_COLOR |
@@ -172,7 +276,6 @@ void viewportmanager_statusbar_changed(void* data) | |||
172 | #define ARG_STRING(_depth) "dddddgg" | 276 | #define ARG_STRING(_depth) "dddddgg" |
173 | #endif | 277 | #endif |
174 | 278 | ||
175 | #ifdef HAVE_LCD_BITMAP | ||
176 | const char* viewport_parse_viewport(struct viewport *vp, | 279 | const char* viewport_parse_viewport(struct viewport *vp, |
177 | enum screen_type screen, | 280 | enum screen_type screen, |
178 | const char *bufptr, | 281 | const char *bufptr, |
@@ -213,9 +316,9 @@ const char* viewport_parse_viewport(struct viewport *vp, | |||
213 | return NULL; | 316 | return NULL; |
214 | } | 317 | } |
215 | else | 318 | else |
216 | #undef ARG_STRING | ||
217 | #endif | 319 | #endif |
218 | {} | 320 | {} |
321 | #undef ARG_STRING | ||
219 | 322 | ||
220 | /* X and Y *must* be set */ | 323 | /* X and Y *must* be set */ |
221 | if (!LIST_VALUE_PARSED(set, PL_X) || !LIST_VALUE_PARSED(set, PL_Y)) | 324 | if (!LIST_VALUE_PARSED(set, PL_X) || !LIST_VALUE_PARSED(set, PL_Y)) |
@@ -259,4 +362,40 @@ const char* viewport_parse_viewport(struct viewport *vp, | |||
259 | return ptr; | 362 | return ptr; |
260 | } | 363 | } |
261 | 364 | ||
365 | /* | ||
366 | * (re)parse the UI vp from the settings | ||
367 | * - Returns | ||
368 | * 0 if no UI vp is used | ||
369 | * >0 if it's used at least partly (on multiscreen targets) | ||
370 | * NB_SCREENS if all screens have a UI vp | ||
371 | */ | ||
372 | static int viewport_init_ui_vp(void) | ||
373 | { | ||
374 | int screen, ret = NB_SCREENS; | ||
375 | FOR_NB_SCREENS(screen) | ||
376 | { | ||
377 | #ifdef HAVE_REMOTE_LCD | ||
378 | if ((screen == SCREEN_REMOTE)) | ||
379 | { | ||
380 | if(!(viewport_parse_viewport(&custom_vp[screen], screen, | ||
381 | global_settings.remote_ui_vp_config, ','))) | ||
382 | { | ||
383 | viewport_set_fullscreen(&custom_vp[screen], screen); | ||
384 | ret--; | ||
385 | } | ||
386 | } | ||
387 | else | ||
388 | #endif | ||
389 | { | ||
390 | if (!(viewport_parse_viewport(&custom_vp[screen], screen, | ||
391 | global_settings.ui_vp_config, ','))) | ||
392 | { | ||
393 | viewport_set_fullscreen(&custom_vp[screen], screen); | ||
394 | ret--; | ||
395 | } | ||
396 | } | ||
397 | } | ||
398 | return ret; | ||
399 | } | ||
400 | |||
262 | #endif /* HAVE_LCD_BITMAP */ | 401 | #endif /* HAVE_LCD_BITMAP */ |
diff --git a/apps/gui/viewport.h b/apps/gui/viewport.h index 6c3fb92998..2ed138b365 100644 --- a/apps/gui/viewport.h +++ b/apps/gui/viewport.h | |||
@@ -34,26 +34,6 @@ int viewport_get_nb_lines(struct viewport *vp); | |||
34 | 34 | ||
35 | void viewport_set_defaults(struct viewport *vp, enum screen_type screen); | 35 | void viewport_set_defaults(struct viewport *vp, enum screen_type screen); |
36 | 36 | ||
37 | /* Parse a viewport definition (vp_def), which looks like: | ||
38 | * | ||
39 | * Screens with depth > 1: | ||
40 | * X|Y|width|height|font|foregorund color|background color | ||
41 | * Screens with depth = 1: | ||
42 | * X|Y|width|height|font | ||
43 | * | ||
44 | * | is a separator and can be specified via the parameter | ||
45 | * | ||
46 | * Returns the pointer to the char after the last character parsed | ||
47 | * if everything went OK or NULL if an error happened (some values | ||
48 | * not specified in the definition) | ||
49 | */ | ||
50 | #ifdef HAVE_LCD_BITMAP | ||
51 | const char* viewport_parse_viewport(struct viewport *vp, | ||
52 | enum screen_type screen, | ||
53 | const char *vp_def, | ||
54 | const char separator); | ||
55 | #endif | ||
56 | |||
57 | /* Used to specify which screens the statusbar (SB) should be displayed on. | 37 | /* Used to specify which screens the statusbar (SB) should be displayed on. |
58 | * | 38 | * |
59 | * The parameter is a bit OR'ed combination of the following (screen is | 39 | * The parameter is a bit OR'ed combination of the following (screen is |
@@ -74,14 +54,70 @@ const char* viewport_parse_viewport(struct viewport *vp, | |||
74 | * Returns the status before the call. This value can be used to restore the | 54 | * Returns the status before the call. This value can be used to restore the |
75 | * SB "displaying rules". | 55 | * SB "displaying rules". |
76 | */ | 56 | */ |
57 | |||
58 | |||
59 | #define THEME_STATUSBAR (BIT_N(0)) | ||
60 | #define THEME_UI_VIEWPORT (BIT_N(1)) | ||
61 | #define THEME_ALL (~(0u)) | ||
62 | |||
77 | #define VP_SB_HIDE_ALL 0 | 63 | #define VP_SB_HIDE_ALL 0 |
78 | #define VP_SB_ONSCREEN(screen) BIT_N(screen) | 64 | #define VP_SB_ONSCREEN(screen) BIT_N(screen) |
79 | #define VP_SB_IGNORE_SETTING(screen) BIT_N(4+screen) | 65 | #define VP_SB_IGNORE_SETTING(screen) BIT_N(4+screen) |
80 | #define VP_SB_ALLSCREENS (VP_SB_ONSCREEN(0)|VP_SB_ONSCREEN(1)) | 66 | #define VP_SB_ALLSCREENS (VP_SB_ONSCREEN(0)|VP_SB_ONSCREEN(1)) |
67 | |||
68 | /* | ||
69 | * Initialize the viewportmanager, which in turns initializes the UI vp and | ||
70 | * statusbar stuff | ||
71 | */ | ||
72 | void viewportmanager_init(void); | ||
73 | int viewportmanager_get_statusbar(void); | ||
81 | int viewportmanager_set_statusbar(int enabled); | 74 | int viewportmanager_set_statusbar(int enabled); |
82 | 75 | ||
83 | /* callbacks for GUI_EVENT_* events */ | 76 | /* call this when a theme changed */ |
84 | void viewportmanager_draw_statusbars(void*data); | 77 | void viewportmanager_theme_changed(int); |
85 | void viewportmanager_statusbar_changed(void* data); | 78 | |
79 | /* | ||
80 | * Initializes the given viewport with maximum dimensions minus status- and | ||
81 | * buttonbar | ||
82 | */ | ||
83 | void viewport_set_fullscreen(struct viewport *vp, enum screen_type screen); | ||
86 | 84 | ||
85 | #ifdef HAVE_LCD_BITMAP | ||
86 | |||
87 | /* | ||
88 | * Parse a viewport definition (vp_def), which looks like: | ||
89 | * | ||
90 | * Screens with depth > 1: | ||
91 | * X|Y|width|height|font|foregorund color|background color | ||
92 | * Screens with depth = 1: | ||
93 | * X|Y|width|height|font | ||
94 | * | ||
95 | * | is a separator and can be specified via the parameter | ||
96 | * | ||
97 | * Returns the pointer to the char after the last character parsed | ||
98 | * if everything went OK or NULL if an error happened (some values | ||
99 | * not specified in the definition) | ||
100 | */ | ||
101 | const char* viewport_parse_viewport(struct viewport *vp, | ||
102 | enum screen_type screen, | ||
103 | const char *vp_def, | ||
104 | const char separator); | ||
105 | |||
106 | /* | ||
107 | * Returns a pointer to the current viewport | ||
108 | * - That could be the UI vp, or a viewport passed to do_menu() or the like | ||
109 | */ | ||
110 | struct viewport* viewport_get_current_vp(void); | ||
111 | |||
112 | /* | ||
113 | * Set the UI vp pointer to a different one - NULL to reset to the UI vp | ||
114 | * | ||
115 | * This is needed since the UI viewport needs is kept in RAM. | ||
116 | */ | ||
117 | void viewport_set_current_vp(struct viewport* vp); | ||
118 | |||
119 | #else /* HAVE_LCD_CHARCELL */ | ||
120 | #define viewport_set_current_vp(a) | ||
121 | #define viewport_get_current_vp() NULL | ||
122 | #endif | ||
87 | #endif /* __VIEWPORT_H__ */ | 123 | #endif /* __VIEWPORT_H__ */ |
diff --git a/apps/gui/wps.c b/apps/gui/wps.c index b57f06d2b5..055f8d01e6 100644 --- a/apps/gui/wps.c +++ b/apps/gui/wps.c | |||
@@ -565,6 +565,7 @@ static void gwps_leave_wps(void) | |||
565 | /* Play safe and unregister the hook */ | 565 | /* Play safe and unregister the hook */ |
566 | lcd_activation_set_hook(NULL); | 566 | lcd_activation_set_hook(NULL); |
567 | #endif | 567 | #endif |
568 | send_event(GUI_EVENT_REFRESH, NULL); | ||
568 | } | 569 | } |
569 | 570 | ||
570 | void gwps_draw_statusbars(void) | 571 | void gwps_draw_statusbars(void) |