diff options
| author | louis <louis.braun@gmx.de> | 2015-07-07 17:58:10 +0200 |
|---|---|---|
| committer | louis <louis.braun@gmx.de> | 2015-07-07 17:58:10 +0200 |
| commit | 5a6fb850b35bc63325cac482daaa70b00b0e8e8b (patch) | |
| tree | c46bea143641a4a0f4461b971ae2cd03e10ac76b /views | |
| parent | 50fe393724a265341b1745dd401db9d93f46f354 (diff) | |
| download | vdr-plugin-skindesigner-5a6fb850b35bc63325cac482daaa70b00b0e8e8b.tar.gz vdr-plugin-skindesigner-5a6fb850b35bc63325cac482daaa70b00b0e8e8b.tar.bz2 | |
immplemented areacontainers to group areas
Diffstat (limited to 'views')
| -rw-r--r-- | views/view.c | 353 | ||||
| -rw-r--r-- | views/view.h | 3 | ||||
| -rw-r--r-- | views/viewhelpers.c | 6 | ||||
| -rw-r--r-- | views/viewhelpers.h | 1 |
4 files changed, 225 insertions, 138 deletions
diff --git a/views/view.c b/views/view.c index 98fe38e..c6111c5 100644 --- a/views/view.c +++ b/views/view.c @@ -130,68 +130,91 @@ void cView::DrawViewElement(eViewElement ve, map <string,string> *stringTokens, int pixCurrent = viewElement->GetPixOffset();
if (pixCurrent < 0)
return;
- viewElement->InitIterator();
- cTemplatePixmap *pix = NULL;
- while(pix = viewElement->GetNextPixmap()) {
- //check if already drawn background area, this can be skipped
- if (PixmapExists(pixCurrent) && pix->BackgroundArea()) {
- pixCurrent++;
- continue;
- }
- //reset Template
- pix->ClearDynamicParameters();
- //create Pixmap if already fully parsed
- if (!PixmapExists(pixCurrent) && pix->Ready() && pix->DoExecute() && !pix->Scrolling()) {
- CreateViewPixmap(pixCurrent, pix);
- }
- //check if pixmap needs dynamic parameters
- if ((!pix->Ready() || !pix->DoExecute()) && !pix->Scrolling()) {
- //parse dynamic parameters and initiate functions
- pix->ParseDynamicParameters(stringTokens, intTokens, true);
- if (pix->Ready() && pix->DoExecute()) {
- CreateViewPixmap(pixCurrent, pix);
- }
+ viewElement->InitPixmapNodeIterator();
+ cTemplatePixmapNode *pixNode = NULL;
+ while(pixNode = viewElement->GetNextPixmapNode()) {
+ cTemplatePixmap *pix = dynamic_cast<cTemplatePixmap*>(pixNode);
+ if (pix) {
+ bool draw = PreparePixmap(ve, pixCurrent, pix, stringTokens, intTokens, loopTokens);
+ if (draw)
+ DrawPixmap(pixCurrent, pix, loopTokens);
+ pixCurrent++;
} else {
- //parse dynamic parameters but not initiate functions
- pix->ParseDynamicParameters(stringTokens, intTokens, false);
- }
- //if pixmap still not valid, skip
- if (!pix->Ready() && !pix->Scrolling()) {
- pixCurrent++;
- continue;
- }
- //if condition for pixmap set, check if cond is true
- if (!pix->DoExecute()) {
- pixCurrent++;
- continue;
- }
- //parse dynamic tokens of pixmap functions
- pix->ClearDynamicFunctionParameters();
- pix->ParseDynamicFunctionParameters(stringTokens, intTokens, loopTokens);
-
- if (!PixmapExists(pixCurrent) && pix->Scrolling()) {
- cSize drawportSize;
- scrolling = pix->CalculateDrawPortSize(drawportSize, loopTokens);
- if (scrolling) {
- CreateScrollingPixmap(pixCurrent, pix, drawportSize);
- pix->SetScrollingTextWidth();
- veScroll = ve;
- scrollingPix = pixCurrent;
- scrollOrientation = pix->GetNumericParameter(ptOrientation);
- scrollMode = pix->GetNumericParameter(ptScrollMode);
- scrollDelay = pix->GetNumericParameter(ptDelay);
- scrollSpeed = pix->GetNumericParameter(ptScrollSpeed);
- } else {
- CreateViewPixmap(pixCurrent, pix);
+ cTemplatePixmapContainer *pixContainer = dynamic_cast<cTemplatePixmapContainer*>(pixNode);
+ pixContainer->ParseDynamicParameters(stringTokens, intTokens);
+ if (pixContainer->DoDebug()) {
+ pixContainer->Debug();
+ }
+ if (!pixContainer->DoExecute()) {
+ pixCurrent += pixContainer->NumPixmaps();
+ continue;
+ }
+ pixContainer->InitIterator();
+ cTemplatePixmap *pix = NULL;
+ while (pix = pixContainer->GetNextPixmap()) {
+ bool draw = PreparePixmap(ve, pixCurrent, pix, stringTokens, intTokens, loopTokens);
+ if (draw)
+ DrawPixmap(pixCurrent, pix, loopTokens);
+ pixCurrent++;
}
}
- if (pix->DoDebug()) {
- pix->Debug();
+ }
+}
+
+bool cView::PreparePixmap(eViewElement ve, int num, cTemplatePixmap *pix, map <string,string> *stringTokens, map <string,int> *intTokens, map < string, vector< map< string, string > > > *loopTokens) {
+ //check if already drawn background area, this can be skipped
+ if (PixmapExists(num) && pix->BackgroundArea()) {
+ return false;
+ }
+ //reset Template
+ pix->ClearDynamicParameters();
+ //create Pixmap if already fully parsed
+ if (!PixmapExists(num) && pix->Ready() && pix->DoExecute() && !pix->Scrolling()) {
+ CreateViewPixmap(num, pix);
+ }
+ //check if pixmap needs dynamic parameters
+ if ((!pix->Ready() || !pix->DoExecute()) && !pix->Scrolling()) {
+ //parse dynamic parameters and initiate functions
+ pix->ParseDynamicParameters(stringTokens, intTokens, true);
+ if (pix->Ready() && pix->DoExecute()) {
+ CreateViewPixmap(num, pix);
}
-
- DrawPixmap(pixCurrent, pix, loopTokens);
- pixCurrent++;
+ } else {
+ //parse dynamic parameters but not initiate functions
+ pix->ParseDynamicParameters(stringTokens, intTokens, false);
+ }
+ //if pixmap still not valid, skip
+ if (!pix->Ready() && !pix->Scrolling()) {
+ return false;
}
+ //if condition for pixmap set, check if cond is true
+ if (!pix->DoExecute()) {
+ return false;
+ }
+ //parse dynamic tokens of pixmap functions
+ pix->ClearDynamicFunctionParameters();
+ pix->ParseDynamicFunctionParameters(stringTokens, intTokens, loopTokens);
+
+ if (!PixmapExists(num) && pix->Scrolling()) {
+ cSize drawportSize;
+ scrolling = pix->CalculateDrawPortSize(drawportSize, loopTokens);
+ if (scrolling) {
+ CreateScrollingPixmap(num, pix, drawportSize);
+ pix->SetScrollingTextWidth();
+ veScroll = ve;
+ scrollingPix = num;
+ scrollOrientation = pix->GetNumericParameter(ptOrientation);
+ scrollMode = pix->GetNumericParameter(ptScrollMode);
+ scrollDelay = pix->GetNumericParameter(ptDelay);
+ scrollSpeed = pix->GetNumericParameter(ptScrollSpeed);
+ } else {
+ CreateViewPixmap(num, pix);
+ }
+ }
+ if (pix->DoDebug()) {
+ pix->Debug();
+ }
+ return true;
}
void cView::ClearViewElement(eViewElement ve) {
@@ -217,7 +240,7 @@ void cView::ClearViewElement(eViewElement ve) { if (pixCurrent < 0)
return;
cTemplatePixmap *pix = NULL;
- viewElement->InitIterator();
+ viewElement->InitPixmapIterator();
while(pix = viewElement->GetNextPixmap()) {
if (!pix->BackgroundArea()) {
Fill(pixCurrent, clrTransparent);
@@ -237,7 +260,7 @@ void cView::DestroyViewElement(eViewElement ve) { if (pixCurrent < 0)
return;
cTemplatePixmap *pix = NULL;
- viewElement->InitIterator();
+ viewElement->InitPixmapIterator();
while(pix = viewElement->GetNextPixmap()) {
DestroyPixmap(pixCurrent);
pixCurrent++;
@@ -299,7 +322,7 @@ void cView::ActivateScrolling(void) { int pixCurrent = scrollViewElement->GetPixOffset();
if (pixCurrent < 0)
return;
- scrollViewElement->InitIterator();
+ scrollViewElement->InitPixmapIterator();
cTemplatePixmap *pix = NULL;
while(pix = scrollViewElement->GetNextPixmap()) {
DrawPixmap(pixCurrent, pix);
@@ -376,7 +399,7 @@ void cView::CreateScrollingPixmap(int num, cTemplatePixmap *pix, cSize &drawport }
void cView::DrawPixmap(int num, cTemplatePixmap *pix, map < string, vector< map< string, string > > > *loopTokens, bool flushPerLoop) {
- pix->InitIterator();
+ pix->InitFunctionIterator();
cTemplateFunction *func = NULL;
while(func = pix->GetNextFunction()) {
eFuncType type = func->GetType();
@@ -1200,61 +1223,88 @@ cRect cViewListItem::DrawListItem(map <string,string> *stringTokens, map <string DebugTokens("ListItem", stringTokens, intTokens);
}
- tmplViewElement->InitIterator();
- cTemplatePixmap *pix = NULL;
+ tmplViewElement->InitPixmapIterator();
int pixCurrent = 0;
-
- while(pix = tmplViewElement->GetNextPixmap()) {
- SetListElementPosition(pix);
- if (pixCurrent == 0) {
- posItem = pix->GetPixmapSize();
- }
- if (!PixmapExists(pixCurrent)) {
- pix->ParseDynamicParameters(stringTokens, intTokens, true);
+ cTemplatePixmapNode *pixNode = NULL;
+ while(pixNode = tmplViewElement->GetNextPixmapNode()) {
+ cTemplatePixmap *pix = dynamic_cast<cTemplatePixmap*>(pixNode);
+ if (pix) {
+ SetListElementPosition(pix);
+ if (pixCurrent == 0) {
+ posItem = pix->GetPixmapSize();
+ }
+ bool draw = PrepareListItemPixmap(pixCurrent, pix, stringTokens, intTokens);
+ if (draw) {
+ DrawPixmap(pixCurrent, pix);
+ }
+ pixCurrent++;
} else {
- pix->ParseDynamicParameters(stringTokens, intTokens, false);
- }
- if (!PixmapExists(pixCurrent) && pix->Ready() && pix->DoExecute() && !pix->Scrolling()) {
- CreateViewPixmap(pixCurrent, pix);
- }
- //if pixmap still not valid, skip
- if (!pix->Ready() && !pix->Scrolling()) {
- pixCurrent++;
- continue;
- }
- //if condition for pixmap set, check if cond is true
- if (!pix->DoExecute()) {
- pixCurrent++;
- continue;
- }
-
- pix->ClearDynamicFunctionParameters();
- pix->ParseDynamicFunctionParameters(stringTokens, intTokens, NULL);
-
- if (!PixmapExists(pixCurrent) && pix->Scrolling()) {
- cSize drawportSize;
- scrolling = pix->CalculateDrawPortSize(drawportSize);
- pix->SetScrollingTextWidth();
- if (scrolling) {
- CreateScrollingPixmap(pixCurrent, pix, drawportSize);
- scrollingPix = pixCurrent;
- scrollOrientation = pix->GetNumericParameter(ptOrientation);
- scrollMode = pix->GetNumericParameter(ptScrollMode);
- scrollDelay = pix->GetNumericParameter(ptDelay);
- scrollSpeed = pix->GetNumericParameter(ptScrollSpeed);
- } else {
- CreateViewPixmap(pixCurrent, pix);
+ cTemplatePixmapContainer *pixContainer = dynamic_cast<cTemplatePixmapContainer*>(pixNode);
+ pixContainer->ParseDynamicParameters(stringTokens, intTokens);
+ if (pixContainer->DoDebug()) {
+ pixContainer->Debug();
+ }
+ if (!pixContainer->DoExecute()) {
+ pixCurrent += pixContainer->NumPixmaps();
+ continue;
+ }
+ pixContainer->InitIterator();
+ cTemplatePixmap *pix = NULL;
+ while (pix = pixContainer->GetNextPixmap()) {
+ SetListElementPosition(pix);
+ bool draw = PrepareListItemPixmap(pixCurrent, pix, stringTokens, intTokens);
+ if (draw) {
+ DrawPixmap(pixCurrent, pix);
+ }
+ pixCurrent++;
}
}
- if (pix->DoDebug()) {
- pix->Debug();
- }
- DrawPixmap(pixCurrent, pix);
- pixCurrent++;
}
return posItem;
}
+bool cViewListItem::PrepareListItemPixmap(int num, cTemplatePixmap *pix, map <string,string> *stringTokens, map <string,int> *intTokens) {
+ if (!PixmapExists(num)) {
+ pix->ParseDynamicParameters(stringTokens, intTokens, true);
+ } else {
+ pix->ParseDynamicParameters(stringTokens, intTokens, false);
+ }
+ if (!PixmapExists(num) && pix->Ready() && pix->DoExecute() && !pix->Scrolling()) {
+ CreateViewPixmap(num, pix);
+ }
+ //if pixmap still not valid, skip
+ if (!pix->Ready() && !pix->Scrolling()) {
+ return false;
+ }
+ //if condition for pixmap set, check if cond is true
+ if (!pix->DoExecute()) {
+ return false;
+ }
+
+ pix->ClearDynamicFunctionParameters();
+ pix->ParseDynamicFunctionParameters(stringTokens, intTokens, NULL);
+
+ if (!PixmapExists(num) && pix->Scrolling()) {
+ cSize drawportSize;
+ scrolling = pix->CalculateDrawPortSize(drawportSize);
+ pix->SetScrollingTextWidth();
+ if (scrolling) {
+ CreateScrollingPixmap(num, pix, drawportSize);
+ scrollingPix = num;
+ scrollOrientation = pix->GetNumericParameter(ptOrientation);
+ scrollMode = pix->GetNumericParameter(ptScrollMode);
+ scrollDelay = pix->GetNumericParameter(ptDelay);
+ scrollSpeed = pix->GetNumericParameter(ptScrollSpeed);
+ } else {
+ CreateViewPixmap(num, pix);
+ }
+ }
+ if (pix->DoDebug()) {
+ pix->Debug();
+ }
+ return true;
+}
+
void cViewListItem::ClearListItem(void) {
int pixMax = NumPixmaps();
for (int pixCurrent = 0; pixCurrent < pixMax; pixCurrent++) {
@@ -1352,7 +1402,7 @@ void cGrid::SetCurrent(bool current) { void cGrid::Move(void) {
if (!tmplViewElement)
return;
- tmplViewElement->InitIterator();
+ tmplViewElement->InitPixmapIterator();
cTemplatePixmap *pix = NULL;
int pixCurrent = 0;
@@ -1374,42 +1424,73 @@ void cGrid::Draw(void) { DebugTokens("Grid", &stringTokens, &intTokens);
}
- tmplViewElement->InitIterator();
- cTemplatePixmap *pix = NULL;
+ tmplViewElement->InitPixmapIterator();
int pixCurrent = 0;
-
- while(pix = tmplViewElement->GetNextPixmap()) {
- PositionPixmap(pix);
- if (!PixmapExists(pixCurrent)) {
- pix->ParseDynamicParameters(&stringTokens, &intTokens, true);
- } else {
- pix->ParseDynamicParameters(&stringTokens, &intTokens, false);
- }
- if (!PixmapExists(pixCurrent) && pix->Ready() && pix->DoExecute() && !pix->Scrolling()) {
- CreateViewPixmap(pixCurrent, pix);
- }
- //if pixmap still not valid, skip
- if (!pix->Ready() && !pix->Scrolling()) {
- pixCurrent++;
- continue;
- }
- //if condition for pixmap set, check if cond is true
- if (!pix->DoExecute()) {
+ cTemplatePixmapNode *pixNode = NULL;
+ while(pixNode = tmplViewElement->GetNextPixmapNode()) {
+ cTemplatePixmap *pix = dynamic_cast<cTemplatePixmap*>(pixNode);
+ if (pix) {
+ PositionPixmap(pix);
+ bool draw = PrepareGridPixmap(pixCurrent, pix);
+ if (pix->DoDebug())
+ pix->Debug();
+ if (draw) {
+ DrawPixmap(pixCurrent, pix);
+ }
pixCurrent++;
- continue;
+ } else {
+ cTemplatePixmapContainer *pixContainer = dynamic_cast<cTemplatePixmapContainer*>(pixNode);
+ pixContainer->ParseDynamicParameters(&stringTokens, &intTokens);
+ if (pixContainer->DoDebug()) {
+ pixContainer->Debug();
+ }
+ if (!pixContainer->DoExecute()) {
+ pixCurrent += pixContainer->NumPixmaps();
+ continue;
+ }
+ pixContainer->InitIterator();
+ cTemplatePixmap *pix = NULL;
+ while (pix = pixContainer->GetNextPixmap()) {
+ PositionPixmap(pix);
+ bool draw = PrepareGridPixmap(pixCurrent, pix);
+ if (pix->DoDebug())
+ pix->Debug();
+ if (draw) {
+ DrawPixmap(pixCurrent, pix);
+ }
+ pixCurrent++;
+ }
+
+
}
-
- pix->ClearDynamicFunctionParameters();
- pix->ParseDynamicFunctionParameters(&stringTokens, &intTokens, NULL);
- //pix->Debug();
- DrawPixmap(pixCurrent, pix);
- pixCurrent++;
}
dirty = false;
resized = false;
moved = false;
}
+bool cGrid::PrepareGridPixmap(int num, cTemplatePixmap *pix) {
+ if (!PixmapExists(num)) {
+ pix->ParseDynamicParameters(&stringTokens, &intTokens, true);
+ } else {
+ pix->ParseDynamicParameters(&stringTokens, &intTokens, false);
+ }
+ if (!PixmapExists(num) && pix->Ready() && pix->DoExecute() && !pix->Scrolling()) {
+ CreateViewPixmap(num, pix);
+ }
+ //if pixmap still not valid, skip
+ if (!pix->Ready() && !pix->Scrolling()) {
+ return false;
+ }
+ //if condition for pixmap set, check if cond is true
+ if (!pix->DoExecute()) {
+ return false;
+ }
+ pix->ClearDynamicFunctionParameters();
+ pix->ParseDynamicFunctionParameters(&stringTokens, &intTokens, NULL);
+ return true;
+}
+
void cGrid::Clear(void) {
int pixMax = NumPixmaps();
for (int pixCurrent = 0; pixCurrent < pixMax; pixCurrent++) {
diff --git a/views/view.h b/views/view.h index ccdc14c..8211028 100644 --- a/views/view.h +++ b/views/view.h @@ -56,6 +56,7 @@ protected: int scrollSpeed;
int animCat;
void DrawViewElement(eViewElement ve, map <string,string> *stringTokens = NULL, map <string,int> *intTokens = NULL, map < string, vector< map< string, string > > > *loopTokens = NULL);
+ bool PreparePixmap(eViewElement ve, int num, cTemplatePixmap *pix, map <string,string> *stringTokens, map <string,int> *intTokens, map < string, vector< map< string, string > > > *loopTokens);
void ClearViewElement(eViewElement ve);
void DestroyViewElement(eViewElement ve);
void DestroyDetachedViewElement(eViewElement ve);
@@ -112,6 +113,7 @@ protected: int align;
int listOrientation;
void SetListElementPosition(cTemplatePixmap *pix);
+ bool PrepareListItemPixmap(int num, cTemplatePixmap *pix, map <string,string> *stringTokens, map <string,int> *intTokens);
public:
cViewListItem(cTemplateViewElement *tmplItem);
virtual ~cViewListItem();
@@ -132,6 +134,7 @@ protected: map <string,string> stringTokens;
map <string,int> intTokens;
void PositionPixmap(cTemplatePixmap *pix);
+ bool PrepareGridPixmap(int num, cTemplatePixmap *pix);
public:
cGrid(cTemplateViewElement *tmplGrid);
virtual ~cGrid();
diff --git a/views/viewhelpers.c b/views/viewhelpers.c index 8643753..972c607 100644 --- a/views/viewhelpers.c +++ b/views/viewhelpers.c @@ -221,7 +221,8 @@ bool cViewHelpers::SetSystemMemory(bool forced, stringmap &stringTokens, intmap bool cViewHelpers::SetSystemTemperatures(bool forced, stringmap &stringTokens, intmap &intTokens) { cString execCommand = cString::sprintf("cd \"%s/\"; \"%s/temperatures\"", SCRIPTFOLDER, SCRIPTFOLDER); - system(*execCommand); + int ok = system(*execCommand); + if (ok) {} string tempCPU, tempGPU; int cpu, gpu; @@ -261,7 +262,8 @@ bool cViewHelpers::SetSystemTemperatures(bool forced, stringmap &stringTokens, i bool cViewHelpers::SetVDRStats(bool forced, stringmap &stringTokens, intmap &intTokens) { cString execCommand = cString::sprintf("cd \"%s/\"; \"%s/vdrstats\"", SCRIPTFOLDER, SCRIPTFOLDER); - system(*execCommand); + int ok = system(*execCommand); + if (ok) {} string vdrCPU = ""; string vdrMEM = ""; diff --git a/views/viewhelpers.h b/views/viewhelpers.h index c66b6f6..7dc191e 100644 --- a/views/viewhelpers.h +++ b/views/viewhelpers.h @@ -5,6 +5,7 @@ typedef map<string,string> stringmap; typedef map<string,int> intmap; +typedef pair<string,string> stringpair; class cViewHelpers { private: |
