diff options
Diffstat (limited to 'apps/gui/skin_engine')
-rw-r--r-- | apps/gui/skin_engine/skin_display.c | 8 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 27 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_render.c | 1 | ||||
-rw-r--r-- | apps/gui/skin_engine/wps_internals.h | 2 |
4 files changed, 38 insertions, 0 deletions
diff --git a/apps/gui/skin_engine/skin_display.c b/apps/gui/skin_engine/skin_display.c index 08d17a0258..4f491dea24 100644 --- a/apps/gui/skin_engine/skin_display.c +++ b/apps/gui/skin_engine/skin_display.c | |||
@@ -44,6 +44,7 @@ | |||
44 | #include "audio.h" | 44 | #include "audio.h" |
45 | #include "tagcache.h" | 45 | #include "tagcache.h" |
46 | #include "list.h" | 46 | #include "list.h" |
47 | #include "option_select.h" | ||
47 | 48 | ||
48 | #ifdef HAVE_LCD_BITMAP | 49 | #ifdef HAVE_LCD_BITMAP |
49 | #include "peakmeter.h" | 50 | #include "peakmeter.h" |
@@ -145,6 +146,13 @@ void draw_progressbar(struct gui_wps *gwps, int line, struct progressbar *pb) | |||
145 | end = val - min; | 146 | end = val - min; |
146 | length = max - min; | 147 | length = max - min; |
147 | } | 148 | } |
149 | else if (pb->type == SKIN_TOKEN_SETTINGBAR) | ||
150 | { | ||
151 | int val, count; | ||
152 | get_setting_info_for_bar(pb->setting_id, &count, &val); | ||
153 | length = count - 1; | ||
154 | end = val; | ||
155 | } | ||
148 | #if CONFIG_TUNER | 156 | #if CONFIG_TUNER |
149 | else if (in_radio_screen() || (get_radio_status() != FMRADIO_OFF)) | 157 | else if (in_radio_screen() || (get_radio_status() != FMRADIO_OFF)) |
150 | { | 158 | { |
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index f66961d488..cbc2ebed4e 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c | |||
@@ -736,6 +736,10 @@ static int parse_image_special(struct skin_element *element, | |||
736 | 736 | ||
737 | #endif /* HAVE_LCD_BITMAP */ | 737 | #endif /* HAVE_LCD_BITMAP */ |
738 | 738 | ||
739 | static int parse_progressbar_tag(struct skin_element* element, | ||
740 | struct wps_token *token, | ||
741 | struct wps_data *wps_data); | ||
742 | |||
739 | static int parse_setting_and_lang(struct skin_element *element, | 743 | static int parse_setting_and_lang(struct skin_element *element, |
740 | struct wps_token *token, | 744 | struct wps_token *token, |
741 | struct wps_data *wps_data) | 745 | struct wps_data *wps_data) |
@@ -757,6 +761,13 @@ static int parse_setting_and_lang(struct skin_element *element, | |||
757 | return WPS_ERROR_INVALID_PARAM; | 761 | return WPS_ERROR_INVALID_PARAM; |
758 | #endif | 762 | #endif |
759 | } | 763 | } |
764 | else if (element->params_count > 1) | ||
765 | { | ||
766 | if (element->params_count > 4) | ||
767 | return parse_progressbar_tag(element, token, wps_data); | ||
768 | else | ||
769 | return WPS_ERROR_INVALID_PARAM; | ||
770 | } | ||
760 | else | 771 | else |
761 | { | 772 | { |
762 | #ifndef __PCTOOL__ | 773 | #ifndef __PCTOOL__ |
@@ -891,6 +902,7 @@ static int parse_progressbar_tag(struct skin_element* element, | |||
891 | pb->image = PTRTOSKINOFFSET(skin_buffer, NULL); | 902 | pb->image = PTRTOSKINOFFSET(skin_buffer, NULL); |
892 | pb->slider = PTRTOSKINOFFSET(skin_buffer, NULL); | 903 | pb->slider = PTRTOSKINOFFSET(skin_buffer, NULL); |
893 | pb->backdrop = PTRTOSKINOFFSET(skin_buffer, NULL); | 904 | pb->backdrop = PTRTOSKINOFFSET(skin_buffer, NULL); |
905 | pb->setting_id = -1; | ||
894 | pb->invert_fill_direction = false; | 906 | pb->invert_fill_direction = false; |
895 | pb->horizontal = true; | 907 | pb->horizontal = true; |
896 | 908 | ||
@@ -1015,6 +1027,19 @@ static int parse_progressbar_tag(struct skin_element* element, | |||
1015 | else if (!strcmp(text, "notouch")) | 1027 | else if (!strcmp(text, "notouch")) |
1016 | suppress_touchregion = true; | 1028 | suppress_touchregion = true; |
1017 | #endif | 1029 | #endif |
1030 | else if (token->type == SKIN_TOKEN_SETTING && !strcmp(text, "setting")) | ||
1031 | { | ||
1032 | if (curr_param+1 < element->params_count) | ||
1033 | { | ||
1034 | curr_param++; | ||
1035 | param++; | ||
1036 | text = SKINOFFSETTOPTR(skin_buffer, param->data.text); | ||
1037 | #ifndef __PCTOOL__ | ||
1038 | if (find_setting_by_cfgname(text, &pb->setting_id) == NULL) | ||
1039 | return WPS_ERROR_INVALID_PARAM; | ||
1040 | #endif | ||
1041 | } | ||
1042 | } | ||
1018 | else if (curr_param == 4) | 1043 | else if (curr_param == 4) |
1019 | image_filename = text; | 1044 | image_filename = text; |
1020 | 1045 | ||
@@ -1060,6 +1085,8 @@ static int parse_progressbar_tag(struct skin_element* element, | |||
1060 | token->type = SKIN_TOKEN_PEAKMETER_RIGHTBAR; | 1085 | token->type = SKIN_TOKEN_PEAKMETER_RIGHTBAR; |
1061 | else if (token->type == SKIN_TOKEN_LIST_NEEDS_SCROLLBAR) | 1086 | else if (token->type == SKIN_TOKEN_LIST_NEEDS_SCROLLBAR) |
1062 | token->type = SKIN_TOKEN_LIST_SCROLLBAR; | 1087 | token->type = SKIN_TOKEN_LIST_SCROLLBAR; |
1088 | else if (token->type == SKIN_TOKEN_SETTING) | ||
1089 | token->type = SKIN_TOKEN_SETTINGBAR; | ||
1063 | pb->type = token->type; | 1090 | pb->type = token->type; |
1064 | 1091 | ||
1065 | #ifdef HAVE_TOUCHSCREEN | 1092 | #ifdef HAVE_TOUCHSCREEN |
diff --git a/apps/gui/skin_engine/skin_render.c b/apps/gui/skin_engine/skin_render.c index bf7f03d738..0fdf6b019f 100644 --- a/apps/gui/skin_engine/skin_render.c +++ b/apps/gui/skin_engine/skin_render.c | |||
@@ -209,6 +209,7 @@ static bool do_non_text_tags(struct gui_wps *gwps, struct skin_draw_info *info, | |||
209 | #endif | 209 | #endif |
210 | case SKIN_TOKEN_VOLUMEBAR: | 210 | case SKIN_TOKEN_VOLUMEBAR: |
211 | case SKIN_TOKEN_BATTERY_PERCENTBAR: | 211 | case SKIN_TOKEN_BATTERY_PERCENTBAR: |
212 | case SKIN_TOKEN_SETTINGBAR: | ||
212 | #ifdef HAVE_LCD_BITMAP | 213 | #ifdef HAVE_LCD_BITMAP |
213 | case SKIN_TOKEN_PROGRESSBAR: | 214 | case SKIN_TOKEN_PROGRESSBAR: |
214 | case SKIN_TOKEN_TUNER_RSSI_BAR: | 215 | case SKIN_TOKEN_TUNER_RSSI_BAR: |
diff --git a/apps/gui/skin_engine/wps_internals.h b/apps/gui/skin_engine/wps_internals.h index ab2bc3579e..8cd5d9cb60 100644 --- a/apps/gui/skin_engine/wps_internals.h +++ b/apps/gui/skin_engine/wps_internals.h | |||
@@ -112,6 +112,8 @@ struct progressbar { | |||
112 | OFFSETTYPE(struct gui_img *) slider; | 112 | OFFSETTYPE(struct gui_img *) slider; |
113 | bool horizontal; | 113 | bool horizontal; |
114 | OFFSETTYPE(struct gui_img *) backdrop; | 114 | OFFSETTYPE(struct gui_img *) backdrop; |
115 | int setting_id; /* for the setting bar type */ | ||
116 | |||
115 | }; | 117 | }; |
116 | 118 | ||
117 | struct draw_rectangle { | 119 | struct draw_rectangle { |