diff options
Diffstat (limited to 'apps/gui/skin_engine')
-rw-r--r-- | apps/gui/skin_engine/skin_display.c | 13 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 11 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_tokens.h | 1 |
3 files changed, 22 insertions, 3 deletions
diff --git a/apps/gui/skin_engine/skin_display.c b/apps/gui/skin_engine/skin_display.c index d610fe4a4d..316b97523c 100644 --- a/apps/gui/skin_engine/skin_display.c +++ b/apps/gui/skin_engine/skin_display.c | |||
@@ -630,7 +630,8 @@ static bool get_line(struct gui_wps *gwps, | |||
630 | struct skin_subline *subline, | 630 | struct skin_subline *subline, |
631 | struct align_pos *align, | 631 | struct align_pos *align, |
632 | char *linebuf, | 632 | char *linebuf, |
633 | int linebuf_size) | 633 | int linebuf_size, |
634 | unsigned refresh_mode) | ||
634 | { | 635 | { |
635 | struct wps_data *data = gwps->data; | 636 | struct wps_data *data = gwps->data; |
636 | 637 | ||
@@ -639,6 +640,7 @@ static bool get_line(struct gui_wps *gwps, | |||
639 | char *linebuf_end = linebuf + linebuf_size - 1; | 640 | char *linebuf_end = linebuf + linebuf_size - 1; |
640 | bool update = false; | 641 | bool update = false; |
641 | int i; | 642 | int i; |
643 | (void)refresh_mode; /* silence warning on charcell */ | ||
642 | 644 | ||
643 | /* alignment-related variables */ | 645 | /* alignment-related variables */ |
644 | int cur_align; | 646 | int cur_align; |
@@ -676,6 +678,11 @@ static bool get_line(struct gui_wps *gwps, | |||
676 | img->display = subimage; | 678 | img->display = subimage; |
677 | break; | 679 | break; |
678 | } | 680 | } |
681 | case WPS_TOKEN_DRAW_INBUILTBAR: | ||
682 | gui_statusbar_draw(&(statusbars.statusbars[gwps->display->screen_type]), | ||
683 | refresh_mode == WPS_REFRESH_ALL, | ||
684 | data->tokens[i].value.data); | ||
685 | break; | ||
679 | #endif | 686 | #endif |
680 | 687 | ||
681 | case WPS_TOKEN_ALIGN_LEFT: | 688 | case WPS_TOKEN_ALIGN_LEFT: |
@@ -1176,8 +1183,8 @@ static bool skin_redraw(struct gui_wps *gwps, unsigned refresh_mode) | |||
1176 | || new_subline_refresh || hidden_vp) | 1183 | || new_subline_refresh || hidden_vp) |
1177 | { | 1184 | { |
1178 | /* get_line tells us if we need to update the line */ | 1185 | /* get_line tells us if we need to update the line */ |
1179 | update_line = get_line(gwps, subline, | 1186 | update_line = get_line(gwps, subline, &align, |
1180 | &align, linebuf, sizeof(linebuf)); | 1187 | linebuf, sizeof(linebuf), vp_refresh_mode); |
1181 | } | 1188 | } |
1182 | #ifdef HAVE_LCD_BITMAP | 1189 | #ifdef HAVE_LCD_BITMAP |
1183 | /* peakmeter */ | 1190 | /* peakmeter */ |
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index ecfdfaa9e5..b66af75cb5 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c | |||
@@ -154,6 +154,8 @@ static int parse_statusbar_enable(const char *wps_bufptr, | |||
154 | struct wps_token *token, struct wps_data *wps_data); | 154 | struct wps_token *token, struct wps_data *wps_data); |
155 | static int parse_statusbar_disable(const char *wps_bufptr, | 155 | static int parse_statusbar_disable(const char *wps_bufptr, |
156 | struct wps_token *token, struct wps_data *wps_data); | 156 | struct wps_token *token, struct wps_data *wps_data); |
157 | static int parse_statusbar_inbuilt(const char *wps_bufptr, | ||
158 | struct wps_token *token, struct wps_data *wps_data); | ||
157 | static int parse_image_display(const char *wps_bufptr, | 159 | static int parse_image_display(const char *wps_bufptr, |
158 | struct wps_token *token, struct wps_data *wps_data); | 160 | struct wps_token *token, struct wps_data *wps_data); |
159 | static int parse_image_load(const char *wps_bufptr, | 161 | static int parse_image_load(const char *wps_bufptr, |
@@ -349,6 +351,7 @@ static const struct wps_tag all_tags[] = { | |||
349 | #ifdef HAVE_LCD_BITMAP | 351 | #ifdef HAVE_LCD_BITMAP |
350 | { WPS_NO_TOKEN, "we", 0, parse_statusbar_enable }, | 352 | { WPS_NO_TOKEN, "we", 0, parse_statusbar_enable }, |
351 | { WPS_NO_TOKEN, "wd", 0, parse_statusbar_disable }, | 353 | { WPS_NO_TOKEN, "wd", 0, parse_statusbar_disable }, |
354 | { WPS_TOKEN_DRAW_INBUILTBAR, "wi", WPS_REFRESH_DYNAMIC, parse_statusbar_inbuilt }, | ||
352 | 355 | ||
353 | { WPS_NO_TOKEN, "xl", 0, parse_image_load }, | 356 | { WPS_NO_TOKEN, "xl", 0, parse_image_load }, |
354 | 357 | ||
@@ -562,6 +565,14 @@ static int parse_statusbar_disable(const char *wps_bufptr, | |||
562 | return skip_end_of_line(wps_bufptr); | 565 | return skip_end_of_line(wps_bufptr); |
563 | } | 566 | } |
564 | 567 | ||
568 | static int parse_statusbar_inbuilt(const char *wps_bufptr, | ||
569 | struct wps_token *token, struct wps_data *wps_data) | ||
570 | { | ||
571 | (void)wps_data; | ||
572 | token->value.data = (void*)&curr_vp->vp; | ||
573 | return skip_end_of_line(wps_bufptr); | ||
574 | } | ||
575 | |||
565 | static int get_image_id(int c) | 576 | static int get_image_id(int c) |
566 | { | 577 | { |
567 | if(c >= 'a' && c <= 'z') | 578 | if(c >= 'a' && c <= 'z') |
diff --git a/apps/gui/skin_engine/skin_tokens.h b/apps/gui/skin_engine/skin_tokens.h index d0df058cf0..2c6dd6b72a 100644 --- a/apps/gui/skin_engine/skin_tokens.h +++ b/apps/gui/skin_engine/skin_tokens.h | |||
@@ -189,6 +189,7 @@ enum wps_token_type { | |||
189 | 189 | ||
190 | /* buttons */ | 190 | /* buttons */ |
191 | TOKEN_MARKER_MISC, | 191 | TOKEN_MARKER_MISC, |
192 | WPS_TOKEN_DRAW_INBUILTBAR, | ||
192 | WPS_TOKEN_LIST_TITLE_TEXT, | 193 | WPS_TOKEN_LIST_TITLE_TEXT, |
193 | WPS_TOKEN_LIST_TITLE_ICON, | 194 | WPS_TOKEN_LIST_TITLE_ICON, |
194 | WPS_TOKEN_BUTTON_VOLUME, | 195 | WPS_TOKEN_BUTTON_VOLUME, |