diff options
-rw-r--r-- | apps/gui/quickscreen.c | 46 |
1 files changed, 13 insertions, 33 deletions
diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c index c10e688c3e..1abe2d5992 100644 --- a/apps/gui/quickscreen.c +++ b/apps/gui/quickscreen.c | |||
@@ -149,34 +149,13 @@ static void quickscreen_fix_viewports(struct gui_quickscreen *qs, | |||
149 | vp_icons->height -= CENTER_ICONAREA_SIZE*2/3; | 149 | vp_icons->height -= CENTER_ICONAREA_SIZE*2/3; |
150 | vp_icons->y += CENTER_ICONAREA_SIZE*2/6; | 150 | vp_icons->y += CENTER_ICONAREA_SIZE*2/6; |
151 | } | 151 | } |
152 | } | ||
153 | |||
154 | static void quickscreen_draw_text(const char *s, int item, bool title, | ||
155 | struct screen *display, struct viewport *vp) | ||
156 | { | ||
157 | int nb_lines = viewport_get_nb_lines(vp); | ||
158 | int w, h, line = 0, x = 0; | ||
159 | display->getstringsize(s, &w, &h); | ||
160 | 152 | ||
161 | if (nb_lines > 1 && !title) | 153 | /* text alignment */ |
162 | line = 1; | 154 | vps[QUICKSCREEN_LEFT].flags &= ~VP_FLAG_ALIGNMENT_MASK; /* left-aligned */ |
163 | switch (item) | 155 | vps[QUICKSCREEN_TOP].flags |= VP_FLAG_ALIGN_CENTER; /* centered */ |
164 | { | 156 | vps[QUICKSCREEN_BOTTOM].flags |= VP_FLAG_ALIGN_CENTER; /* centered */ |
165 | case QUICKSCREEN_TOP: | 157 | vps[QUICKSCREEN_RIGHT].flags &= ~VP_FLAG_ALIGNMENT_MASK;/* right aligned*/ |
166 | case QUICKSCREEN_BOTTOM: | 158 | vps[QUICKSCREEN_RIGHT].flags |= VP_FLAG_ALIGN_RIGHT; |
167 | x = (vp->width - w)/2; | ||
168 | break; | ||
169 | case QUICKSCREEN_LEFT: | ||
170 | x = 0; | ||
171 | break; | ||
172 | case QUICKSCREEN_RIGHT: | ||
173 | x = vp->width - w; | ||
174 | break; | ||
175 | } | ||
176 | if (w>vp->width) | ||
177 | display->puts_scroll(0, line, s); | ||
178 | else | ||
179 | display->putsxy(x, line*h, s); | ||
180 | } | 159 | } |
181 | 160 | ||
182 | static void gui_quickscreen_draw(const struct gui_quickscreen *qs, | 161 | static void gui_quickscreen_draw(const struct gui_quickscreen *qs, |
@@ -194,10 +173,11 @@ static void gui_quickscreen_draw(const struct gui_quickscreen *qs, | |||
194 | display->clear_viewport(); | 173 | display->clear_viewport(); |
195 | for (i = 0; i < QUICKSCREEN_ITEM_COUNT; i++) | 174 | for (i = 0; i < QUICKSCREEN_ITEM_COUNT; i++) |
196 | { | 175 | { |
176 | struct viewport *vp = &vps[i]; | ||
197 | if (!qs->items[i]) | 177 | if (!qs->items[i]) |
198 | continue; | 178 | continue; |
199 | display->set_viewport(&vps[i]); | 179 | display->set_viewport(vp); |
200 | display->scroll_stop(&vps[i]); | 180 | display->scroll_stop(vp); |
201 | 181 | ||
202 | title = P2STR(ID2P(qs->items[i]->lang_id)); | 182 | title = P2STR(ID2P(qs->items[i]->lang_id)); |
203 | setting = qs->items[i]->setting; | 183 | setting = qs->items[i]->setting; |
@@ -205,16 +185,16 @@ static void gui_quickscreen_draw(const struct gui_quickscreen *qs, | |||
205 | value = option_get_valuestring((struct settings_list*)qs->items[i], | 185 | value = option_get_valuestring((struct settings_list*)qs->items[i], |
206 | buf, MAX_PATH, temp); | 186 | buf, MAX_PATH, temp); |
207 | 187 | ||
208 | if (vps[i].height < display->getcharheight()*2) | 188 | if (viewport_get_nb_lines(vp) < 2) |
209 | { | 189 | { |
210 | char text[MAX_PATH]; | 190 | char text[MAX_PATH]; |
211 | snprintf(text, MAX_PATH, "%s: %s", title, value); | 191 | snprintf(text, MAX_PATH, "%s: %s", title, value); |
212 | quickscreen_draw_text(text, i, true, display, &vps[i]); | 192 | display->puts_scroll(0, 0, text); |
213 | } | 193 | } |
214 | else | 194 | else |
215 | { | 195 | { |
216 | quickscreen_draw_text(title, i, true, display, &vps[i]); | 196 | display->puts_scroll(0, 0, title); |
217 | quickscreen_draw_text(value, i, false, display, &vps[i]); | 197 | display->puts_scroll(0, 1, value); |
218 | } | 198 | } |
219 | display->update_viewport(); | 199 | display->update_viewport(); |
220 | } | 200 | } |