diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/gui/bitmap/list.c | 13 | ||||
-rw-r--r-- | apps/gui/line.c | 30 | ||||
-rw-r--r-- | apps/gui/line.h | 5 | ||||
-rw-r--r-- | apps/lang/english.lang | 28 | ||||
-rw-r--r-- | apps/menus/theme_menu.c | 17 | ||||
-rw-r--r-- | apps/settings.h | 7 | ||||
-rw-r--r-- | apps/settings_list.c | 11 |
7 files changed, 98 insertions, 13 deletions
diff --git a/apps/gui/bitmap/list.c b/apps/gui/bitmap/list.c index f1def9007d..97eefce9db 100644 --- a/apps/gui/bitmap/list.c +++ b/apps/gui/bitmap/list.c | |||
@@ -106,6 +106,13 @@ static bool draw_title(struct screen *display, struct gui_synclist *list) | |||
106 | line.height = list->line_height[screen]; | 106 | line.height = list->line_height[screen]; |
107 | title_text_vp->height = line.height; | 107 | title_text_vp->height = line.height; |
108 | 108 | ||
109 | #if LCD_DEPTH > 1 | ||
110 | /* XXX: Do we want to support the separator on remote displays? */ | ||
111 | if (display->screen_type == SCREEN_MAIN && global_settings.list_separator_height != 0) | ||
112 | line.separator_height = abs(global_settings.list_separator_height) | ||
113 | + (lcd_get_dpi() > 200 ? 2 : 1); | ||
114 | #endif | ||
115 | |||
109 | #ifdef HAVE_LCD_COLOR | 116 | #ifdef HAVE_LCD_COLOR |
110 | if (list->title_color >= 0) | 117 | if (list->title_color >= 0) |
111 | line.style |= (STYLE_COLORED|list->title_color); | 118 | line.style |= (STYLE_COLORED|list->title_color); |
@@ -154,7 +161,11 @@ void list_draw(struct screen *display, struct gui_synclist *list) | |||
154 | 161 | ||
155 | linedes.height = list->line_height[screen]; | 162 | linedes.height = list->line_height[screen]; |
156 | linedes.nlines = list->selected_size; | 163 | linedes.nlines = list->selected_size; |
157 | 164 | #if LCD_DEPTH > 1 | |
165 | /* XXX: Do we want to support the separator on remote displays? */ | ||
166 | if (display->screen_type == SCREEN_MAIN) | ||
167 | linedes.separator_height = abs(global_settings.list_separator_height); | ||
168 | #endif | ||
158 | start = list_start_item; | 169 | start = list_start_item; |
159 | end = start + nb_lines; | 170 | end = start + nb_lines; |
160 | 171 | ||
diff --git a/apps/gui/line.c b/apps/gui/line.c index 55100f715c..4a51c6e307 100644 --- a/apps/gui/line.c +++ b/apps/gui/line.c | |||
@@ -305,6 +305,28 @@ static void style_line(struct screen *display, | |||
305 | int style = line->style; | 305 | int style = line->style; |
306 | int width = display->getwidth(); | 306 | int width = display->getwidth(); |
307 | int height = line->height == -1 ? display->getcharheight() : line->height; | 307 | int height = line->height == -1 ? display->getcharheight() : line->height; |
308 | int bar_height = height; | ||
309 | |||
310 | /* mask out gradient and colorbar styles for non-color displays */ | ||
311 | if (display->depth < 16 && (style & (STYLE_COLORBAR|STYLE_GRADIENT))) | ||
312 | { | ||
313 | style &= ~(STYLE_COLORBAR|STYLE_GRADIENT); | ||
314 | style |= STYLE_INVERT; | ||
315 | } | ||
316 | |||
317 | if (line->separator_height > 0 && (line->line == line->nlines-1)) | ||
318 | { | ||
319 | int sep_height = MIN(line->separator_height, height); | ||
320 | display->set_drawmode(DRMODE_FG); | ||
321 | #if LCD_DEPTH > 1 | ||
322 | display->set_foreground(global_settings.list_separator_color); | ||
323 | #endif | ||
324 | display->fillrect(x, y + height - sep_height, width, sep_height); | ||
325 | bar_height -= sep_height; | ||
326 | #if LCD_DEPTH > 1 | ||
327 | display->set_foreground(global_settings.fg_color); | ||
328 | #endif | ||
329 | } | ||
308 | 330 | ||
309 | /* mask out gradient and colorbar styles for non-color displays */ | 331 | /* mask out gradient and colorbar styles for non-color displays */ |
310 | if (display->depth < 16) | 332 | if (display->depth < 16) |
@@ -322,7 +344,7 @@ static void style_line(struct screen *display, | |||
322 | #ifdef HAVE_LCD_COLOR | 344 | #ifdef HAVE_LCD_COLOR |
323 | case STYLE_GRADIENT: | 345 | case STYLE_GRADIENT: |
324 | display->set_drawmode(DRMODE_FG); | 346 | display->set_drawmode(DRMODE_FG); |
325 | display->gradient_fillrect_part(x, y, width, height, | 347 | display->gradient_fillrect_part(x, y, width, bar_height, |
326 | line->line_color, | 348 | line->line_color, |
327 | line->line_end_color, | 349 | line->line_end_color, |
328 | height*line->nlines, | 350 | height*line->nlines, |
@@ -331,16 +353,16 @@ static void style_line(struct screen *display, | |||
331 | case STYLE_COLORBAR: | 353 | case STYLE_COLORBAR: |
332 | display->set_drawmode(DRMODE_FG); | 354 | display->set_drawmode(DRMODE_FG); |
333 | display->set_foreground(line->line_color); | 355 | display->set_foreground(line->line_color); |
334 | display->fillrect(x, y, width - x, height); | 356 | display->fillrect(x, y, width - x, bar_height); |
335 | break; | 357 | break; |
336 | #endif | 358 | #endif |
337 | case STYLE_INVERT: | 359 | case STYLE_INVERT: |
338 | display->set_drawmode(DRMODE_FG); | 360 | display->set_drawmode(DRMODE_FG); |
339 | display->fillrect(x, y, width - x, height); | 361 | display->fillrect(x, y, width - x, bar_height); |
340 | break; | 362 | break; |
341 | case STYLE_DEFAULT: default: | 363 | case STYLE_DEFAULT: default: |
342 | display->set_drawmode(DRMODE_BG | DRMODE_INVERSEVID); | 364 | display->set_drawmode(DRMODE_BG | DRMODE_INVERSEVID); |
343 | display->fillrect(x, y, width - x, height); | 365 | display->fillrect(x, y, width - x, bar_height); |
344 | break; | 366 | break; |
345 | case STYLE_NONE: | 367 | case STYLE_NONE: |
346 | break; | 368 | break; |
diff --git a/apps/gui/line.h b/apps/gui/line.h index 9a0769de35..c14f04d9a2 100644 --- a/apps/gui/line.h +++ b/apps/gui/line.h | |||
@@ -74,11 +74,14 @@ struct line_desc { | |||
74 | enum line_styles style; | 74 | enum line_styles style; |
75 | /* whether the line can scroll */ | 75 | /* whether the line can scroll */ |
76 | bool scroll; | 76 | bool scroll; |
77 | /* height of the line separator (in pixels). 0 to disable drawing | ||
78 | * of the separator */ | ||
79 | int8_t separator_height; | ||
77 | }; | 80 | }; |
78 | 81 | ||
79 | /* default initializer, can be used for static initialitation also. | 82 | /* default initializer, can be used for static initialitation also. |
80 | * This initializer will result in single lines without style that don't scroll */ | 83 | * This initializer will result in single lines without style that don't scroll */ |
81 | #define LINE_DESC_DEFINIT { .style = STYLE_DEFAULT, .height = -1, .line = 0, .nlines = 1, .scroll = false } | 84 | #define LINE_DESC_DEFINIT { .style = STYLE_DEFAULT, .height = -1, .separator_height = 0, .line = 0, .nlines = 1, .scroll = false } |
82 | 85 | ||
83 | /** | 86 | /** |
84 | * Print a line at a given pixel postion, using decoration information from | 87 | * Print a line at a given pixel postion, using decoration information from |
diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 0778ab74d3..9914b160f1 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang | |||
@@ -12926,6 +12926,34 @@ | |||
12926 | </voice> | 12926 | </voice> |
12927 | </phrase> | 12927 | </phrase> |
12928 | <phrase> | 12928 | <phrase> |
12929 | id: LANG_LIST_SEPARATOR | ||
12930 | desc: line between lines in lists | ||
12931 | user: core | ||
12932 | <source> | ||
12933 | *: "Line Separator" | ||
12934 | </source> | ||
12935 | <dest> | ||
12936 | *: "Line Separator" | ||
12937 | </dest> | ||
12938 | <voice> | ||
12939 | *: "Line Separator" | ||
12940 | </voice> | ||
12941 | </phrase> | ||
12942 | <phrase> | ||
12943 | id: LANG_LIST_SEPARATOR_COLOR | ||
12944 | desc: line between lines in lists | ||
12945 | user: core | ||
12946 | <source> | ||
12947 | *: "Line Separator Colour" | ||
12948 | </source> | ||
12949 | <dest> | ||
12950 | *: "Line Separator Colour" | ||
12951 | </dest> | ||
12952 | <voice> | ||
12953 | *: "Line Separator Colour" | ||
12954 | </voice> | ||
12955 | </phrase> | ||
12956 | <phrase> | ||
12929 | id: LANG_SHORTCUTS | 12957 | id: LANG_SHORTCUTS |
12930 | desc: Title in the shortcuts menu | 12958 | desc: Title in the shortcuts menu |
12931 | user: core | 12959 | user: core |
diff --git a/apps/menus/theme_menu.c b/apps/menus/theme_menu.c index 93511f8197..f64ded1615 100644 --- a/apps/menus/theme_menu.c +++ b/apps/menus/theme_menu.c | |||
@@ -68,6 +68,7 @@ enum Colors { | |||
68 | COLOR_LSS, | 68 | COLOR_LSS, |
69 | COLOR_LSE, | 69 | COLOR_LSE, |
70 | COLOR_LST, | 70 | COLOR_LST, |
71 | COLOR_SEP, | ||
71 | COLOR_COUNT | 72 | COLOR_COUNT |
72 | }; | 73 | }; |
73 | static struct colour_info | 74 | static struct colour_info |
@@ -80,6 +81,7 @@ static struct colour_info | |||
80 | [COLOR_LSS] = {&global_settings.lss_color, LANG_SELECTOR_START_COLOR}, | 81 | [COLOR_LSS] = {&global_settings.lss_color, LANG_SELECTOR_START_COLOR}, |
81 | [COLOR_LSE] = {&global_settings.lse_color, LANG_SELECTOR_END_COLOR}, | 82 | [COLOR_LSE] = {&global_settings.lse_color, LANG_SELECTOR_END_COLOR}, |
82 | [COLOR_LST] = {&global_settings.lst_color, LANG_SELECTOR_TEXT_COLOR}, | 83 | [COLOR_LST] = {&global_settings.lst_color, LANG_SELECTOR_TEXT_COLOR}, |
84 | [COLOR_SEP] = {&global_settings.list_separator_color, LANG_LIST_SEPARATOR_COLOR}, | ||
83 | }; | 85 | }; |
84 | 86 | ||
85 | /** | 87 | /** |
@@ -91,7 +93,7 @@ static int set_color_func(void* color) | |||
91 | /* Don't let foreground be set the same as background and vice-versa */ | 93 | /* Don't let foreground be set the same as background and vice-versa */ |
92 | if (c == COLOR_BG) | 94 | if (c == COLOR_BG) |
93 | banned_color = *colors[COLOR_FG].setting; | 95 | banned_color = *colors[COLOR_FG].setting; |
94 | else if (c == COLOR_FG) | 96 | else if (c == COLOR_FG || c == COLOR_SEP) |
95 | banned_color = *colors[COLOR_BG].setting; | 97 | banned_color = *colors[COLOR_BG].setting; |
96 | 98 | ||
97 | old_color = *colors[c].setting; | 99 | old_color = *colors[c].setting; |
@@ -113,6 +115,7 @@ static int reset_color(void) | |||
113 | global_settings.lss_color = LCD_DEFAULT_LS; | 115 | global_settings.lss_color = LCD_DEFAULT_LS; |
114 | global_settings.lse_color = LCD_DEFAULT_BG; | 116 | global_settings.lse_color = LCD_DEFAULT_BG; |
115 | global_settings.lst_color = LCD_DEFAULT_FG; | 117 | global_settings.lst_color = LCD_DEFAULT_FG; |
118 | global_settings.list_separator_color = LCD_DARKGRAY; | ||
116 | 119 | ||
117 | settings_save(); | 120 | settings_save(); |
118 | settings_apply(false); | 121 | settings_apply(false); |
@@ -129,6 +132,8 @@ MENUITEM_FUNCTION(set_lse_col, MENU_FUNC_USEPARAM, ID2P(LANG_SELECTOR_END_COLOR) | |||
129 | set_color_func, (void*)COLOR_LSE, NULL, Icon_NOICON); | 132 | set_color_func, (void*)COLOR_LSE, NULL, Icon_NOICON); |
130 | MENUITEM_FUNCTION(set_lst_col, MENU_FUNC_USEPARAM, ID2P(LANG_SELECTOR_TEXT_COLOR), | 133 | MENUITEM_FUNCTION(set_lst_col, MENU_FUNC_USEPARAM, ID2P(LANG_SELECTOR_TEXT_COLOR), |
131 | set_color_func, (void*)COLOR_LST, NULL, Icon_NOICON); | 134 | set_color_func, (void*)COLOR_LST, NULL, Icon_NOICON); |
135 | MENUITEM_FUNCTION(set_sep_col, MENU_FUNC_USEPARAM, ID2P(LANG_LIST_SEPARATOR_COLOR), | ||
136 | set_color_func, (void*)COLOR_SEP, NULL, Icon_NOICON); | ||
132 | MENUITEM_FUNCTION(reset_colors, 0, ID2P(LANG_RESET_COLORS), | 137 | MENUITEM_FUNCTION(reset_colors, 0, ID2P(LANG_RESET_COLORS), |
133 | reset_color, NULL, NULL, Icon_NOICON); | 138 | reset_color, NULL, NULL, Icon_NOICON); |
134 | 139 | ||
@@ -140,7 +145,7 @@ MAKE_MENU(lss_settings, ID2P(LANG_SELECTOR_COLOR_MENU), | |||
140 | /* now the actual menu */ | 145 | /* now the actual menu */ |
141 | MAKE_MENU(colors_settings, ID2P(LANG_COLORS_MENU), | 146 | MAKE_MENU(colors_settings, ID2P(LANG_COLORS_MENU), |
142 | NULL, Icon_Display_menu, | 147 | NULL, Icon_Display_menu, |
143 | &lss_settings, | 148 | &lss_settings, &set_sep_col, |
144 | &set_bg_col, &set_fg_col, &reset_colors | 149 | &set_bg_col, &set_fg_col, &reset_colors |
145 | ); | 150 | ); |
146 | 151 | ||
@@ -388,6 +393,9 @@ MENUITEM_FUNCTION(browse_themes, MENU_FUNC_USEPARAM, | |||
388 | #ifdef HAVE_LCD_BITMAP | 393 | #ifdef HAVE_LCD_BITMAP |
389 | MENUITEM_SETTING(cursor_style, &global_settings.cursor_style, NULL); | 394 | MENUITEM_SETTING(cursor_style, &global_settings.cursor_style, NULL); |
390 | #endif | 395 | #endif |
396 | #if LCD_DEPTH > 1 | ||
397 | MENUITEM_SETTING(sep_menu, &global_settings.list_separator_height, NULL); | ||
398 | #endif | ||
391 | 399 | ||
392 | MAKE_MENU(theme_menu, ID2P(LANG_THEME_MENU), | 400 | MAKE_MENU(theme_menu, ID2P(LANG_THEME_MENU), |
393 | NULL, Icon_Wps, | 401 | NULL, Icon_Wps, |
@@ -418,8 +426,11 @@ MAKE_MENU(theme_menu, ID2P(LANG_THEME_MENU), | |||
418 | #ifdef HAVE_LCD_BITMAP | 426 | #ifdef HAVE_LCD_BITMAP |
419 | &bars_menu, | 427 | &bars_menu, |
420 | &cursor_style, | 428 | &cursor_style, |
429 | #if LCD_DEPTH > 1 | ||
430 | &sep_menu, | ||
421 | #endif | 431 | #endif |
422 | #ifdef HAVE_LCD_COLOR | 432 | #ifdef HAVE_LCD_COLOR |
423 | &colors_settings, | 433 | &colors_settings, |
424 | #endif | 434 | #endif |
425 | ); | 435 | #endif /* HAVE_LCD_BITMAP */ |
436 | ); | ||
diff --git a/apps/settings.h b/apps/settings.h index 62ae038385..5b876d3e67 100644 --- a/apps/settings.h +++ b/apps/settings.h | |||
@@ -531,12 +531,15 @@ struct user_settings | |||
531 | #ifdef HAVE_LCD_BITMAP | 531 | #ifdef HAVE_LCD_BITMAP |
532 | int scrollbar; /* SCROLLBAR_* enum values */ | 532 | int scrollbar; /* SCROLLBAR_* enum values */ |
533 | int scrollbar_width; | 533 | int scrollbar_width; |
534 | #endif | ||
535 | 534 | ||
536 | #ifdef HAVE_TOUCHSCREEN | 535 | #ifdef HAVE_TOUCHSCREEN |
537 | int list_line_padding; | 536 | int list_line_padding; |
538 | #endif | 537 | #endif |
539 | 538 | #if LCD_DEPTH > 1 | |
539 | int list_separator_height; /* -1=auto (== 1 currently), 0=disabled, X=height in pixels */ | ||
540 | int list_separator_color; | ||
541 | #endif | ||
542 | #endif | ||
540 | /* goto current song when exiting WPS */ | 543 | /* goto current song when exiting WPS */ |
541 | bool browse_current; /* 1=goto current song, | 544 | bool browse_current; /* 1=goto current song, |
542 | 0=goto previous location */ | 545 | 0=goto previous location */ |
diff --git a/apps/settings_list.c b/apps/settings_list.c index 9b1ec4427f..681a3ab05b 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c | |||
@@ -282,6 +282,7 @@ static const char graphic_numeric[] = "graphic,numeric"; | |||
282 | #define DEFAULT_THEME_SELECTOR_START LCD_RGBPACK(0xff, 0xeb, 0x9c) | 282 | #define DEFAULT_THEME_SELECTOR_START LCD_RGBPACK(0xff, 0xeb, 0x9c) |
283 | #define DEFAULT_THEME_SELECTOR_END LCD_RGBPACK(0xb5, 0x8e, 0x00) | 283 | #define DEFAULT_THEME_SELECTOR_END LCD_RGBPACK(0xb5, 0x8e, 0x00) |
284 | #define DEFAULT_THEME_SELECTOR_TEXT LCD_RGBPACK(0x00, 0x00, 0x00) | 284 | #define DEFAULT_THEME_SELECTOR_TEXT LCD_RGBPACK(0x00, 0x00, 0x00) |
285 | #define DEFAULT_THEME_SEPARATOR LCD_RGBPACK(0x80, 0x80, 0x80) | ||
285 | 286 | ||
286 | #define DEFAULT_BACKDROP BACKDROP_DIR "/cabbiev2.bmp" | 287 | #define DEFAULT_BACKDROP BACKDROP_DIR "/cabbiev2.bmp" |
287 | 288 | ||
@@ -323,7 +324,6 @@ static const char graphic_numeric[] = "graphic,numeric"; | |||
323 | #define DEFAULT_TAGCACHE_SCAN_PATHS "/" | 324 | #define DEFAULT_TAGCACHE_SCAN_PATHS "/" |
324 | #endif | 325 | #endif |
325 | 326 | ||
326 | #ifdef HAVE_TOUCHSCREEN | ||
327 | 327 | ||
328 | static const char* list_pad_formatter(char *buffer, size_t buffer_size, | 328 | static const char* list_pad_formatter(char *buffer, size_t buffer_size, |
329 | int val, const char *unit) | 329 | int val, const char *unit) |
@@ -348,7 +348,6 @@ static int32_t list_pad_getlang(int value, int unit) | |||
348 | } | 348 | } |
349 | } | 349 | } |
350 | 350 | ||
351 | #endif /* HAVE_TOUCHSCREEN */ | ||
352 | static const char* formatter_unit_0_is_off(char *buffer, size_t buffer_size, | 351 | static const char* formatter_unit_0_is_off(char *buffer, size_t buffer_size, |
353 | int val, const char *unit) | 352 | int val, const char *unit) |
354 | { | 353 | { |
@@ -910,6 +909,14 @@ const struct settings_list settings[] = { | |||
910 | list_pad_getlang, NULL, 16, | 909 | list_pad_getlang, NULL, 16, |
911 | -1,0,2,4,6,8,10,12,16,20,24,28,32,38,44,50), | 910 | -1,0,2,4,6,8,10,12,16,20,24,28,32,38,44,50), |
912 | #endif | 911 | #endif |
912 | #if LCD_DEPTH > 1 | ||
913 | TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, list_separator_height, LANG_LIST_SEPARATOR, | ||
914 | 0, "list separator height", "auto,off", UNIT_PIXEL, | ||
915 | list_pad_formatter, list_pad_getlang, NULL, 15, | ||
916 | -1,0,1,2,3,4,5,7,9,11,13,16,20,25,30), | ||
917 | {F_T_INT|F_RGB|F_THEMESETTING ,&global_settings.list_separator_color,-1, | ||
918 | INT(DEFAULT_THEME_SEPARATOR),"list separator color",NULL,UNUSED}, | ||
919 | #endif | ||
913 | #if CONFIG_KEYPAD == RECORDER_PAD | 920 | #if CONFIG_KEYPAD == RECORDER_PAD |
914 | OFFON_SETTING(F_THEMESETTING,buttonbar, LANG_BUTTON_BAR ,true,"buttonbar", NULL), | 921 | OFFON_SETTING(F_THEMESETTING,buttonbar, LANG_BUTTON_BAR ,true,"buttonbar", NULL), |
915 | #endif | 922 | #endif |