summaryrefslogtreecommitdiff
path: root/apps/gui/skin_engine/skin_parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/skin_engine/skin_parser.c')
-rw-r--r--apps/gui/skin_engine/skin_parser.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index a866101c1c..0db19645bc 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -720,6 +720,24 @@ static int parse_timeout_tag(struct skin_element *element,
720 return 0; 720 return 0;
721} 721}
722 722
723static int parse_substring_tag(struct skin_element* element,
724 struct wps_token *token,
725 struct wps_data *wps_data)
726{
727 (void)wps_data;
728 struct substring *ss = (struct substring*)skin_buffer_alloc(sizeof(struct substring));
729 if (!ss)
730 return 1;
731 ss->start = element->params[0].data.number;
732 if (element->params[1].type == DEFAULT)
733 ss->length = -1;
734 else
735 ss->length = element->params[1].data.number;
736 ss->token = element->params[2].data.code->data;
737 token->value.data = ss;
738 return 0;
739}
740
723static int parse_progressbar_tag(struct skin_element* element, 741static int parse_progressbar_tag(struct skin_element* element,
724 struct wps_token *token, 742 struct wps_token *token,
725 struct wps_data *wps_data) 743 struct wps_data *wps_data)
@@ -1788,6 +1806,9 @@ static int skin_element_callback(struct skin_element* element, void* data)
1788 case SKIN_TOKEN_LOGICAL_IF: 1806 case SKIN_TOKEN_LOGICAL_IF:
1789 function = parse_logical_if; 1807 function = parse_logical_if;
1790 break; 1808 break;
1809 case SKIN_TOKEN_SUBSTRING:
1810 function = parse_substring_tag;
1811 break;
1791 case SKIN_TOKEN_PROGRESSBAR: 1812 case SKIN_TOKEN_PROGRESSBAR:
1792 case SKIN_TOKEN_VOLUME: 1813 case SKIN_TOKEN_VOLUME:
1793 case SKIN_TOKEN_BATTERY_PERCENT: 1814 case SKIN_TOKEN_BATTERY_PERCENT: