From 7fbcc9d3306260fda407111f46b46097f3fa7eca Mon Sep 17 00:00:00 2001 From: louis Date: Fri, 10 Oct 2014 15:32:38 +0200 Subject: [PATCH] support for global variables type 'double' --- HISTORY | 1 + dtd/globals.dtd | 2 +- libtemplate/globals.h | 1 + libtemplate/parameter.c | 11 +++++++++++ libtemplate/xmlparser.c | 3 +++ skins/metrixhd/themes/default/globals.xml | 1 + 6 files changed, 18 insertions(+), 1 deletion(-) diff --git a/HISTORY b/HISTORY index 36ebb19..03fae6a 100644 --- a/HISTORY +++ b/HISTORY @@ -16,3 +16,4 @@ Version 0.0.2 - added {durationhours} and {durationminutes} tokens in several view elements - added discusage icons to menu header view element so that it discusage can be displayed in every menu view - added numeric day, month and year tokens in different view elements +- support for global variables type "double" diff --git a/dtd/globals.dtd b/dtd/globals.dtd index 570fa15..e6246d6 100644 --- a/dtd/globals.dtd +++ b/dtd/globals.dtd @@ -13,7 +13,7 @@ + type (int|double|string) #REQUIRED> colors; map intVars; + map doubleVars; map stringVars; map fonts; map > translations; diff --git a/libtemplate/parameter.c b/libtemplate/parameter.c index e7dd30a..c646f06 100644 --- a/libtemplate/parameter.c +++ b/libtemplate/parameter.c @@ -156,6 +156,17 @@ bool cNumericParameter::CheckExpression(int &val, string &parsedVal) { parsedValue = parsedValue.replace(foundToken, token.size(), st.str()); } } + for (map::iterator globDouble = globals->doubleVars.begin(); globDouble != globals->doubleVars.end(); globDouble++) { + stringstream sToken; + sToken << "{" << globDouble->first << "}"; + string token = sToken.str(); + size_t foundToken = parsedValue.find(token); + if (foundToken != string::npos) { + stringstream st; + st << globDouble->second; + parsedValue = parsedValue.replace(foundToken, token.size(), st.str()); + } + } } if (IsNumber(parsedValue)) { diff --git a/libtemplate/xmlparser.c b/libtemplate/xmlparser.c index 8c21ed9..0e2c132 100644 --- a/libtemplate/xmlparser.c +++ b/libtemplate/xmlparser.c @@ -291,6 +291,9 @@ void cXmlParser::InsertVariable(string name, string type, string value) { if (!type.compare("int")) { int val = atoi(value.c_str()); globals->intVars.insert(pair(name, val)); + } else if (!type.compare("double")) { + double val = atof(value.c_str()); + globals->doubleVars.insert(pair(name, val)); } else if (!type.compare("string")) { globals->stringVars.insert(pair(name, value)); } diff --git a/skins/metrixhd/themes/default/globals.xml b/skins/metrixhd/themes/default/globals.xml index 6732249..11c3e1f 100644 --- a/skins/metrixhd/themes/default/globals.xml +++ b/skins/metrixhd/themes/default/globals.xml @@ -28,6 +28,7 @@ 5 0 hützligrütz + 3.14