summaryrefslogtreecommitdiff
path: root/libtemplate
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2015-03-28 12:00:19 +0100
committerlouis <louis.braun@gmx.de>2015-03-28 12:00:19 +0100
commit3dc2313708c95edcacb90a0353ba9468f55991ec (patch)
treeb5e293bdde1999234d8dd0aae493037e6d771600 /libtemplate
parent23448ab7bda8a646c00b23552d66a2a50eb207ee (diff)
parent762e2c15076d211e71eb9dee0e4956dbd8767fce (diff)
downloadvdr-plugin-skindesigner-3dc2313708c95edcacb90a0353ba9468f55991ec.tar.gz
vdr-plugin-skindesigner-3dc2313708c95edcacb90a0353ba9468f55991ec.tar.bz2
added possibility to detach viewelements
Diffstat (limited to 'libtemplate')
-rw-r--r--libtemplate/templatefunction.c35
-rw-r--r--libtemplate/templatefunction.h4
-rw-r--r--libtemplate/templatepixmap.c3
-rw-r--r--libtemplate/templatepixmap.h2
-rw-r--r--libtemplate/templateview.c10
-rw-r--r--libtemplate/templateview.h1
-rw-r--r--libtemplate/templateviewelement.c9
-rw-r--r--libtemplate/templateviewelement.h1
8 files changed, 64 insertions, 1 deletions
diff --git a/libtemplate/templatefunction.c b/libtemplate/templatefunction.c
index fa0b958..5e72948 100644
--- a/libtemplate/templatefunction.c
+++ b/libtemplate/templatefunction.c
@@ -63,6 +63,8 @@ void cTemplateFunction::SetParameters(vector<pair<string, string> > params) {
p.first = ptHeight;
} else if (!name.compare("menuitemwidth")) {
p.first = ptMenuItemWidth;
+ } else if (!name.compare("detached")) {
+ p.first = ptDetached;
} else if (!name.compare("fadetime")) {
p.first = ptFadeTime;
} else if (!name.compare("imagetype")) {
@@ -81,6 +83,8 @@ void cTemplateFunction::SetParameters(vector<pair<string, string> > params) {
p.first = ptLayer;
} else if (!name.compare("transparency")) {
p.first = ptTransparency;
+ } else if (!name.compare("background")) {
+ p.first = ptBackground;
} else if (!name.compare("quadrant")) {
p.first = ptQuadrant;
} else if (!name.compare("type")) {
@@ -266,6 +270,12 @@ bool cTemplateFunction::CalculateParameters(void) {
case ptHideRoot:
paramValid = SetHideRoot(value);
break;
+ case ptDetached:
+ paramValid = SetDetached(value);
+ break;
+ case ptBackground:
+ paramValid = SetBackground(value);
+ break;
default:
paramValid = true;
break;
@@ -406,6 +416,10 @@ int cTemplateFunction::GetNumericParameter(eParamType type) {
return 0;
else if (type == ptHideRoot)
return 0;
+ else if (type == ptDetached)
+ return 0;
+ else if (type == ptBackground)
+ return 0;
return -1;
}
return hit->second;
@@ -1062,6 +1076,22 @@ bool cTemplateFunction::SetHideRoot(string value) {
return true;
}
+bool cTemplateFunction::SetDetached(string value) {
+ int detached = 0;
+ if (!value.compare("true"))
+ detached = 1;
+ numericParameters.insert(pair<eParamType, int>(ptDetached, detached));
+ return true;
+}
+
+bool cTemplateFunction::SetBackground(string value) {
+ int back = 0;
+ if (!value.compare("true"))
+ back = 1;
+ numericParameters.insert(pair<eParamType, int>(ptBackground, back));
+ return true;
+}
+
void cTemplateFunction::ParseStringParameters(void) {
//first replace stringtokens in Text (drawText)
stringstream text;
@@ -1446,7 +1476,10 @@ string cTemplateFunction::GetParamName(eParamType pt) {
break;
case ptMenuItemWidth:
name = "Menu Item Width";
- break;
+ break;
+ case ptDetached:
+ name = "Detached";
+ break;
case ptFadeTime:
name = "Fade Time";
break;
diff --git a/libtemplate/templatefunction.h b/libtemplate/templatefunction.h
index 66678a6..a862aa7 100644
--- a/libtemplate/templatefunction.h
+++ b/libtemplate/templatefunction.h
@@ -45,6 +45,7 @@ enum eParamType {
ptWidth,
ptHeight,
ptMenuItemWidth,
+ ptDetached,
ptFadeTime,
ptDelay,
ptImageType,
@@ -55,6 +56,7 @@ enum eParamType {
ptText,
ptLayer,
ptTransparency,
+ ptBackground,
ptQuadrant,
ptType,
ptAlign,
@@ -152,6 +154,8 @@ protected:
bool SetFloating(string value);
bool SetOverflow(string value);
bool SetHideRoot(string value);
+ bool SetDetached(string value);
+ bool SetBackground(string value);
void ParseStringParameters(void);
void ParseNumericalParameters(void);
void CalculateAlign(int elementWidth, int elementHeight);
diff --git a/libtemplate/templatepixmap.c b/libtemplate/templatepixmap.c
index 52ae63f..1490236 100644
--- a/libtemplate/templatepixmap.c
+++ b/libtemplate/templatepixmap.c
@@ -12,6 +12,7 @@ cTemplatePixmap::cTemplatePixmap(void) {
containerHeight = 0;
globals = NULL;
scrolling = false;
+ background = false;
}
cTemplatePixmap::~cTemplatePixmap() {
@@ -171,6 +172,8 @@ bool cTemplatePixmap::CalculateParameters(void) {
}
}
+ background = parameters->GetNumericParameter(ptBackground);
+
return paramsValid;
}
diff --git a/libtemplate/templatepixmap.h b/libtemplate/templatepixmap.h
index 17bf7d3..a5d8f83 100644
--- a/libtemplate/templatepixmap.h
+++ b/libtemplate/templatepixmap.h
@@ -21,6 +21,7 @@ using namespace std;
class cTemplatePixmap {
protected:
bool scrolling;
+ bool background;
cTemplateFunction *parameters;
vector<cTemplateFunction*> functions;
vector<cTemplateFunction*>::iterator funcIt;
@@ -76,6 +77,7 @@ public:
bool DoExecute(void) { return parameters->DoExecute(); };
bool DoDebug(void) { return parameters->DoDebug(); };
bool Ready(void);
+ bool BackgroundArea(void) { return background; };
//Traverse Functions
void InitIterator(void);
cTemplateFunction *GetNextFunction(void);
diff --git a/libtemplate/templateview.c b/libtemplate/templateview.c
index e0cd079..1383ed2 100644
--- a/libtemplate/templateview.c
+++ b/libtemplate/templateview.c
@@ -221,6 +221,14 @@ bool cTemplateView::ExecuteView(eViewElement ve) {
return viewElement->Execute();
}
+bool cTemplateView::DetachViewElement(eViewElement ve) {
+ map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
+ if (hit == viewElements.end())
+ return false;
+ cTemplateViewElement *viewElement = hit->second;
+ return viewElement->Detach();
+}
+
int cTemplateView::GetNumListViewMenuItems(void) {
int numElements = 0;
cTemplateViewList *menuList = GetViewList(vlMenuItem);
@@ -613,6 +621,7 @@ void cTemplateView::SetFunctionDefinitions(void) {
string name = "viewelement";
set<string> attributes;
attributes.insert("debug");
+ attributes.insert("detached");
attributes.insert("delay");
attributes.insert("fadetime");
attributes.insert("name");
@@ -629,6 +638,7 @@ void cTemplateView::SetFunctionDefinitions(void) {
attributes.insert("height");
attributes.insert("layer");
attributes.insert("transparency");
+ attributes.insert("background");
funcsAllowed.insert(pair< string, set<string> >(name, attributes));
name = "areascroll";
diff --git a/libtemplate/templateview.h b/libtemplate/templateview.h
index fa55ba2..51bb4bf 100644
--- a/libtemplate/templateview.h
+++ b/libtemplate/templateview.h
@@ -114,6 +114,7 @@ public:
int GetNumPixmapsViewElement(eViewElement ve);
bool HideView(void);
bool ExecuteView(eViewElement ve);
+ bool DetachViewElement(eViewElement ve);
int GetNumListViewMenuItems(void);
bool GetScalingWindow(cRect &scalingWindow);
map<string,string> GetCustomStringTokens(void) { return globals->GetCustomStringTokens(); };
diff --git a/libtemplate/templateviewelement.c b/libtemplate/templateviewelement.c
index 8c9541a..aae68a8 100644
--- a/libtemplate/templateviewelement.c
+++ b/libtemplate/templateviewelement.c
@@ -124,6 +124,14 @@ bool cTemplateViewElement::Execute(void) {
return parameters->DoExecute();
}
+bool cTemplateViewElement::Detach(void) {
+ if (!parameters)
+ return false;
+ int detached = parameters->GetNumericParameter(ptDetached);
+ if (detached == 1)
+ return true;
+ return false;
+}
bool cTemplateViewElement::DebugTokens(void) {
if (!parameters)
@@ -136,6 +144,7 @@ void cTemplateViewElement::Debug(void) {
esyslog("skindesigner: viewelement container size x: %d, y: %d, width: %d, height %d", containerX, containerY, containerWidth, containerHeight);
if (parameters)
parameters->Debug();
+ return;
for (vector<cTemplatePixmap*>::iterator it = viewPixmaps.begin(); it != viewPixmaps.end(); it++) {
(*it)->Debug();
}
diff --git a/libtemplate/templateviewelement.h b/libtemplate/templateviewelement.h
index 5c7be48..4e4ea00 100644
--- a/libtemplate/templateviewelement.h
+++ b/libtemplate/templateviewelement.h
@@ -107,6 +107,7 @@ public:
cTemplatePixmap *GetNextPixmap(void);
cTemplateFunction *GetFunction(string name);
bool Execute(void);
+ bool Detach(void);
bool DebugTokens(void);
virtual void Debug(void);
};