diff options
Diffstat (limited to 'apps/gui')
-rw-r--r-- | apps/gui/quickscreen.c | 86 |
1 files changed, 53 insertions, 33 deletions
diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c index 5ebf1dc5ed..82550be66a 100644 --- a/apps/gui/quickscreen.c +++ b/apps/gui/quickscreen.c | |||
@@ -52,33 +52,40 @@ static void quickscreen_fix_viewports(struct gui_quickscreen *qs, | |||
52 | struct screen *display, | 52 | struct screen *display, |
53 | struct viewport *parent) | 53 | struct viewport *parent) |
54 | { | 54 | { |
55 | int char_height, i, screen = display->screen_type; | 55 | #ifdef HAVE_REMOTE_LCD |
56 | int screen = display->screen_type; | ||
57 | #else | ||
58 | const int screen = 0; | ||
59 | #endif | ||
60 | |||
61 | int char_height, i; | ||
56 | int left_width, right_width, bottom_lines = 3; | 62 | int left_width, right_width, bottom_lines = 3; |
57 | unsigned char *s; | 63 | unsigned char *s; |
58 | int nb_lines = viewport_get_nb_lines(parent); | 64 | int nb_lines = viewport_get_nb_lines(parent); |
59 | char_height = parent->height/nb_lines; | 65 | char_height = parent->height/nb_lines; |
60 | 66 | ||
61 | vp_icons[screen] = *parent; | 67 | vp_icons[screen] = *parent; |
62 | 68 | ||
63 | vps[screen][QUICKSCREEN_BOTTOM] = *parent; | 69 | vps[screen][QUICKSCREEN_BOTTOM] = *parent; |
64 | if (nb_lines <= MIN_LINES) /* make the bottom item use 1 line */ | 70 | if (nb_lines <= MIN_LINES) /* make the bottom item use 1 line */ |
65 | bottom_lines = 1; | 71 | bottom_lines = 1; |
66 | else | 72 | else |
67 | bottom_lines = 2; | 73 | bottom_lines = 2; |
68 | vps[screen][QUICKSCREEN_BOTTOM].height = bottom_lines*char_height; | 74 | vps[screen][QUICKSCREEN_BOTTOM].height = bottom_lines*char_height; |
69 | vps[screen][QUICKSCREEN_BOTTOM].y = parent->y + parent->height - bottom_lines*char_height; | 75 | vps[screen][QUICKSCREEN_BOTTOM].y = |
76 | parent->y + parent->height - bottom_lines*char_height; | ||
70 | if (nb_lines >= MAX_NEEDED_LINES) | 77 | if (nb_lines >= MAX_NEEDED_LINES) |
71 | { | 78 | { |
72 | vps[screen][QUICKSCREEN_BOTTOM].y -= char_height; | 79 | vps[screen][QUICKSCREEN_BOTTOM].y -= char_height; |
73 | } | 80 | } |
74 | 81 | ||
75 | /* adjust the left/right items widths to fit the screen nicely */ | 82 | /* adjust the left/right items widths to fit the screen nicely */ |
76 | s = P2STR(ID2P(qs->items[QUICKSCREEN_LEFT]->lang_id)); | 83 | s = P2STR(ID2P(qs->items[QUICKSCREEN_LEFT]->lang_id)); |
77 | left_width = display->getstringsize(s, NULL, NULL); | 84 | left_width = display->getstringsize(s, NULL, NULL); |
78 | s = P2STR(ID2P(qs->items[QUICKSCREEN_RIGHT]->lang_id)); | 85 | s = P2STR(ID2P(qs->items[QUICKSCREEN_RIGHT]->lang_id)); |
79 | right_width = display->getstringsize(s, NULL, NULL); | 86 | right_width = display->getstringsize(s, NULL, NULL); |
80 | nb_lines -= bottom_lines; | 87 | nb_lines -= bottom_lines; |
81 | 88 | ||
82 | vps[screen][QUICKSCREEN_LEFT] = *parent; | 89 | vps[screen][QUICKSCREEN_LEFT] = *parent; |
83 | vps[screen][QUICKSCREEN_RIGHT] = *parent; | 90 | vps[screen][QUICKSCREEN_RIGHT] = *parent; |
84 | vps[screen][QUICKSCREEN_LEFT].x = parent->x; | 91 | vps[screen][QUICKSCREEN_LEFT].x = parent->x; |
@@ -92,11 +99,12 @@ static void quickscreen_fix_viewports(struct gui_quickscreen *qs, | |||
92 | i = 3*char_height; | 99 | i = 3*char_height; |
93 | else | 100 | else |
94 | i = nb_lines*char_height; | 101 | i = nb_lines*char_height; |
95 | 102 | ||
96 | vps[screen][QUICKSCREEN_LEFT].height = i; | 103 | vps[screen][QUICKSCREEN_LEFT].height = i; |
97 | vps[screen][QUICKSCREEN_RIGHT].height = i; | 104 | vps[screen][QUICKSCREEN_RIGHT].height = i; |
98 | vp_icons[screen].y = vps[screen][QUICKSCREEN_LEFT].y + (char_height/2); | 105 | vp_icons[screen].y = vps[screen][QUICKSCREEN_LEFT].y + (char_height/2); |
99 | vp_icons[screen].height = vps[screen][QUICKSCREEN_BOTTOM].y - vp_icons[screen].y; | 106 | vp_icons[screen].height = |
107 | vps[screen][QUICKSCREEN_BOTTOM].y - vp_icons[screen].y; | ||
100 | 108 | ||
101 | if (left_width + right_width > display->width - CENTER_MARGIN) /* scrolling needed */ | 109 | if (left_width + right_width > display->width - CENTER_MARGIN) /* scrolling needed */ |
102 | { | 110 | { |
@@ -143,9 +151,9 @@ static void quickscreen_draw_text(char *s, int item, bool title, | |||
143 | struct screen *display, struct viewport *vp) | 151 | struct screen *display, struct viewport *vp) |
144 | { | 152 | { |
145 | int nb_lines = viewport_get_nb_lines(vp); | 153 | int nb_lines = viewport_get_nb_lines(vp); |
146 | int w, h, line = 0, x=0; | 154 | int w, h, line = 0, x = 0; |
147 | display->getstringsize(s, &w, &h); | 155 | display->getstringsize(s, &w, &h); |
148 | 156 | ||
149 | if (nb_lines > 1 && !title) | 157 | if (nb_lines > 1 && !title) |
150 | line = 1; | 158 | line = 1; |
151 | switch (item) | 159 | switch (item) |
@@ -161,7 +169,7 @@ static void quickscreen_draw_text(char *s, int item, bool title, | |||
161 | break; | 169 | break; |
162 | } | 170 | } |
163 | if (w>vp->width) | 171 | if (w>vp->width) |
164 | display->puts_scroll(0,line,s); | 172 | display->puts_scroll(0, line, s); |
165 | else | 173 | else |
166 | display->putsxy(x, line*h, s); | 174 | display->putsxy(x, line*h, s); |
167 | } | 175 | } |
@@ -170,6 +178,12 @@ static void gui_quickscreen_draw(struct gui_quickscreen *qs, | |||
170 | struct screen *display, | 178 | struct screen *display, |
171 | struct viewport *parent) | 179 | struct viewport *parent) |
172 | { | 180 | { |
181 | #ifdef HAVE_REMOTE_LCD | ||
182 | int screen = display->screen_type; | ||
183 | #else | ||
184 | const int screen = 0; | ||
185 | #endif | ||
186 | |||
173 | int i; | 187 | int i; |
174 | char buf[MAX_PATH]; | 188 | char buf[MAX_PATH]; |
175 | unsigned char *title, *value; | 189 | unsigned char *title, *value; |
@@ -179,43 +193,43 @@ static void gui_quickscreen_draw(struct gui_quickscreen *qs, | |||
179 | display->clear_viewport(); | 193 | display->clear_viewport(); |
180 | for (i=0; i<QUICKSCREEN_ITEM_COUNT; i++) | 194 | for (i=0; i<QUICKSCREEN_ITEM_COUNT; i++) |
181 | { | 195 | { |
182 | |||
183 | if (!qs->items[i]) | 196 | if (!qs->items[i]) |
184 | continue; | 197 | continue; |
185 | display->set_viewport(&vps[display->screen_type][i]); | 198 | display->set_viewport(&vps[screen][i]); |
186 | display->scroll_stop(&vps[display->screen_type][i]); | 199 | display->scroll_stop(&vps[screen][i]); |
187 | 200 | ||
188 | title = P2STR(ID2P(qs->items[i]->lang_id)); | 201 | title = P2STR(ID2P(qs->items[i]->lang_id)); |
189 | setting = qs->items[i]->setting; | 202 | setting = qs->items[i]->setting; |
190 | if ((qs->items[i]->flags & F_BOOL_SETTING) == F_BOOL_SETTING) | 203 | if ((qs->items[i]->flags & F_BOOL_SETTING) == F_BOOL_SETTING) |
191 | temp = *(bool*)setting?1:0; | 204 | temp = *(bool*)setting?1:0; |
192 | else | 205 | else |
193 | temp = *(int*)setting; | 206 | temp = *(int*)setting; |
194 | value = option_get_valuestring((struct settings_list*)qs->items[i], buf, MAX_PATH, temp); | 207 | value = option_get_valuestring((struct settings_list*)qs->items[i], |
195 | 208 | buf, MAX_PATH, temp); | |
196 | if (vps[display->screen_type][i].height < display->char_height*2) | 209 | |
210 | if (vps[screen][i].height < display->char_height*2) | ||
197 | { | 211 | { |
198 | char text[MAX_PATH]; | 212 | char text[MAX_PATH]; |
199 | snprintf(text, MAX_PATH, "%s: %s", title, value); | 213 | snprintf(text, MAX_PATH, "%s: %s", title, value); |
200 | quickscreen_draw_text(text, i, true, display, &vps[display->screen_type][i]); | 214 | quickscreen_draw_text(text, i, true, display, &vps[screen][i]); |
201 | } | 215 | } |
202 | else | 216 | else |
203 | { | 217 | { |
204 | quickscreen_draw_text(title, i, true, display, &vps[display->screen_type][i]); | 218 | quickscreen_draw_text(title, i, true, display, &vps[screen][i]); |
205 | quickscreen_draw_text(value, i, false, display, &vps[display->screen_type][i]); | 219 | quickscreen_draw_text(value, i, false, display, &vps[screen][i]); |
206 | } | 220 | } |
207 | display->update_viewport(); | 221 | display->update_viewport(); |
208 | } | 222 | } |
209 | /* draw the icons */ | 223 | /* draw the icons */ |
210 | display->set_viewport(&vp_icons[display->screen_type]); | 224 | display->set_viewport(&vp_icons[screen]); |
211 | display->mono_bitmap(bitmap_icons_7x8[Icon_FastForward], | 225 | display->mono_bitmap(bitmap_icons_7x8[Icon_FastForward], |
212 | vp_icons[display->screen_type].width - 8, 0, 7, 8); | 226 | vp_icons[screen].width - 8, 0, 7, 8); |
213 | display->mono_bitmap(bitmap_icons_7x8[Icon_FastBackward], 0, 0, 7, 8); | 227 | display->mono_bitmap(bitmap_icons_7x8[Icon_FastBackward], 0, 0, 7, 8); |
214 | display->mono_bitmap(bitmap_icons_7x8[Icon_DownArrow], | 228 | display->mono_bitmap(bitmap_icons_7x8[Icon_DownArrow], |
215 | (vp_icons[display->screen_type].width/2) - 4, | 229 | (vp_icons[screen].width/2) - 4, |
216 | vp_icons[display->screen_type].height - 7, 7, 8); | 230 | vp_icons[screen].height - 7, 7, 8); |
217 | display->update_viewport(); | 231 | display->update_viewport(); |
218 | 232 | ||
219 | display->set_viewport(parent); | 233 | display->set_viewport(parent); |
220 | display->update_viewport(); | 234 | display->update_viewport(); |
221 | display->set_viewport(NULL); | 235 | display->set_viewport(NULL); |
@@ -282,7 +296,7 @@ bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter) | |||
282 | * - a second press on the button that made us enter | 296 | * - a second press on the button that made us enter |
283 | * - an action taken while pressing the enter button, | 297 | * - an action taken while pressing the enter button, |
284 | * then release the enter button*/ | 298 | * then release the enter button*/ |
285 | bool can_quit=false; | 299 | bool can_quit = false; |
286 | gui_syncstatusbar_draw(&statusbars, true); | 300 | gui_syncstatusbar_draw(&statusbars, true); |
287 | FOR_NB_SCREENS(i) | 301 | FOR_NB_SCREENS(i) |
288 | { | 302 | { |
@@ -333,9 +347,12 @@ bool quick_screen_quick(int button_enter) | |||
333 | struct gui_quickscreen qs; | 347 | struct gui_quickscreen qs; |
334 | bool oldshuffle = global_settings.playlist_shuffle; | 348 | bool oldshuffle = global_settings.playlist_shuffle; |
335 | int oldrepeat = global_settings.repeat_mode; | 349 | int oldrepeat = global_settings.repeat_mode; |
336 | qs.items[QUICKSCREEN_LEFT] = find_setting(&global_settings.playlist_shuffle, NULL); | 350 | qs.items[QUICKSCREEN_LEFT] = |
337 | qs.items[QUICKSCREEN_RIGHT] = find_setting(&global_settings.repeat_mode, NULL); | 351 | find_setting(&global_settings.playlist_shuffle, NULL); |
338 | qs.items[QUICKSCREEN_BOTTOM] = find_setting(&global_settings.dirfilter, NULL); | 352 | qs.items[QUICKSCREEN_RIGHT] = |
353 | find_setting(&global_settings.repeat_mode, NULL); | ||
354 | qs.items[QUICKSCREEN_BOTTOM] = | ||
355 | find_setting(&global_settings.dirfilter, NULL); | ||
339 | qs.callback = NULL; | 356 | qs.callback = NULL; |
340 | if (gui_syncquickscreen_run(&qs, button_enter)) | 357 | if (gui_syncquickscreen_run(&qs, button_enter)) |
341 | { | 358 | { |
@@ -366,9 +383,12 @@ bool quick_screen_quick(int button_enter) | |||
366 | bool quick_screen_f3(int button_enter) | 383 | bool quick_screen_f3(int button_enter) |
367 | { | 384 | { |
368 | struct gui_quickscreen qs; | 385 | struct gui_quickscreen qs; |
369 | qs.items[QUICKSCREEN_LEFT] = find_setting(&global_settings.scrollbar, NULL); | 386 | qs.items[QUICKSCREEN_LEFT] = |
370 | qs.items[QUICKSCREEN_RIGHT] = find_setting(&global_settings.statusbar, NULL); | 387 | find_setting(&global_settings.scrollbar, NULL); |
371 | qs.items[QUICKSCREEN_BOTTOM] = find_setting(&global_settings.flip_display, NULL); | 388 | qs.items[QUICKSCREEN_RIGHT] = |
389 | find_setting(&global_settings.statusbar, NULL); | ||
390 | qs.items[QUICKSCREEN_BOTTOM] = | ||
391 | find_setting(&global_settings.flip_display, NULL); | ||
372 | qs.callback = NULL; | 392 | qs.callback = NULL; |
373 | if (gui_syncquickscreen_run(&qs, button_enter)) | 393 | if (gui_syncquickscreen_run(&qs, button_enter)) |
374 | { | 394 | { |