diff options
-rw-r--r-- | lib/skin_parser/skin_debug.c | 12 | ||||
-rw-r--r-- | lib/skin_parser/skin_parser.c | 35 | ||||
-rw-r--r-- | lib/skin_parser/skin_parser.h | 6 | ||||
-rw-r--r-- | lib/skin_parser/tag_table.c | 10 | ||||
-rw-r--r-- | lib/skin_parser/tag_table.h | 3 | ||||
-rw-r--r-- | utils/themeeditor/graphics/rbprogressbar.cpp | 8 | ||||
-rw-r--r-- | utils/themeeditor/graphics/rbviewport.cpp | 10 | ||||
-rw-r--r-- | utils/themeeditor/gui/devicestate.cpp | 6 | ||||
-rw-r--r-- | utils/themeeditor/models/parsetreemodel.cpp | 4 | ||||
-rw-r--r-- | utils/themeeditor/models/parsetreenode.cpp | 63 |
10 files changed, 107 insertions, 50 deletions
diff --git a/lib/skin_parser/skin_debug.c b/lib/skin_parser/skin_debug.c index 00d09aea7e..4abe6252f0 100644 --- a/lib/skin_parser/skin_debug.c +++ b/lib/skin_parser/skin_debug.c | |||
@@ -70,6 +70,9 @@ void skin_error(enum skin_errorcode error) | |||
70 | case INT_EXPECTED: | 70 | case INT_EXPECTED: |
71 | error_message = "Expected integer"; | 71 | error_message = "Expected integer"; |
72 | break; | 72 | break; |
73 | case DECIMAL_EXPECTED: | ||
74 | error_message = "Expected decimal"; | ||
75 | break; | ||
73 | case SEPERATOR_EXPECTED: | 76 | case SEPERATOR_EXPECTED: |
74 | error_message = "Expected argument seperator"; | 77 | error_message = "Expected argument seperator"; |
75 | break; | 78 | break; |
@@ -236,8 +239,13 @@ void skin_debug_params(int count, struct skin_tag_parameter params[]) | |||
236 | printf("[%s]", params[i].data.text); | 239 | printf("[%s]", params[i].data.text); |
237 | break; | 240 | break; |
238 | 241 | ||
239 | case NUMERIC: | 242 | case INTEGER: |
240 | printf("[%d]", params[i].data.numeric); | 243 | printf("[%d]", params[i].data.number); |
244 | break; | ||
245 | |||
246 | case DECIMAL: | ||
247 | printf("[%d.%d]", params[i].data.number/10, | ||
248 | params[i].data.number%10); | ||
241 | break; | 249 | break; |
242 | 250 | ||
243 | case CODE: | 251 | case CODE: |
diff --git a/lib/skin_parser/skin_parser.c b/lib/skin_parser/skin_parser.c index 2ce41c6d9a..5bc5984fb7 100644 --- a/lib/skin_parser/skin_parser.c +++ b/lib/skin_parser/skin_parser.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <stdio.h> | 23 | #include <stdio.h> |
24 | #include <string.h> | 24 | #include <string.h> |
25 | #include <ctype.h> | 25 | #include <ctype.h> |
26 | #include <stdbool.h> | ||
26 | 27 | ||
27 | #include "skin_buffer.h" | 28 | #include "skin_buffer.h" |
28 | #include "skin_parser.h" | 29 | #include "skin_parser.h" |
@@ -534,7 +535,7 @@ static int skin_parse_tag(struct skin_element* element, char** document) | |||
534 | /* Storing the type code */ | 535 | /* Storing the type code */ |
535 | element->params[i].type_code = *tag_args; | 536 | element->params[i].type_code = *tag_args; |
536 | 537 | ||
537 | /* Checking a nullable argument for null */ | 538 | /* Checking a nullable argument for null. */ |
538 | if(*cursor == DEFAULTSYM && !isdigit(cursor[1])) | 539 | if(*cursor == DEFAULTSYM && !isdigit(cursor[1])) |
539 | { | 540 | { |
540 | if(islower(*tag_args)) | 541 | if(islower(*tag_args)) |
@@ -557,8 +558,36 @@ static int skin_parse_tag(struct skin_element* element, char** document) | |||
557 | return 0; | 558 | return 0; |
558 | } | 559 | } |
559 | 560 | ||
560 | element->params[i].type = NUMERIC; | 561 | element->params[i].type = INTEGER; |
561 | element->params[i].data.numeric = scan_int(&cursor); | 562 | element->params[i].data.number = scan_int(&cursor); |
563 | } | ||
564 | else if(tolower(*tag_args) == 'd') | ||
565 | { | ||
566 | int val = 0; | ||
567 | bool have_point = false; | ||
568 | bool have_tenth = false; | ||
569 | while ( isdigit(*cursor) || *cursor == '.' ) | ||
570 | { | ||
571 | if (*cursor != '.') | ||
572 | { | ||
573 | val *= 10; | ||
574 | val += *cursor - '0'; | ||
575 | if (have_point) | ||
576 | { | ||
577 | have_tenth = true; | ||
578 | cursor++; | ||
579 | break; | ||
580 | } | ||
581 | } | ||
582 | else | ||
583 | have_point = true; | ||
584 | cursor++; | ||
585 | } | ||
586 | if (have_tenth == false) | ||
587 | val *= 10; | ||
588 | |||
589 | element->params[i].type = DECIMAL; | ||
590 | element->params[i].data.number = val; | ||
562 | } | 591 | } |
563 | else if(tolower(*tag_args) == 'n' || | 592 | else if(tolower(*tag_args) == 'n' || |
564 | tolower(*tag_args) == 's' || tolower(*tag_args) == 'f') | 593 | tolower(*tag_args) == 's' || tolower(*tag_args) == 'f') |
diff --git a/lib/skin_parser/skin_parser.h b/lib/skin_parser/skin_parser.h index 126a014b5a..ad10f90125 100644 --- a/lib/skin_parser/skin_parser.h +++ b/lib/skin_parser/skin_parser.h | |||
@@ -56,6 +56,7 @@ enum skin_errorcode | |||
56 | UNEXPECTED_NEWLINE, | 56 | UNEXPECTED_NEWLINE, |
57 | INSUFFICIENT_ARGS, | 57 | INSUFFICIENT_ARGS, |
58 | INT_EXPECTED, | 58 | INT_EXPECTED, |
59 | DECIMAL_EXPECTED, | ||
59 | SEPERATOR_EXPECTED, | 60 | SEPERATOR_EXPECTED, |
60 | CLOSE_EXPECTED, | 61 | CLOSE_EXPECTED, |
61 | MULTILINE_EXPECTED | 62 | MULTILINE_EXPECTED |
@@ -66,7 +67,8 @@ struct skin_tag_parameter | |||
66 | { | 67 | { |
67 | enum | 68 | enum |
68 | { | 69 | { |
69 | NUMERIC, | 70 | INTEGER, |
71 | DECIMAL, /* stored in data.number as (whole*10)+part */ | ||
70 | STRING, | 72 | STRING, |
71 | CODE, | 73 | CODE, |
72 | DEFAULT | 74 | DEFAULT |
@@ -74,7 +76,7 @@ struct skin_tag_parameter | |||
74 | 76 | ||
75 | union | 77 | union |
76 | { | 78 | { |
77 | int numeric; | 79 | int number; |
78 | char* text; | 80 | char* text; |
79 | struct skin_element* code; | 81 | struct skin_element* code; |
80 | } data; | 82 | } data; |
diff --git a/lib/skin_parser/tag_table.c b/lib/skin_parser/tag_table.c index e0247ef745..dd8df63997 100644 --- a/lib/skin_parser/tag_table.c +++ b/lib/skin_parser/tag_table.c | |||
@@ -120,7 +120,7 @@ struct tag_info legal_tags[] = | |||
120 | { SKIN_TOKEN_REMOTE_HOLD, "mr", "", 0 }, | 120 | { SKIN_TOKEN_REMOTE_HOLD, "mr", "", 0 }, |
121 | { SKIN_TOKEN_REPEAT_MODE, "mm", "", 0 }, | 121 | { SKIN_TOKEN_REPEAT_MODE, "mm", "", 0 }, |
122 | { SKIN_TOKEN_PLAYBACK_STATUS, "mp", "", 0 }, | 122 | { SKIN_TOKEN_PLAYBACK_STATUS, "mp", "", 0 }, |
123 | { SKIN_TOKEN_BUTTON_VOLUME, "mv", "|S", 0 }, | 123 | { SKIN_TOKEN_BUTTON_VOLUME, "mv", "|D", 0 }, |
124 | 124 | ||
125 | { SKIN_TOKEN_PEAKMETER, "pm", "", 0 }, | 125 | { SKIN_TOKEN_PEAKMETER, "pm", "", 0 }, |
126 | { SKIN_TOKEN_PLAYER_PROGRESSBAR, "pf", "", 0 }, | 126 | { SKIN_TOKEN_PLAYER_PROGRESSBAR, "pf", "", 0 }, |
@@ -131,8 +131,8 @@ struct tag_info legal_tags[] = | |||
131 | { SKIN_TOKEN_TRACK_TIME_ELAPSED, "pc", "", 0 }, | 131 | { SKIN_TOKEN_TRACK_TIME_ELAPSED, "pc", "", 0 }, |
132 | { SKIN_TOKEN_TRACK_TIME_REMAINING, "pr", "", 0 }, | 132 | { SKIN_TOKEN_TRACK_TIME_REMAINING, "pr", "", 0 }, |
133 | { SKIN_TOKEN_TRACK_LENGTH, "pt", "", 0 }, | 133 | { SKIN_TOKEN_TRACK_LENGTH, "pt", "", 0 }, |
134 | { SKIN_TOKEN_TRACK_STARTING, "pS" , "|S", 0 }, | 134 | { SKIN_TOKEN_TRACK_STARTING, "pS" , "|D", 0 }, |
135 | { SKIN_TOKEN_TRACK_ENDING, "pE" , "|S", 0 }, | 135 | { SKIN_TOKEN_TRACK_ENDING, "pE" , "|D", 0 }, |
136 | { SKIN_TOKEN_PLAYLIST_POSITION, "pp", "", 0 }, | 136 | { SKIN_TOKEN_PLAYLIST_POSITION, "pp", "", 0 }, |
137 | { SKIN_TOKEN_PLAYLIST_ENTRIES, "pe", "", 0 }, | 137 | { SKIN_TOKEN_PLAYLIST_ENTRIES, "pe", "", 0 }, |
138 | { SKIN_TOKEN_PLAYLIST_NAME, "pn", "", 0 }, | 138 | { SKIN_TOKEN_PLAYLIST_NAME, "pn", "", 0 }, |
@@ -161,7 +161,7 @@ struct tag_info legal_tags[] = | |||
161 | { SKIN_TOKEN_RDS_TEXT, "tz", "", 0 }, | 161 | { SKIN_TOKEN_RDS_TEXT, "tz", "", 0 }, |
162 | 162 | ||
163 | { SKIN_TOKEN_SUBLINE_SCROLL, "s", "", 0 }, | 163 | { SKIN_TOKEN_SUBLINE_SCROLL, "s", "", 0 }, |
164 | { SKIN_TOKEN_SUBLINE_TIMEOUT, "t" , "S", 0 }, | 164 | { SKIN_TOKEN_SUBLINE_TIMEOUT, "t" , "D", 0 }, |
165 | 165 | ||
166 | { SKIN_TOKEN_ENABLE_THEME, "we", "", NOBREAK }, | 166 | { SKIN_TOKEN_ENABLE_THEME, "we", "", NOBREAK }, |
167 | { SKIN_TOKEN_DISABLE_THEME, "wd", "", NOBREAK }, | 167 | { SKIN_TOKEN_DISABLE_THEME, "wd", "", NOBREAK }, |
@@ -196,7 +196,7 @@ struct tag_info legal_tags[] = | |||
196 | { SKIN_TOKEN_TRANSLATEDSTRING, "Sx" , "S", 0 }, | 196 | { SKIN_TOKEN_TRANSLATEDSTRING, "Sx" , "S", 0 }, |
197 | { SKIN_TOKEN_LANG_IS_RTL, "Sr" , "", 0 }, | 197 | { SKIN_TOKEN_LANG_IS_RTL, "Sr" , "", 0 }, |
198 | 198 | ||
199 | { SKIN_TOKEN_LASTTOUCH, "Tl" , "|S", 0 }, | 199 | { SKIN_TOKEN_LASTTOUCH, "Tl" , "|D", 0 }, |
200 | { SKIN_TOKEN_CURRENT_SCREEN, "cs", "", 0 }, | 200 | { SKIN_TOKEN_CURRENT_SCREEN, "cs", "", 0 }, |
201 | { SKIN_TOKEN_TOUCHREGION, "T" , "IIiiS", NOBREAK }, | 201 | { SKIN_TOKEN_TOUCHREGION, "T" , "IIiiS", NOBREAK }, |
202 | 202 | ||
diff --git a/lib/skin_parser/tag_table.h b/lib/skin_parser/tag_table.h index 149f148cca..f84d4ac762 100644 --- a/lib/skin_parser/tag_table.h +++ b/lib/skin_parser/tag_table.h | |||
@@ -246,6 +246,9 @@ enum skin_token_type { | |||
246 | * characters for parameters are: | 246 | * characters for parameters are: |
247 | * I - Required integer | 247 | * I - Required integer |
248 | * i - Nullable integer | 248 | * i - Nullable integer |
249 | * D - Required decimal | ||
250 | * d - Nullable decimal | ||
251 | * Decimals are stored as (whole*10)+part | ||
249 | * S - Required string | 252 | * S - Required string |
250 | * s - Nullable string | 253 | * s - Nullable string |
251 | * F - Required file name | 254 | * F - Required file name |
diff --git a/utils/themeeditor/graphics/rbprogressbar.cpp b/utils/themeeditor/graphics/rbprogressbar.cpp index 027520f4da..206a835252 100644 --- a/utils/themeeditor/graphics/rbprogressbar.cpp +++ b/utils/themeeditor/graphics/rbprogressbar.cpp | |||
@@ -41,22 +41,22 @@ RBProgressBar::RBProgressBar(RBViewport *parent, const RBRenderInfo &info, | |||
41 | 41 | ||
42 | if(paramCount > 0 && params[0].type != skin_tag_parameter::DEFAULT) | 42 | if(paramCount > 0 && params[0].type != skin_tag_parameter::DEFAULT) |
43 | { | 43 | { |
44 | x = params[0].data.numeric; | 44 | x = params[0].data.number; |
45 | } | 45 | } |
46 | 46 | ||
47 | if(paramCount > 1 && params[1].type != skin_tag_parameter::DEFAULT) | 47 | if(paramCount > 1 && params[1].type != skin_tag_parameter::DEFAULT) |
48 | { | 48 | { |
49 | y = params[1].data.numeric; | 49 | y = params[1].data.number; |
50 | } | 50 | } |
51 | 51 | ||
52 | if(paramCount > 2 && params[2].type != skin_tag_parameter::DEFAULT) | 52 | if(paramCount > 2 && params[2].type != skin_tag_parameter::DEFAULT) |
53 | { | 53 | { |
54 | w = params[2].data.numeric; | 54 | w = params[2].data.number; |
55 | } | 55 | } |
56 | 56 | ||
57 | if(paramCount > 3 && params[3].type != skin_tag_parameter::DEFAULT) | 57 | if(paramCount > 3 && params[3].type != skin_tag_parameter::DEFAULT) |
58 | { | 58 | { |
59 | h = params[3].data.numeric; | 59 | h = params[3].data.number; |
60 | } | 60 | } |
61 | 61 | ||
62 | if(paramCount > 4 && params[4].type != skin_tag_parameter::DEFAULT) | 62 | if(paramCount > 4 && params[4].type != skin_tag_parameter::DEFAULT) |
diff --git a/utils/themeeditor/graphics/rbviewport.cpp b/utils/themeeditor/graphics/rbviewport.cpp index 96d7e8b276..e9c58eb6fb 100644 --- a/utils/themeeditor/graphics/rbviewport.cpp +++ b/utils/themeeditor/graphics/rbviewport.cpp | |||
@@ -97,24 +97,24 @@ RBViewport::RBViewport(skin_element* node, const RBRenderInfo& info) | |||
97 | break; | 97 | break; |
98 | } | 98 | } |
99 | /* Now we grab the info common to all viewports */ | 99 | /* Now we grab the info common to all viewports */ |
100 | x = node->params[param++].data.numeric; | 100 | x = node->params[param++].data.number; |
101 | if(x < 0) | 101 | if(x < 0) |
102 | x = info.screen()->boundingRect().right() + x; | 102 | x = info.screen()->boundingRect().right() + x; |
103 | y = node->params[param++].data.numeric; | 103 | y = node->params[param++].data.number; |
104 | if(y < 0) | 104 | if(y < 0) |
105 | y = info.screen()->boundingRect().bottom() + y; | 105 | y = info.screen()->boundingRect().bottom() + y; |
106 | 106 | ||
107 | if(node->params[param].type == skin_tag_parameter::DEFAULT) | 107 | if(node->params[param].type == skin_tag_parameter::DEFAULT) |
108 | w = info.screen()->getWidth() - x; | 108 | w = info.screen()->getWidth() - x; |
109 | else | 109 | else |
110 | w = node->params[param].data.numeric; | 110 | w = node->params[param].data.number; |
111 | if(w < 0) | 111 | if(w < 0) |
112 | w = info.screen()->getWidth() + w - x; | 112 | w = info.screen()->getWidth() + w - x; |
113 | 113 | ||
114 | if(node->params[++param].type == skin_tag_parameter::DEFAULT) | 114 | if(node->params[++param].type == skin_tag_parameter::DEFAULT) |
115 | h = info.screen()->getHeight() - y; | 115 | h = info.screen()->getHeight() - y; |
116 | else | 116 | else |
117 | h = node->params[param].data.numeric; | 117 | h = node->params[param].data.number; |
118 | if(h < 0) | 118 | if(h < 0) |
119 | h = info.screen()->getHeight() + h - y; | 119 | h = info.screen()->getHeight() + h - y; |
120 | 120 | ||
@@ -128,7 +128,7 @@ RBViewport::RBViewport(skin_element* node, const RBRenderInfo& info) | |||
128 | if(node->params[++param].type == skin_tag_parameter::DEFAULT) | 128 | if(node->params[++param].type == skin_tag_parameter::DEFAULT) |
129 | font = screen->getFont(1); | 129 | font = screen->getFont(1); |
130 | else | 130 | else |
131 | font = screen->getFont(node->params[param].data.numeric); | 131 | font = screen->getFont(node->params[param].data.number); |
132 | 132 | ||
133 | setPos(x, y); | 133 | setPos(x, y); |
134 | size = QRectF(0, 0, w, h); | 134 | size = QRectF(0, 0, w, h); |
diff --git a/utils/themeeditor/gui/devicestate.cpp b/utils/themeeditor/gui/devicestate.cpp index 89985bf730..e766a64835 100644 --- a/utils/themeeditor/gui/devicestate.cpp +++ b/utils/themeeditor/gui/devicestate.cpp | |||
@@ -225,7 +225,7 @@ QVariant DeviceState::data(QString tag, int paramCount, | |||
225 | QString path = tag[0].isLower() | 225 | QString path = tag[0].isLower() |
226 | ? data("file").toString() : data("nextfile").toString(); | 226 | ? data("file").toString() : data("nextfile").toString(); |
227 | if(paramCount > 0) | 227 | if(paramCount > 0) |
228 | return directory(path, params[0].data.numeric); | 228 | return directory(path, params[0].data.number); |
229 | else | 229 | else |
230 | return QVariant(); | 230 | return QVariant(); |
231 | } | 231 | } |
@@ -255,7 +255,7 @@ QVariant DeviceState::data(QString tag, int paramCount, | |||
255 | else if(tag == "pS") | 255 | else if(tag == "pS") |
256 | { | 256 | { |
257 | double threshhold = paramCount > 0 | 257 | double threshhold = paramCount > 0 |
258 | ? std::atof(params[0].data.text) : 10; | 258 | ? params[0].data.number / 10. : 10; |
259 | if(data("?pc").toDouble() <= threshhold) | 259 | if(data("?pc").toDouble() <= threshhold) |
260 | return true; | 260 | return true; |
261 | else | 261 | else |
@@ -264,7 +264,7 @@ QVariant DeviceState::data(QString tag, int paramCount, | |||
264 | else if(tag == "pE") | 264 | else if(tag == "pE") |
265 | { | 265 | { |
266 | double threshhold = paramCount > 0 | 266 | double threshhold = paramCount > 0 |
267 | ? std::atof(params[0].data.text) : 10; | 267 | ? params[0].data.number / 10. : 10; |
268 | if(data("?pt").toDouble() - data("?pc").toDouble() <= threshhold) | 268 | if(data("?pt").toDouble() - data("?pc").toDouble() <= threshhold) |
269 | return true; | 269 | return true; |
270 | else | 270 | else |
diff --git a/utils/themeeditor/models/parsetreemodel.cpp b/utils/themeeditor/models/parsetreemodel.cpp index a04a0d9202..66c96213ab 100644 --- a/utils/themeeditor/models/parsetreemodel.cpp +++ b/utils/themeeditor/models/parsetreemodel.cpp | |||
@@ -246,8 +246,8 @@ bool ParseTreeModel::setData(const QModelIndex &index, const QVariant &value, | |||
246 | if(!value.canConvert(QVariant::Int)) | 246 | if(!value.canConvert(QVariant::Int)) |
247 | return false; | 247 | return false; |
248 | 248 | ||
249 | param->type = skin_tag_parameter::NUMERIC; | 249 | param->type = skin_tag_parameter::INTEGER; |
250 | param->data.numeric = value.toInt(); | 250 | param->data.number = value.toInt(); |
251 | } | 251 | } |
252 | else | 252 | else |
253 | { | 253 | { |
diff --git a/utils/themeeditor/models/parsetreenode.cpp b/utils/themeeditor/models/parsetreenode.cpp index 1b894b7c33..fbb7b9279f 100644 --- a/utils/themeeditor/models/parsetreenode.cpp +++ b/utils/themeeditor/models/parsetreenode.cpp | |||
@@ -246,8 +246,12 @@ QString ParseTreeNode::genCode() const | |||
246 | } | 246 | } |
247 | break; | 247 | break; |
248 | 248 | ||
249 | case skin_tag_parameter::NUMERIC: | 249 | case skin_tag_parameter::INTEGER: |
250 | buffer.append(QString::number(param->data.numeric, 10)); | 250 | buffer.append(QString::number(param->data.number, 10)); |
251 | break; | ||
252 | |||
253 | case skin_tag_parameter::DECIMAL: | ||
254 | buffer.append(QString::number(param->data.number / 10., 'f', 1)); | ||
251 | break; | 255 | break; |
252 | 256 | ||
253 | case skin_tag_parameter::DEFAULT: | 257 | case skin_tag_parameter::DEFAULT: |
@@ -318,8 +322,8 @@ int ParseTreeNode::genHash() const | |||
318 | case skin_tag_parameter::CODE: | 322 | case skin_tag_parameter::CODE: |
319 | break; | 323 | break; |
320 | 324 | ||
321 | case skin_tag_parameter::NUMERIC: | 325 | case skin_tag_parameter::INTEGER: |
322 | hash += param->data.numeric * (param->data.numeric / 4); | 326 | hash += param->data.number * (param->data.number / 4); |
323 | break; | 327 | break; |
324 | 328 | ||
325 | case skin_tag_parameter::STRING: | 329 | case skin_tag_parameter::STRING: |
@@ -331,6 +335,10 @@ int ParseTreeNode::genHash() const | |||
331 | hash += param->data.text[i]; | 335 | hash += param->data.text[i]; |
332 | } | 336 | } |
333 | break; | 337 | break; |
338 | |||
339 | case skin_tag_parameter::DECIMAL: | ||
340 | hash += param->data.number; | ||
341 | break; | ||
334 | } | 342 | } |
335 | } | 343 | } |
336 | 344 | ||
@@ -396,8 +404,11 @@ QVariant ParseTreeNode::data(int column) const | |||
396 | case skin_tag_parameter::STRING: | 404 | case skin_tag_parameter::STRING: |
397 | return QObject::tr("String"); | 405 | return QObject::tr("String"); |
398 | 406 | ||
399 | case skin_tag_parameter::NUMERIC: | 407 | case skin_tag_parameter::INTEGER: |
400 | return QObject::tr("Number"); | 408 | return QObject::tr("Integer"); |
409 | |||
410 | case skin_tag_parameter::DECIMAL: | ||
411 | return QObject::tr("Decimal"); | ||
401 | 412 | ||
402 | case skin_tag_parameter::DEFAULT: | 413 | case skin_tag_parameter::DEFAULT: |
403 | return QObject::tr("Default Argument"); | 414 | return QObject::tr("Default Argument"); |
@@ -445,11 +456,15 @@ QVariant ParseTreeNode::data(int column) const | |||
445 | case skin_tag_parameter::STRING: | 456 | case skin_tag_parameter::STRING: |
446 | return QString(param->data.text); | 457 | return QString(param->data.text); |
447 | 458 | ||
448 | case skin_tag_parameter::NUMERIC: | 459 | case skin_tag_parameter::INTEGER: |
449 | return QString::number(param->data.numeric, 10); | 460 | return QString::number(param->data.number, 10); |
461 | |||
462 | case skin_tag_parameter::DECIMAL: | ||
463 | return QString::number(param->data.number / 10., 'f', 1); | ||
450 | 464 | ||
451 | case skin_tag_parameter::CODE: | 465 | case skin_tag_parameter::CODE: |
452 | return QObject::tr("Seriously, something's wrong here"); | 466 | return QObject::tr("Seriously, something's wrong here"); |
467 | |||
453 | } | 468 | } |
454 | } | 469 | } |
455 | else | 470 | else |
@@ -742,10 +757,10 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport) | |||
742 | id = element->params[0].data.text; | 757 | id = element->params[0].data.text; |
743 | filename = info.settings()->value("imagepath", "") + "/" + | 758 | filename = info.settings()->value("imagepath", "") + "/" + |
744 | element->params[1].data.text; | 759 | element->params[1].data.text; |
745 | x = element->params[2].data.numeric; | 760 | x = element->params[2].data.number; |
746 | y = element->params[3].data.numeric; | 761 | y = element->params[3].data.number; |
747 | if(element->params_count > 4) | 762 | if(element->params_count > 4) |
748 | tiles = element->params[4].data.numeric; | 763 | tiles = element->params[4].data.number; |
749 | else | 764 | else |
750 | tiles = 1; | 765 | tiles = 1; |
751 | 766 | ||
@@ -758,8 +773,8 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport) | |||
758 | id = element->params[0].data.text; | 773 | id = element->params[0].data.text; |
759 | filename = info.settings()->value("imagepath", "") + "/" + | 774 | filename = info.settings()->value("imagepath", "") + "/" + |
760 | element->params[1].data.text; | 775 | element->params[1].data.text; |
761 | x = element->params[2].data.numeric; | 776 | x = element->params[2].data.number; |
762 | y = element->params[3].data.numeric; | 777 | y = element->params[3].data.number; |
763 | image = new RBImage(filename, 1, x, y, viewport); | 778 | image = new RBImage(filename, 1, x, y, viewport); |
764 | info.screen()->loadImage(id, new RBImage(filename, 1, x, y, | 779 | info.screen()->loadImage(id, new RBImage(filename, 1, x, y, |
765 | viewport)); | 780 | viewport)); |
@@ -780,10 +795,10 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport) | |||
780 | 795 | ||
781 | case 'l': | 796 | case 'l': |
782 | /* %Cl */ | 797 | /* %Cl */ |
783 | x = element->params[0].data.numeric; | 798 | x = element->params[0].data.number; |
784 | y = element->params[1].data.numeric; | 799 | y = element->params[1].data.number; |
785 | maxWidth = element->params[2].data.numeric; | 800 | maxWidth = element->params[2].data.number; |
786 | maxHeight = element->params[3].data.numeric; | 801 | maxHeight = element->params[3].data.number; |
787 | hAlign = element->params_count > 4 | 802 | hAlign = element->params_count > 4 |
788 | ? element->params[4].data.text[0] : 'c'; | 803 | ? element->params[4].data.text[0] : 'c'; |
789 | vAlign = element->params_count > 5 | 804 | vAlign = element->params_count > 5 |
@@ -805,7 +820,7 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport) | |||
805 | 820 | ||
806 | case 'l': | 821 | case 'l': |
807 | /* %Fl */ | 822 | /* %Fl */ |
808 | x = element->params[0].data.numeric; | 823 | x = element->params[0].data.number; |
809 | filename = info.settings()->value("themebase", "") + "/fonts/" + | 824 | filename = info.settings()->value("themebase", "") + "/fonts/" + |
810 | element->params[1].data.text; | 825 | element->params[1].data.text; |
811 | info.screen()->loadFont(x, new RBFont(filename)); | 826 | info.screen()->loadFont(x, new RBFont(filename)); |
@@ -822,10 +837,10 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport) | |||
822 | /* %T */ | 837 | /* %T */ |
823 | if(element->params_count < 5) | 838 | if(element->params_count < 5) |
824 | return false; | 839 | return false; |
825 | int x = element->params[0].data.numeric; | 840 | int x = element->params[0].data.number; |
826 | int y = element->params[1].data.numeric; | 841 | int y = element->params[1].data.number; |
827 | int width = element->params[2].data.numeric; | 842 | int width = element->params[2].data.number; |
828 | int height = element->params[3].data.numeric; | 843 | int height = element->params[3].data.number; |
829 | QString action(element->params[4].data.text); | 844 | QString action(element->params[4].data.text); |
830 | RBTouchArea* temp = new RBTouchArea(width, height, action, info); | 845 | RBTouchArea* temp = new RBTouchArea(width, height, action, info); |
831 | temp->setPos(x, y); | 846 | temp->setPos(x, y); |
@@ -863,7 +878,7 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport) | |||
863 | 878 | ||
864 | case 'p': | 879 | case 'p': |
865 | /* %Vp */ | 880 | /* %Vp */ |
866 | viewport->showPlaylist(info, element->params[0].data.numeric, | 881 | viewport->showPlaylist(info, element->params[0].data.number, |
867 | element->params[1].data.code, | 882 | element->params[1].data.code, |
868 | element->params[2].data.code); | 883 | element->params[2].data.code); |
869 | return true; | 884 | return true; |
@@ -1016,7 +1031,7 @@ double ParseTreeNode::findBranchTime(ParseTreeNode *branch, | |||
1016 | if(current->element->tag->name[0] == 't' | 1031 | if(current->element->tag->name[0] == 't' |
1017 | && current->element->tag->name[1] == '\0') | 1032 | && current->element->tag->name[1] == '\0') |
1018 | { | 1033 | { |
1019 | retval = atof(current->element->params[0].data.text); | 1034 | retval = current->element->params[0].data.number / 10.; |
1020 | } | 1035 | } |
1021 | } | 1036 | } |
1022 | else if(current->element->type == CONDITIONAL) | 1037 | else if(current->element->type == CONDITIONAL) |