diff options
-rw-r--r-- | HISTORY | 2 | ||||
-rw-r--r-- | dtd/displaychannel.dtd | 1 | ||||
-rw-r--r-- | dtd/displaymenu.dtd | 1 | ||||
-rw-r--r-- | libtemplate/templatefunction.c | 5 | ||||
-rw-r--r-- | libtemplate/templatefunction.h | 1 | ||||
-rw-r--r-- | libtemplate/templateview.c | 9 | ||||
-rw-r--r-- | libtemplate/templateview.h | 1 | ||||
-rw-r--r-- | libtemplate/templateviewelement.c | 6 | ||||
-rw-r--r-- | libtemplate/templateviewelement.h | 1 | ||||
-rw-r--r-- | skinskeleton/xmlfiles/displaychannel.xml | 3 | ||||
-rw-r--r-- | skinskeleton/xmlfiles/displaymenumain.xml | 3 | ||||
-rw-r--r-- | views/displaychannelview.c | 10 | ||||
-rw-r--r-- | views/displaymenuview.c | 9 | ||||
-rw-r--r-- | views/displayviewelements.c | 5 | ||||
-rw-r--r-- | views/displayviewelements.h | 3 | ||||
-rw-r--r-- | views/viewhelpers.c | 13 | ||||
-rw-r--r-- | views/viewhelpers.h | 2 |
17 files changed, 61 insertions, 14 deletions
@@ -256,3 +256,5 @@ Version 0.3.3 - added Token {percentseen} to listelements in menurecordings. For VDR Version < 2.1.8 {percentseen} is set to -1. - added Token {timers[isremotetimer]} to <timers> in main menu +- added parameter mode to viewelement <devices>. if mode="light" + no signal information will be fetched to improve performance.
\ No newline at end of file diff --git a/dtd/displaychannel.dtd b/dtd/displaychannel.dtd index bb440a6..a98129c 100644 --- a/dtd/displaychannel.dtd +++ b/dtd/displaychannel.dtd @@ -91,6 +91,7 @@ fadetime CDATA #IMPLIED
debug CDATA #IMPLIED
condition CDATA #IMPLIED
+ mode CDATA #IMPLIED
>
<!ELEMENT currentweather (area|areascroll)*>
diff --git a/dtd/displaymenu.dtd b/dtd/displaymenu.dtd index a8aa362..081caa2 100644 --- a/dtd/displaymenu.dtd +++ b/dtd/displaymenu.dtd @@ -82,6 +82,7 @@ fadetime CDATA #IMPLIED
debug CDATA #IMPLIED
condition CDATA #IMPLIED
+ mode CDATA #IMPLIED
>
<!ELEMENT systemload (area|areascroll)*>
diff --git a/libtemplate/templatefunction.c b/libtemplate/templatefunction.c index 9081d23..9cd1861 100644 --- a/libtemplate/templatefunction.c +++ b/libtemplate/templatefunction.c @@ -53,6 +53,8 @@ void cTemplateFunction::SetParameters(vector<pair<string, string> > params) { p.first = ptCond;
} else if (!name.compare("name")) {
p.first = ptName;
+ } else if (!name.compare("mode")) {
+ p.first = ptMode;
} else if (!name.compare("x")) {
p.first = ptX;
} else if (!name.compare("y")) {
@@ -1488,6 +1490,9 @@ string cTemplateFunction::GetParamName(eParamType pt) { case ptName:
name = "Name";
break;
+ case ptMode:
+ name = "Mode";
+ break;
case ptX:
name = "X";
break;
diff --git a/libtemplate/templatefunction.h b/libtemplate/templatefunction.h index 3c7e515..fa2e86a 100644 --- a/libtemplate/templatefunction.h +++ b/libtemplate/templatefunction.h @@ -40,6 +40,7 @@ enum eFuncType { enum eParamType { ptCond, ptName, + ptMode, ptX, ptY, ptWidth, diff --git a/libtemplate/templateview.c b/libtemplate/templateview.c index b20796f..352b6c7 100644 --- a/libtemplate/templateview.c +++ b/libtemplate/templateview.c @@ -229,6 +229,14 @@ bool cTemplateView::DetachViewElement(eViewElement ve) { return viewElement->Detach(); } +string cTemplateView::GetViewElementMode(eViewElement ve) { + map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve); + if (hit == viewElements.end()) + return ""; + cTemplateViewElement *viewElement = hit->second; + return viewElement->GetMode(); +} + int cTemplateView::GetNumListViewMenuItems(void) { int numElements = 0; cTemplateViewList *menuList = GetViewList(vlMenuItem); @@ -626,6 +634,7 @@ void cTemplateView::SetFunctionDefinitions(void) { attributes.insert("fadetime"); attributes.insert("name"); attributes.insert("condition"); + attributes.insert("mode"); funcsAllowed.insert(pair< string, set<string> >(name, attributes)); name = "area"; diff --git a/libtemplate/templateview.h b/libtemplate/templateview.h index 51bb4bf..b1fd17d 100644 --- a/libtemplate/templateview.h +++ b/libtemplate/templateview.h @@ -115,6 +115,7 @@ public: bool HideView(void); bool ExecuteView(eViewElement ve); bool DetachViewElement(eViewElement ve); + string GetViewElementMode(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 aae68a8..5b18de2 100644 --- a/libtemplate/templateviewelement.c +++ b/libtemplate/templateviewelement.c @@ -133,6 +133,12 @@ bool cTemplateViewElement::Detach(void) { return false;
}
+string cTemplateViewElement::GetMode(void) {
+ if (!parameters)
+ return "";
+ return parameters->GetParameter(ptMode);
+}
+
bool cTemplateViewElement::DebugTokens(void) {
if (!parameters)
return false;
diff --git a/libtemplate/templateviewelement.h b/libtemplate/templateviewelement.h index 93ef28a..8293109 100644 --- a/libtemplate/templateviewelement.h +++ b/libtemplate/templateviewelement.h @@ -111,6 +111,7 @@ public: cTemplateFunction *GetFunction(string name);
bool Execute(void);
bool Detach(void);
+ string GetMode(void);
bool DebugTokens(void);
virtual void Debug(void);
};
diff --git a/skinskeleton/xmlfiles/displaychannel.xml b/skinskeleton/xmlfiles/displaychannel.xml index 5c359a7..f7c4d68 100644 --- a/skinskeleton/xmlfiles/displaychannel.xml +++ b/skinskeleton/xmlfiles/displaychannel.xml @@ -107,6 +107,7 @@ </signalqualityback> <!-- Available Variables devices: + signalstrength and -quality are only set if not mode="light" is used in <devices> {numdevices} number of available devices {devices[]} array with available devices {devices[num]} number of current device @@ -124,7 +125,7 @@ {devices[channelid]} ID of the currently tuned channel {devices[source]} source of the currently tuned channel --> - <devices> + <devices mode="full|light"> </devices> <!-- Available Variables currentweather: diff --git a/skinskeleton/xmlfiles/displaymenumain.xml b/skinskeleton/xmlfiles/displaymenumain.xml index f9275cb..37bb151 100644 --- a/skinskeleton/xmlfiles/displaymenumain.xml +++ b/skinskeleton/xmlfiles/displaymenumain.xml @@ -47,6 +47,7 @@ </discusage> <!-- Available Variables devices: + signalstrength and -quality are only set if not mode="light" is used in <devices> {numdevices} number of available devices {devices[]} array with available devices {devices[num]} number of current device @@ -64,7 +65,7 @@ {devices[channelid]} ID of the currently tuned channel {devices[source]} source of the currently tuned channel --> - <devices> + <devices mode="full|light"> </devices> <!-- Available Variables systemload: diff --git a/views/displaychannelview.c b/views/displaychannelview.c index 51bfa6b..425f744 100644 --- a/views/displaychannelview.c +++ b/views/displaychannelview.c @@ -409,11 +409,15 @@ void cDisplayChannelView::DrawDevices(bool initial) { if (!ExecuteViewElement(veDevices)) { return; } - + string mode = tmplView->GetViewElementMode(veDevices); + bool light = false; + if (!mode.compare("light")) { + light = true; + } if (DetachViewElement(veDevices)) { cViewElement *viewElement = GetViewElement(veDevices); if (!viewElement) { - viewElement = new cViewElementDevices(tmplView->GetViewElement(veDevices)); + viewElement = new cViewElementDevices(light, tmplView->GetViewElement(veDevices)); AddViewElement(veDevices, viewElement); viewElement->Start(); } else { @@ -426,7 +430,7 @@ void cDisplayChannelView::DrawDevices(bool initial) { map < string, vector< map< string, string > > > deviceLoopTokens; vector< map< string, string > > devices; - bool changed = SetDevices(initial, &intTokens, &devices); + bool changed = SetDevices(initial, light, &intTokens, &devices); if (!changed) return; diff --git a/views/displaymenuview.c b/views/displaymenuview.c index 31b691a..60f79f5 100644 --- a/views/displaymenuview.c +++ b/views/displaymenuview.c @@ -423,11 +423,16 @@ bool cDisplayMenuMainView::DrawDevices(void) { if (!ExecuteViewElement(veDevices)) { return false; } + string mode = tmplView->GetViewElementMode(veDevices); + bool light = false; + if (!mode.compare("light")) { + light = true; + } bool changed = false; if (DetachViewElement(veDevices)) { cViewElement *viewElement = GetViewElement(veDevices); if (!viewElement) { - viewElement = new cViewElementDevices(tmplView->GetViewElement(veDevices)); + viewElement = new cViewElementDevices(light, tmplView->GetViewElement(veDevices)); AddViewElement(veDevices, viewElement); viewElement->Start(); changed = true; @@ -441,7 +446,7 @@ bool cDisplayMenuMainView::DrawDevices(void) { map < string, vector< map< string, string > > > deviceLoopTokens; vector< map< string, string > > devices; - changed = SetDevices(initial, &intTokens, &devices); + changed = SetDevices(initial, light, &intTokens, &devices); if (!changed) return false; diff --git a/views/displayviewelements.c b/views/displayviewelements.c index 73b4b3b..6a1b2b6 100644 --- a/views/displayviewelements.c +++ b/views/displayviewelements.c @@ -1,6 +1,7 @@ #include "displayviewelements.h" -cViewElementDevices::cViewElementDevices(cTemplateViewElement *tmplViewElement) : cViewElement(tmplViewElement) { +cViewElementDevices::cViewElementDevices(bool light, cTemplateViewElement *tmplViewElement) : cViewElement(tmplViewElement) { + this->light = light; init = true; } @@ -11,7 +12,7 @@ bool cViewElementDevices::Render(void) { if (init) InitDevices(); - bool changed = SetDevices(init, &intTokens, &devices); + bool changed = SetDevices(init, light, &intTokens, &devices); init = false; if (!changed) diff --git a/views/displayviewelements.h b/views/displayviewelements.h index 500be9e..d47350e 100644 --- a/views/displayviewelements.h +++ b/views/displayviewelements.h @@ -8,8 +8,9 @@ class cViewElementDevices : public cViewElement, public cViewHelpers { private: bool init; + bool light; public: - cViewElementDevices(cTemplateViewElement *tmplViewElement); + cViewElementDevices(bool light, cTemplateViewElement *tmplViewElement); virtual ~cViewElementDevices() {}; bool Render(void); }; diff --git a/views/viewhelpers.c b/views/viewhelpers.c index 0e59faa..043f849 100644 --- a/views/viewhelpers.c +++ b/views/viewhelpers.c @@ -43,8 +43,10 @@ void cViewHelpers::InitDevices(void) { devicesInit = true; } -bool cViewHelpers::SetDevices(bool initial, map<string,int> *intTokens, vector<map<string,string> > *devices) { +bool cViewHelpers::SetDevices(bool initial, bool light, map<string,int> *intTokens, vector<map<string,string> > *devices) { if (!initial) { + if (light) + return false; //check if drawing is necessary bool changed = false; for (int i = 0; i < numDevices; i++) { @@ -105,11 +107,16 @@ bool cViewHelpers::SetDevices(bool initial, map<string,int> *intTokens, vector<m } else { deviceVals.insert(pair< string, string >("devices[hascam]", "0")); } - int signalStrength = device->SignalStrength(); - int signalQuality = device->SignalQuality(); stringstream strCamNumber; strCamNumber << camNumber; deviceVals.insert(pair< string, string >("devices[cam]", strCamNumber.str())); + + int signalStrength = 0; + int signalQuality = 0; + if (!light) { + signalStrength = device->SignalStrength(); + signalQuality = device->SignalQuality(); + } stringstream strStrength; strStrength << signalStrength; deviceVals.insert(pair< string, string >("devices[signalstrength]", strStrength.str())); diff --git a/views/viewhelpers.h b/views/viewhelpers.h index 3e8fb1d..e4c0d12 100644 --- a/views/viewhelpers.h +++ b/views/viewhelpers.h @@ -21,7 +21,7 @@ private: void SetCurrentScheduleFromRecording(const cRecording *recording, map < string, string > &stringTokens, map < string, int > &intTokens); protected: void InitDevices(void); - bool SetDevices(bool initial, map<string,int> *intTokens, vector<map<string,string> > *devices); + bool SetDevices(bool initial, bool light, map<string,int> *intTokens, vector<map<string,string> > *devices); bool SetSignal(map < string, int > &intTokens); bool CheckNewMails(void); void SetScraperTokens(const cEvent *event, const cRecording *recording, map < string, string > &stringTokens, map < string, int > &intTokens, map < string, vector< map< string, string > > > &loopTokens); |