summaryrefslogtreecommitdiff
path: root/apps/gui
diff options
context:
space:
mode:
authorNils Wallménius <nils@rockbox.org>2008-05-11 10:28:52 +0000
committerNils Wallménius <nils@rockbox.org>2008-05-11 10:28:52 +0000
commitfc25f3f61be62fdfe1d32f5bf1a52a2a148db6ab (patch)
tree95464dde39fd56c93e970f97c9d53e18c9e9d63f /apps/gui
parentba3cfca6ddd0058ae9ee330e0dbb87feaa5ef5cc (diff)
downloadrockbox-fc25f3f61be62fdfe1d32f5bf1a52a2a148db6ab.tar.gz
rockbox-fc25f3f61be62fdfe1d32f5bf1a52a2a148db6ab.zip
Binsize optimization for targets without lcd remotes, whitespace/long lines police
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17453 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/gui')
-rw-r--r--apps/gui/quickscreen.c86
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)
366bool quick_screen_f3(int button_enter) 383bool 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 {