summaryrefslogtreecommitdiff
path: root/apps/gui/skin_engine
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/skin_engine')
-rw-r--r--apps/gui/skin_engine/skin_display.c13
-rw-r--r--apps/gui/skin_engine/skin_parser.c11
-rw-r--r--apps/gui/skin_engine/skin_tokens.h1
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);
155static int parse_statusbar_disable(const char *wps_bufptr, 155static 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);
157static int parse_statusbar_inbuilt(const char *wps_bufptr,
158 struct wps_token *token, struct wps_data *wps_data);
157static int parse_image_display(const char *wps_bufptr, 159static 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);
159static int parse_image_load(const char *wps_bufptr, 161static 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
568static 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
565static int get_image_id(int c) 576static 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,