diff options
Diffstat (limited to 'apps/gui/skin_engine/skin_parser.c')
| -rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 21 |
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 a866101..0db1964 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, return 0; } +static int parse_substring_tag(struct skin_element* element, + struct wps_token *token, + struct wps_data *wps_data) +{ + (void)wps_data; + struct substring *ss = (struct substring*)skin_buffer_alloc(sizeof(struct substring)); + if (!ss) + return 1; + ss->start = element->params[0].data.number; + if (element->params[1].type == DEFAULT) + ss->length = -1; + else + ss->length = element->params[1].data.number; + ss->token = element->params[2].data.code->data; + token->value.data = ss; + return 0; +} + static int parse_progressbar_tag(struct skin_element* element, struct wps_token *token, struct wps_data *wps_data) @@ -1788,6 +1806,9 @@ static int skin_element_callback(struct skin_element* element, void* data) case SKIN_TOKEN_LOGICAL_IF: function = parse_logical_if; break; + case SKIN_TOKEN_SUBSTRING: + function = parse_substring_tag; + break; case SKIN_TOKEN_PROGRESSBAR: case SKIN_TOKEN_VOLUME: case SKIN_TOKEN_BATTERY_PERCENT: |