summaryrefslogtreecommitdiff
path: root/views
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2015-05-10 12:55:23 +0200
committerlouis <louis.braun@gmx.de>2015-05-10 12:55:23 +0200
commit28743412fed4d9d59100c38f4def327122ed0e2c (patch)
treeabfca0011e69b0e39973de807b2b3e99ff7936bb /views
parentc5edc10fbd57d17e774a07b659996bdffe16242c (diff)
downloadvdr-plugin-skindesigner-28743412fed4d9d59100c38f4def327122ed0e2c.tar.gz
vdr-plugin-skindesigner-28743412fed4d9d59100c38f4def327122ed0e2c.tar.bz2
expanded shifting features
Diffstat (limited to 'views')
-rw-r--r--views/displayaudiotracksview.c8
-rw-r--r--views/displayaudiotracksview.h1
-rw-r--r--views/displaychannelview.c30
-rw-r--r--views/displaychannelview.h1
-rw-r--r--views/displaymenuitemview.c3
-rw-r--r--views/displaymenurootview.c79
-rw-r--r--views/displaymenuview.c113
-rw-r--r--views/displaymessageview.c8
-rw-r--r--views/displaymessageview.h2
-rw-r--r--views/displayreplayview.c8
-rw-r--r--views/displayreplayview.h1
-rw-r--r--views/displayviewelements.c136
-rw-r--r--views/displayviewelements.h74
-rw-r--r--views/displayvolumeview.c8
-rw-r--r--views/displayvolumeview.h1
-rw-r--r--views/view.c51
-rw-r--r--views/view.h13
-rw-r--r--views/viewhelpers.c493
-rw-r--r--views/viewhelpers.h40
19 files changed, 507 insertions, 563 deletions
diff --git a/views/displayaudiotracksview.c b/views/displayaudiotracksview.c
index c97bc5e..f2f6a32 100644
--- a/views/displayaudiotracksview.c
+++ b/views/displayaudiotracksview.c
@@ -4,7 +4,6 @@
cDisplayAudiotracksView::cDisplayAudiotracksView(int numTracks, cTemplateView *tmplView) : cView(tmplView) {
DeleteOsdOnExit();
- SetFadeTime(tmplView->GetNumericParameter(ptFadeTime));
this->numTracks = numTracks;
@@ -70,10 +69,3 @@ void cDisplayAudiotracksView::RenderMenuItems(void) {
if (listView)
listView->Render();
}
-
-void cDisplayAudiotracksView::Action(void) {
- SetInitFinished();
- FadeIn();
- DoFlush();
- cView::Action();
-}
diff --git a/views/displayaudiotracksview.h b/views/displayaudiotracksview.h
index 3414d66..1a2e4c0 100644
--- a/views/displayaudiotracksview.h
+++ b/views/displayaudiotracksview.h
@@ -8,7 +8,6 @@ class cDisplayAudiotracksView : public cView {
protected:
int numTracks;
cDisplayMenuListView *listView;
- virtual void Action(void);
public:
cDisplayAudiotracksView(int numTracks, cTemplateView *tmplView);
virtual ~cDisplayAudiotracksView();
diff --git a/views/displaychannelview.c b/views/displaychannelview.c
index a189429..bcb7ad8 100644
--- a/views/displaychannelview.c
+++ b/views/displaychannelview.c
@@ -15,7 +15,6 @@ cDisplayChannelView::cDisplayChannelView(cTemplateView *tmplView) : cView(tmplVi
lastTrackLang = "";
InitDevices();
DeleteOsdOnExit();
- SetFadeTime(tmplView->GetNumericParameter(ptFadeTime));
}
cDisplayChannelView::~cDisplayChannelView() {
@@ -61,11 +60,11 @@ void cDisplayChannelView::DrawDate(void) {
if (!ExecuteViewElement(veDateTime)) {
return;
}
-
if (DetachViewElement(veDateTime)) {
cViewElement *viewElement = GetViewElement(veDateTime);
if (!viewElement) {
- viewElement = new cViewElementDate(tmplView->GetViewElement(veDateTime));
+ viewElement = new cViewElement(tmplView->GetViewElement(veDateTime), this);
+ viewElement->SetCallback(veDateTime, &cDisplayChannelView::SetDate);
AddViewElement(veDateTime, viewElement);
viewElement->Start();
} else {
@@ -89,11 +88,11 @@ void cDisplayChannelView::DrawTime(void) {
if (!ExecuteViewElement(veTime)) {
return;
}
-
if (DetachViewElement(veTime)) {
cViewElement *viewElement = GetViewElement(veTime);
if (!viewElement) {
- viewElement = new cViewElementTime(tmplView->GetViewElement(veTime));
+ viewElement = new cViewElement(tmplView->GetViewElement(veTime), this);
+ viewElement->SetCallback(veTime, &cDisplayChannelView::SetTime);
AddViewElement(veTime, viewElement);
viewElement->Start();
} else {
@@ -386,7 +385,8 @@ void cDisplayChannelView::DrawSignal(void) {
if (DetachViewElement(veSignalQuality)) {
cViewElement *viewElement = GetViewElement(veSignalQuality);
if (!viewElement) {
- viewElement = new cViewElementSignal(tmplView->GetViewElement(veSignalQuality));
+ viewElement = new cViewElement(tmplView->GetViewElement(veSignalQuality), this);
+ viewElement->SetCallback(veSignalQuality, &cDisplayChannelView::SetSignal);
AddViewElement(veSignalQuality, viewElement);
viewElement->Start();
} else {
@@ -397,7 +397,7 @@ void cDisplayChannelView::DrawSignal(void) {
map < string, string > stringTokens;
map < string, int > intTokens;
- bool changed = SetSignal(intTokens);
+ bool changed = SetSignal(false, stringTokens, intTokens);
if (!changed)
return;
@@ -559,7 +559,8 @@ void cDisplayChannelView::DrawCurrentWeather(void) {
if (DetachViewElement(veCurrentWeather)) {
cViewElement *viewElement = GetViewElement(veCurrentWeather);
if (!viewElement) {
- viewElement = new cViewElementWeather(tmplView->GetViewElement(veCurrentWeather));
+ viewElement = new cViewElement(tmplView->GetViewElement(veCurrentWeather), this);
+ viewElement->SetCallback(veCurrentWeather, &cDisplayChannelView::SetCurrentWeatherTokens);
AddViewElement(veCurrentWeather, viewElement);
viewElement->Start();
} else {
@@ -569,19 +570,10 @@ void cDisplayChannelView::DrawCurrentWeather(void) {
} else {
map < string, string > stringTokens;
map < string, int > intTokens;
- if (!SetCurrentWeatherTokens(stringTokens, intTokens)){
- ClearViewElement(veCurrentWeather);
+ ClearViewElement(veCurrentWeather);
+ if (!SetCurrentWeatherTokens(false, stringTokens, intTokens)){
return;
}
- ClearViewElement(veCurrentWeather);
DrawViewElement(veCurrentWeather, &stringTokens, &intTokens);
}
}
-
-
-void cDisplayChannelView::Action(void) {
- SetInitFinished();
- FadeIn();
- DoFlush();
- cView::Action();
-}
diff --git a/views/displaychannelview.h b/views/displaychannelview.h
index f533e1c..068b27a 100644
--- a/views/displaychannelview.h
+++ b/views/displaychannelview.h
@@ -14,7 +14,6 @@ private:
string lastTracDesc;
string lastTrackLang;
string GetChannelSep(const cChannel *channel, bool prev);
- virtual void Action(void);
public:
cDisplayChannelView(cTemplateView *tmplView);
virtual ~cDisplayChannelView();
diff --git a/views/displaymenuitemview.c b/views/displaymenuitemview.c
index acfee64..b9bce04 100644
--- a/views/displaymenuitemview.c
+++ b/views/displaymenuitemview.c
@@ -322,6 +322,7 @@ cDisplayMenuItemSchedulesView::cDisplayMenuItemSchedulesView(cTemplateViewList *
eMenuCategory cat, bool isEpgSearchFav, bool current, bool selectable)
: cDisplayMenuItemView(tmplList, current, selectable) {
this->event = event;
+ esyslog("skindesigner: constructor cDisplayMenuItemSchedulesView event %s", event->Title());
this->channel = channel;
this->timerMatch = timerMatch;
this->cat = cat;
@@ -354,6 +355,7 @@ void cDisplayMenuItemSchedulesView::SetTokens(void) {
}
if (event) {
+ esyslog("skindesigner: setting Tokens for event %s", event->Title());
if (selectable) {
stringTokens.insert(pair<string,string>("title", event->Title() ? event->Title() : ""));
stringTokens.insert(pair<string,string>("shorttext", event->ShortText() ? event->ShortText() : ""));
@@ -408,7 +410,6 @@ void cDisplayMenuItemSchedulesView::Prepare(void) {
}
void cDisplayMenuItemSchedulesView::Render(void) {
-
DrawListItem(&stringTokens, &intTokens);
if (current) {
diff --git a/views/displaymenurootview.c b/views/displaymenurootview.c
index a29f56d..74e805f 100644
--- a/views/displaymenurootview.c
+++ b/views/displaymenurootview.c
@@ -35,7 +35,6 @@ cDisplayMenuRootView::cDisplayMenuRootView(cTemplateView *rootView) : cView(root
defaultMessageDrawn = false;
defaultSortmodeDrawn = false;
DeleteOsdOnExit();
- SetFadeTime(tmplView->GetNumericParameter(ptFadeTime));
}
cDisplayMenuRootView::~cDisplayMenuRootView() {
@@ -518,11 +517,23 @@ void cDisplayMenuRootView::DrawHeader(void) {
if (!ExecuteViewElement(veHeader)) {
return;
}
- map < string, string > stringTokens;
- map < string, int > intTokens;
- SetMenuHeader(cat, menuTitle, stringTokens, intTokens);
- ClearViewElement(veHeader);
- DrawViewElement(veHeader, &stringTokens, &intTokens);
+ if (DetachViewElement(veHeader)) {
+ cViewElement *viewElement = GetViewElement(veHeader);
+ if (!viewElement) {
+ viewElement = new cViewElementMenuHeader(tmplView->GetViewElement(veHeader), cat, menuTitle);
+ AddViewElement(veHeader, viewElement);
+ viewElement->Start();
+ } else {
+ if (!viewElement->Starting())
+ viewElement->Render();
+ }
+ } else {
+ map < string, string > stringTokens;
+ map < string, int > intTokens;
+ SetMenuHeader(cat, menuTitle, stringTokens, intTokens);
+ ClearViewElement(veHeader);
+ DrawViewElement(veHeader, &stringTokens, &intTokens);
+ }
}
void cDisplayMenuRootView::DrawDateTime(bool forced) {
@@ -530,15 +541,26 @@ void cDisplayMenuRootView::DrawDateTime(bool forced) {
return;
}
- map < string, string > stringTokens;
- map < string, int > intTokens;
-
- if (!SetDate(forced, stringTokens, intTokens)) {
- return;
+ if (DetachViewElement(veDateTime)) {
+ cViewElement *viewElement = GetViewElement(veDateTime);
+ if (!viewElement) {
+ viewElement = new cViewElement(tmplView->GetViewElement(veDateTime), this);
+ viewElement->SetCallback(veDateTime, &cDisplayMenuRootView::SetDate);
+ AddViewElement(veDateTime, viewElement);
+ viewElement->Start();
+ } else {
+ if (!viewElement->Starting())
+ viewElement->Render();
+ }
+ } else {
+ map < string, string > stringTokens;
+ map < string, int > intTokens;
+
+ if (!SetDate(forced, stringTokens, intTokens))
+ return;
+ ClearViewElement(veDateTime);
+ DrawViewElement(veDateTime, &stringTokens, &intTokens);
}
-
- ClearViewElement(veDateTime);
- DrawViewElement(veDateTime, &stringTokens, &intTokens);
}
bool cDisplayMenuRootView::DrawTime(bool forced) {
@@ -546,15 +568,30 @@ bool cDisplayMenuRootView::DrawTime(bool forced) {
return false;
}
- map < string, string > stringTokens;
- map < string, int > intTokens;
+ if (DetachViewElement(veTime)) {
+ cViewElement *viewElement = GetViewElement(veTime);
+ if (!viewElement) {
+ viewElement = new cViewElement(tmplView->GetViewElement(veTime), this);
+ viewElement->SetCallback(veTime, &cDisplayMenuRootView::SetTime);
+ AddViewElement(veTime, viewElement);
+ viewElement->Start();
+ } else {
+ if (!viewElement->Starting())
+ if (!viewElement->Render())
+ return false;
+ }
+ } else {
- if (!SetTime(forced, stringTokens, intTokens)) {
- return false;
- }
+ map < string, string > stringTokens;
+ map < string, int > intTokens;
+
+ if (!SetTime(forced, stringTokens, intTokens)) {
+ return false;
+ }
- ClearViewElement(veTime);
- DrawViewElement(veTime, &stringTokens, &intTokens);
+ ClearViewElement(veTime);
+ DrawViewElement(veTime, &stringTokens, &intTokens);
+ }
return true;
}
diff --git a/views/displaymenuview.c b/views/displaymenuview.c
index 16492b5..5a08844 100644
--- a/views/displaymenuview.c
+++ b/views/displaymenuview.c
@@ -8,9 +8,7 @@
#include "../services/scraper2vdr.h"
cDisplayMenuView::cDisplayMenuView(cTemplateView *tmplView, bool menuInit) : cView(tmplView) {
- if (menuInit)
- SetFadeTime(tmplView->GetNumericParameter(ptFadeTime));
- else
+ if (!menuInit)
SetFadeTime(0);
cat = mcUndefined;
sortMode = msmUnknown;
@@ -38,11 +36,23 @@ bool cDisplayMenuView::DrawHeader(void) {
if (!ExecuteViewElement(veHeader)) {
return false;
}
- map < string, string > stringTokens;
- map < string, int > intTokens;
- SetMenuHeader(cat, menuTitle, stringTokens, intTokens);
- ClearViewElement(veHeader);
- DrawViewElement(veHeader, &stringTokens, &intTokens);
+ if (DetachViewElement(veHeader)) {
+ cViewElement *viewElement = GetViewElement(veHeader);
+ if (!viewElement) {
+ viewElement = new cViewElementMenuHeader(tmplView->GetViewElement(veHeader), cat, menuTitle);
+ AddViewElement(veHeader, viewElement);
+ viewElement->Start();
+ } else {
+ if (!viewElement->Starting())
+ viewElement->Render();
+ }
+ } else {
+ map < string, string > stringTokens;
+ map < string, int > intTokens;
+ SetMenuHeader(cat, menuTitle, stringTokens, intTokens);
+ ClearViewElement(veHeader);
+ DrawViewElement(veHeader, &stringTokens, &intTokens);
+ }
return true;
}
@@ -51,15 +61,29 @@ bool cDisplayMenuView::DrawDateTime(bool forced, bool &implemented) {
return false;
}
implemented = true;
- map < string, string > stringTokens;
- map < string, int > intTokens;
-
- if (!SetDate(forced, stringTokens, intTokens)) {
- return false;
- }
+ if (DetachViewElement(veDateTime)) {
+ cViewElement *viewElement = GetViewElement(veDateTime);
+ if (!viewElement) {
+ viewElement = new cViewElement(tmplView->GetViewElement(veDateTime), this);
+ viewElement->SetCallback(veDateTime, &cDisplayMenuView::SetDate);
+ AddViewElement(veDateTime, viewElement);
+ viewElement->Start();
+ } else {
+ if (!viewElement->Starting())
+ if (!viewElement->Render())
+ return false;
+ }
+ } else {
+ map < string, string > stringTokens;
+ map < string, int > intTokens;
+
+ if (!SetDate(forced, stringTokens, intTokens)) {
+ return false;
+ }
- ClearViewElement(veDateTime);
- DrawViewElement(veDateTime, &stringTokens, &intTokens);
+ ClearViewElement(veDateTime);
+ DrawViewElement(veDateTime, &stringTokens, &intTokens);
+ }
return true;
}
@@ -68,16 +92,31 @@ bool cDisplayMenuView::DrawTime(bool forced, bool &implemented) {
return false;
}
implemented = true;
- map < string, string > stringTokens;
- map < string, int > intTokens;
- if (!SetTime(forced, stringTokens, intTokens)) {
- return false;
- }
+ if (DetachViewElement(veTime)) {
+ cViewElement *viewElement = GetViewElement(veTime);
+ if (!viewElement) {
+ viewElement = new cViewElement(tmplView->GetViewElement(veTime), this);
+ viewElement->SetCallback(veTime, &cDisplayMenuView::SetTime);
+ AddViewElement(veTime, viewElement);
+ viewElement->Start();
+ } else {
+ if (!viewElement->Starting())
+ if (!viewElement->Render())
+ return false;
+ }
+ } else {
+
+ map < string, string > stringTokens;
+ map < string, int > intTokens;
- ClearViewElement(veTime);
- DrawViewElement(veTime, &stringTokens, &intTokens);
+ if (!SetTime(forced, stringTokens, intTokens)) {
+ return false;
+ }
+ ClearViewElement(veTime);
+ DrawViewElement(veTime, &stringTokens, &intTokens);
+ }
return true;
}
@@ -322,7 +361,8 @@ void cDisplayMenuMainView::DrawDiscUsage(void) {
if (DetachViewElement(veDiscUsage)) {
cViewElement *viewElement = GetViewElement(veDiscUsage);
if (!viewElement) {
- viewElement = new cViewElementDiscUsage(tmplView->GetViewElement(veDiscUsage));
+ viewElement = new cViewElement(tmplView->GetViewElement(veDiscUsage), this);
+ viewElement->SetCallback(veDiscUsage, &cDisplayMenuMainView::SetDiscUsage);
AddViewElement(veDiscUsage, viewElement);
viewElement->Start();
} else {
@@ -332,7 +372,7 @@ void cDisplayMenuMainView::DrawDiscUsage(void) {
} else {
map < string, string > stringTokens;
map < string, int > intTokens;
- SetDiscUsage(stringTokens, intTokens);
+ SetDiscUsage(false, stringTokens, intTokens);
ClearViewElement(veDiscUsage);
DrawViewElement(veDiscUsage, &stringTokens, &intTokens);
}
@@ -346,7 +386,8 @@ bool cDisplayMenuMainView::DrawLoad(void) {
if (DetachViewElement(veSystemLoad)) {
cViewElement *viewElement = GetViewElement(veSystemLoad);
if (!viewElement) {
- viewElement = new cViewElementSystemLoad(tmplView->GetViewElement(veSystemLoad));
+ viewElement = new cViewElement(tmplView->GetViewElement(veSystemLoad), this);
+ viewElement->SetCallback(veSystemLoad, &cDisplayMenuMainView::SetSystemLoad);
AddViewElement(veSystemLoad, viewElement);
viewElement->Start();
changed = true;
@@ -357,7 +398,7 @@ bool cDisplayMenuMainView::DrawLoad(void) {
} else {
map < string, string > stringTokens;
map < string, int > intTokens;
- changed = SetSystemLoad(stringTokens, intTokens);
+ changed = SetSystemLoad(false, stringTokens, intTokens);
if (changed) {
ClearViewElement(veSystemLoad);
DrawViewElement(veSystemLoad, &stringTokens, &intTokens);
@@ -374,7 +415,8 @@ bool cDisplayMenuMainView::DrawMemory(void) {
if (DetachViewElement(veSystemMemory)) {
cViewElement *viewElement = GetViewElement(veSystemMemory);
if (!viewElement) {
- viewElement = new cViewElementSystemMemory(tmplView->GetViewElement(veSystemMemory));
+ viewElement = new cViewElement(tmplView->GetViewElement(veSystemMemory), this);
+ viewElement->SetCallback(veSystemMemory, &cDisplayMenuMainView::SetSystemMemory);
AddViewElement(veSystemMemory, viewElement);
viewElement->Start();
changed = true;
@@ -385,7 +427,7 @@ bool cDisplayMenuMainView::DrawMemory(void) {
} else {
map < string, string > stringTokens;
map < string, int > intTokens;
- changed = SetSystemMemory(stringTokens, intTokens);
+ changed = SetSystemMemory(false, stringTokens, intTokens);
if (changed) {
ClearViewElement(veSystemMemory);
DrawViewElement(veSystemMemory, &stringTokens, &intTokens);
@@ -401,7 +443,8 @@ void cDisplayMenuMainView::DrawTemperatures(void) {
if (DetachViewElement(veTemperatures)) {
cViewElement *viewElement = GetViewElement(veTemperatures);
if (!viewElement) {
- viewElement = new cViewElementTemperature(tmplView->GetViewElement(veTemperatures));
+ viewElement = new cViewElement(tmplView->GetViewElement(veTemperatures), this);
+ viewElement->SetCallback(veTemperatures, &cDisplayMenuMainView::SetSystemTemperatures);
AddViewElement(veTemperatures, viewElement);
viewElement->Start();
} else {
@@ -411,7 +454,7 @@ void cDisplayMenuMainView::DrawTemperatures(void) {
} else {
map < string, string > stringTokens;
map < string, int > intTokens;
- bool changed = SetSystemTemperatures(stringTokens, intTokens);
+ bool changed = SetSystemTemperatures(false, stringTokens, intTokens);
if (changed) {
ClearViewElement(veTemperatures);
DrawViewElement(veTemperatures, &stringTokens, &intTokens);
@@ -487,7 +530,8 @@ void cDisplayMenuMainView::DrawCurrentWeather(void) {
if (DetachViewElement(veCurrentWeather)) {
cViewElement *viewElement = GetViewElement(veCurrentWeather);
if (!viewElement) {
- viewElement = new cViewElementWeather(tmplView->GetViewElement(veCurrentWeather));
+ viewElement = new cViewElement(tmplView->GetViewElement(veCurrentWeather), this);
+ viewElement->SetCallback(veCurrentWeather, &cDisplayMenuMainView::SetCurrentWeatherTokens);
AddViewElement(veCurrentWeather, viewElement);
viewElement->Start();
} else {
@@ -497,11 +541,10 @@ void cDisplayMenuMainView::DrawCurrentWeather(void) {
} else {
map < string, string > stringTokens;
map < string, int > intTokens;
- if (!SetCurrentWeatherTokens(stringTokens, intTokens)){
- ClearViewElement(veCurrentWeather);
+ ClearViewElement(veCurrentWeather);
+ if (!SetCurrentWeatherTokens(false, stringTokens, intTokens)){
return;
}
- ClearViewElement(veCurrentWeather);
DrawViewElement(veCurrentWeather, &stringTokens, &intTokens);
}
}
diff --git a/views/displaymessageview.c b/views/displaymessageview.c
index b51802b..25f41fb 100644
--- a/views/displaymessageview.c
+++ b/views/displaymessageview.c
@@ -4,7 +4,6 @@
cDisplayMessageView::cDisplayMessageView(cTemplateView *tmplView) : cView(tmplView) {
DeleteOsdOnExit();
- SetFadeTime(tmplView->GetNumericParameter(ptFadeTime));
}
cDisplayMessageView::~cDisplayMessageView() {
@@ -47,10 +46,3 @@ void cDisplayMessageView::DrawMessage(eMessageType type, const char *text) {
void cDisplayMessageView::ClearMessage(void) {
ClearViewElement(veMessage);
}
-
-void cDisplayMessageView::Action(void) {
- SetInitFinished();
- FadeIn();
- DoFlush();
- cView::Action();
-}
diff --git a/views/displaymessageview.h b/views/displaymessageview.h
index 2fc1428..8e68d49 100644
--- a/views/displaymessageview.h
+++ b/views/displaymessageview.h
@@ -5,8 +5,6 @@
#include "view.h"
class cDisplayMessageView : public cView {
-private:
- virtual void Action(void);
public:
cDisplayMessageView(cTemplateView *tmplView);
virtual ~cDisplayMessageView();
diff --git a/views/displayreplayview.c b/views/displayreplayview.c
index a8f2fca..3436d5b 100644
--- a/views/displayreplayview.c
+++ b/views/displayreplayview.c
@@ -12,7 +12,6 @@ cDisplayReplayView::cDisplayReplayView(cTemplateView *tmplView) : cView(tmplView
lastMarks = NULL;
markActive = -1;
DeleteOsdOnExit();
- SetFadeTime(tmplView->GetNumericParameter(ptFadeTime));
}
cDisplayReplayView::~cDisplayReplayView() {
@@ -490,10 +489,3 @@ void cDisplayReplayView::RememberMarks(const cMarks *marks) {
i++;
}
}
-
-void cDisplayReplayView::Action(void) {
- SetInitFinished();
- FadeIn();
- DoFlush();
- cView::Action();
-}
diff --git a/views/displayreplayview.h b/views/displayreplayview.h
index 3b7c3e9..1cfc634 100644
--- a/views/displayreplayview.h
+++ b/views/displayreplayview.h
@@ -15,7 +15,6 @@ private:
int markActive;
bool MarksChanged(const cMarks *marks, int current);
void RememberMarks(const cMarks *marks);
- virtual void Action(void);
public:
cDisplayReplayView(cTemplateView *tmplView);
virtual ~cDisplayReplayView();
diff --git a/views/displayviewelements.c b/views/displayviewelements.c
index 7f88990..5f337a3 100644
--- a/views/displayviewelements.c
+++ b/views/displayviewelements.c
@@ -7,8 +7,8 @@ cViewElementDevices::cViewElementDevices(bool light, cTemplateViewElement *tmplV
bool cViewElementDevices::Render(void) {
ClearTokens();
- map < string, vector< map< string, string > > > deviceLoopTokens;
- vector< map< string, string > > devices;
+ map < string, vector<stringmap> > deviceLoopTokens;
+ vector<stringmap> devices;
if (init)
InitDevices();
@@ -27,71 +27,6 @@ bool cViewElementDevices::Render(void) {
/********************************************************************************************************************/
-cViewElementSignal::cViewElementSignal(cTemplateViewElement *tmplViewElement) : cViewElement(tmplViewElement) {
-}
-
-bool cViewElementSignal::Render(void) {
- ClearTokens();
- bool changed = SetSignal(intTokens);
- if (!changed)
- return false;
- ClearViewElement(veSignalQuality);
- DrawViewElement(veSignalQuality, &stringTokens, &intTokens);
- return true;
-}
-
-/********************************************************************************************************************/
-
-cViewElementWeather::cViewElementWeather(cTemplateViewElement *tmplViewElement) : cViewElement(tmplViewElement) {
-}
-
-bool cViewElementWeather::Render(void) {
- ClearTokens();
- if (!SetCurrentWeatherTokens(stringTokens, intTokens)){
- ClearViewElement(veCurrentWeather);
- return false;
- }
- ClearViewElement(veCurrentWeather);
- DrawViewElement(veCurrentWeather, &stringTokens, &intTokens);
- return true;
-}
-
-/********************************************************************************************************************/
-
-cViewElementDate::cViewElementDate(cTemplateViewElement *tmplViewElement) : cViewElement(tmplViewElement) {
- init = true;
-}
-
-bool cViewElementDate::Render(void) {
- ClearTokens();
- if (!SetDate(init, stringTokens, intTokens)) {
- return false;
- }
- init = false;
- ClearViewElement(veDateTime);
- DrawViewElement(veDateTime, &stringTokens, &intTokens);
- return true;
-}
-
-/********************************************************************************************************************/
-
-cViewElementTime::cViewElementTime(cTemplateViewElement *tmplViewElement) : cViewElement(tmplViewElement) {
- init = true;
-}
-
-bool cViewElementTime::Render(void) {
- ClearTokens();
- if (!SetTime(init, stringTokens, intTokens)) {
- return false;
- }
- init = false;
- ClearViewElement(veTime);
- DrawViewElement(veTime, &stringTokens, &intTokens);
- return true;
-}
-
-/********************************************************************************************************************/
-
cViewElementScraperContent::cViewElementScraperContent(const cEvent *event, ScraperContentType type, cTemplateViewElement *tmplViewElement) : cViewElement(tmplViewElement) {
this->event = event;
this->type = type;
@@ -161,70 +96,29 @@ bool cViewElementLastRecordings::Render(void) {
/********************************************************************************************************************/
-cViewElementDiscUsage::cViewElementDiscUsage(cTemplateViewElement *tmplViewElement) : cViewElement(tmplViewElement) {
-}
-
-bool cViewElementDiscUsage::Render(void) {
- ClearTokens();
- SetDiscUsage(stringTokens, intTokens);
-
- ClearViewElement(veDiscUsage);
- DrawViewElement(veDiscUsage, &stringTokens, &intTokens);
- return true;
-}
-
-/********************************************************************************************************************/
-
-cViewElementSystemLoad::cViewElementSystemLoad(cTemplateViewElement *tmplViewElement) : cViewElement(tmplViewElement) {
-}
-
-bool cViewElementSystemLoad::Render(void) {
- ClearTokens();
- if (!SetSystemLoad(stringTokens, intTokens))
- return false;
- ClearViewElement(veSystemLoad);
- DrawViewElement(veSystemLoad, &stringTokens, &intTokens);
- return true;
-}
-
-/********************************************************************************************************************/
-
-cViewElementSystemMemory::cViewElementSystemMemory(cTemplateViewElement *tmplViewElement) : cViewElement(tmplViewElement) {
-}
-
-bool cViewElementSystemMemory::Render(void) {
- ClearTokens();
- if (!SetSystemMemory(stringTokens, intTokens))
- return false;
- ClearViewElement(veSystemMemory);
- DrawViewElement(veSystemMemory, &stringTokens, &intTokens);
- return true;
-}
-
-/********************************************************************************************************************/
-
-cViewElementTemperature::cViewElementTemperature(cTemplateViewElement *tmplViewElement) : cViewElement(tmplViewElement) {
+cViewElementCurrentSchedule::cViewElementCurrentSchedule(cTemplateViewElement *tmplViewElement, string currentRecording) : cViewElement(tmplViewElement) {
+ this->currentRecording = currentRecording;
}
-bool cViewElementTemperature::Render(void) {
+bool cViewElementCurrentSchedule::Render(void) {
ClearTokens();
- if (!SetSystemTemperatures(stringTokens, intTokens))
- return false;
- ClearViewElement(veTemperatures);
- DrawViewElement(veTemperatures, &stringTokens, &intTokens);
+ SetCurrentSchedule(currentRecording, stringTokens, intTokens);
+ ClearViewElement(veCurrentSchedule);
+ DrawViewElement(veCurrentSchedule, &stringTokens, &intTokens);
return true;
}
/********************************************************************************************************************/
-cViewElementCurrentSchedule::cViewElementCurrentSchedule(cTemplateViewElement *tmplViewElement, string currentRecording) : cViewElement(tmplViewElement) {
- this->currentRecording = currentRecording;
+cViewElementMenuHeader::cViewElementMenuHeader(cTemplateViewElement *tmplViewElement, eMenuCategory cat, string menuTitle) : cViewElement(tmplViewElement) {
+ this->cat = cat;
+ this->menuTitle = menuTitle;
}
-bool cViewElementCurrentSchedule::Render(void) {
+bool cViewElementMenuHeader::Render(void) {
ClearTokens();
- SetCurrentSchedule(currentRecording, stringTokens, intTokens);
- ClearViewElement(veCurrentSchedule);
- DrawViewElement(veCurrentSchedule, &stringTokens, &intTokens);
+ SetMenuHeader(cat, menuTitle, stringTokens, intTokens);
+ ClearViewElement(veHeader);
+ DrawViewElement(veHeader, &stringTokens, &intTokens);
return true;
}
diff --git a/views/displayviewelements.h b/views/displayviewelements.h
index 070d205..cb02c39 100644
--- a/views/displayviewelements.h
+++ b/views/displayviewelements.h
@@ -15,40 +15,6 @@ public:
bool Render(void);
};
-class cViewElementSignal : public cViewElement, public cViewHelpers {
-private:
-public:
- cViewElementSignal(cTemplateViewElement *tmplViewElement);
- virtual ~cViewElementSignal() {};
- bool Render(void);
-};
-
-class cViewElementWeather : public cViewElement, public cViewHelpers {
-private:
-public:
- cViewElementWeather(cTemplateViewElement *tmplViewElement);
- virtual ~cViewElementWeather() {};
- bool Render(void);
-};
-
-class cViewElementDate : public cViewElement, public cViewHelpers {
-private:
- bool init;
-public:
- cViewElementDate(cTemplateViewElement *tmplViewElement);
- virtual ~cViewElementDate() {};
- bool Render(void);
-};
-
-class cViewElementTime : public cViewElement, public cViewHelpers {
-private:
- bool init;
-public:
- cViewElementTime(cTemplateViewElement *tmplViewElement);
- virtual ~cViewElementTime() {};
- bool Render(void);
-};
-
enum ScraperContentType {
ctPosterBanner,
ctFull
@@ -89,44 +55,22 @@ public:
bool Render(void);
};
-class cViewElementDiscUsage : public cViewElement, public cViewHelpers {
-private:
-public:
- cViewElementDiscUsage(cTemplateViewElement *tmplViewElement);
- virtual ~cViewElementDiscUsage() {};
- bool Render(void);
-};
-
-class cViewElementSystemLoad : public cViewElement, public cViewHelpers {
-private:
-public:
- cViewElementSystemLoad(cTemplateViewElement *tmplViewElement);
- virtual ~cViewElementSystemLoad() {};
- bool Render(void);
-};
-
-class cViewElementSystemMemory : public cViewElement, public cViewHelpers {
-private:
-public:
- cViewElementSystemMemory(cTemplateViewElement *tmplViewElement);
- virtual ~cViewElementSystemMemory() {};
- bool Render(void);
-};
-
-class cViewElementTemperature : public cViewElement, public cViewHelpers {
+class cViewElementCurrentSchedule : public cViewElement, public cViewHelpers {
private:
+ string currentRecording;
public:
- cViewElementTemperature(cTemplateViewElement *tmplViewElement);
- virtual ~cViewElementTemperature() {};
+ cViewElementCurrentSchedule(cTemplateViewElement *tmplViewElement, string currentRecording);
+ virtual ~cViewElementCurrentSchedule() {};
bool Render(void);
};
-class cViewElementCurrentSchedule : public cViewElement, public cViewHelpers {
+class cViewElementMenuHeader : public cViewElement, public cViewHelpers {
private:
- string currentRecording;
+ eMenuCategory cat;
+ string menuTitle;
public:
- cViewElementCurrentSchedule(cTemplateViewElement *tmplViewElement, string currentRecording);
- virtual ~cViewElementCurrentSchedule() {};
+ cViewElementMenuHeader(cTemplateViewElement *tmplViewElement, eMenuCategory cat, string menuTitle);
+ virtual ~cViewElementMenuHeader() {};
bool Render(void);
};
diff --git a/views/displayvolumeview.c b/views/displayvolumeview.c
index 4ab2fdd..94b073d 100644
--- a/views/displayvolumeview.c
+++ b/views/displayvolumeview.c
@@ -6,7 +6,6 @@ cDisplayVolumeView::cDisplayVolumeView(cTemplateView *tmplView) : cView(tmplView
volumeLast = -1;
muteLast = false;
DeleteOsdOnExit();
- SetFadeTime(tmplView->GetNumericParameter(ptFadeTime));
}
cDisplayVolumeView::~cDisplayVolumeView() {
@@ -46,10 +45,3 @@ void cDisplayVolumeView::DrawVolume(int current, int total, bool mute) {
ClearViewElement(veVolume);
DrawViewElement(veVolume, &stringTokens, &intTokens);
}
-
-void cDisplayVolumeView::Action(void) {
- SetInitFinished();
- FadeIn();
- DoFlush();
- cView::Action();
-}
diff --git a/views/displayvolumeview.h b/views/displayvolumeview.h
index 544426e..9ad9eab 100644
--- a/views/displayvolumeview.h
+++ b/views/displayvolumeview.h
@@ -8,7 +8,6 @@ class cDisplayVolumeView : public cView {
private:
int volumeLast;
bool muteLast;
- virtual void Action(void);
public:
cDisplayVolumeView(cTemplateView *tmplView);
virtual ~cDisplayVolumeView();
diff --git a/views/view.c b/views/view.c
index 0bdf019..125f5c3 100644
--- a/views/view.c
+++ b/views/view.c
@@ -7,6 +7,11 @@ using namespace std;
cView::cView(cTemplateView *tmplView) : cPixmapContainer(tmplView->DrawGebugGrid() ? tmplView->GetNumPixmaps() + 1 : tmplView->GetNumPixmaps()) {
this->tmplView = tmplView;
+ SetFadeTime(tmplView->GetNumericParameter(ptFadeTime));
+ SetShiftTime(tmplView->GetNumericParameter(ptShiftTime));
+ SetStartPos(tmplView->GetNumericParameter(ptStartX), tmplView->GetNumericParameter(ptStartY));
+ SetShiftType(tmplView->GetNumericParameter(ptShiftType));
+ SetShiftMode(tmplView->GetNumericParameter(ptShiftMode));
tvScaled = tmplView->GetScalingWindow(scalingWindow);
if (tvScaled) {
cDevice::PrimaryDevice()->ScaleVideo(scalingWindow);
@@ -67,6 +72,13 @@ void cView::Init(void) {
}
void cView::Action(void) {
+ SetInitFinished();
+ if (IsAnimated()) {
+ ShiftIn();
+ } else {
+ FadeIn();
+ }
+ DoFlush();
if (scrolling) {
DoSleep(scrollDelay);
if (scrollOrientation == orHorizontal) {
@@ -1045,20 +1057,57 @@ cRect cView::CalculateAnimationClip(int numPix, cRect &pos) {
************************************************************************/
cViewElement::cViewElement(cTemplateViewElement *tmplViewElement) : cView(tmplViewElement) {
+ init = true;
+ ve = veUndefined;
+ helper = NULL;
+ SetTokens = NULL;
tmplViewElement->SetPixOffset(0);
delay = tmplViewElement->GetNumericParameter(ptDelay);
SetFadeTime(tmplViewElement->GetNumericParameter(ptFadeTime));
SetShiftTime(tmplViewElement->GetNumericParameter(ptShiftTime));
SetStartPos(tmplViewElement->GetNumericParameter(ptStartX), tmplViewElement->GetNumericParameter(ptStartY));
+ SetShiftType(tmplViewElement->GetNumericParameter(ptShiftType));
+ SetShiftMode(tmplViewElement->GetNumericParameter(ptShiftMode));
}
+cViewElement::cViewElement(cTemplateViewElement *tmplViewElement, cViewHelpers *helper) : cView(tmplViewElement) {
+ init = true;
+ ve = veUndefined;
+ this->helper = helper;
+ SetTokens = NULL;
+ tmplViewElement->SetPixOffset(0);
+ delay = tmplViewElement->GetNumericParameter(ptDelay);
+ SetFadeTime(tmplViewElement->GetNumericParameter(ptFadeTime));
+ SetShiftTime(tmplViewElement->GetNumericParameter(ptShiftTime));
+ SetStartPos(tmplViewElement->GetNumericParameter(ptStartX), tmplViewElement->GetNumericParameter(ptStartY));
+ SetShiftType(tmplViewElement->GetNumericParameter(ptShiftType));
+ SetShiftMode(tmplViewElement->GetNumericParameter(ptShiftMode));
+}
+
cViewElement::~cViewElement() {
CancelSave();
}
+bool cViewElement::Render(void) {
+ if (!helper || !SetTokens) {
+ return false;
+ }
+ ClearTokens();
+ bool done = (helper->*SetTokens)(init, stringTokens, intTokens);
+ if (!done) {
+ return false;
+ }
+ init = false;
+ ClearViewElement(ve);
+ DrawViewElement(ve, &stringTokens, &intTokens);
+ return true;
+}
+
void cViewElement::Action(void) {
DoSleep(delay);
- Render();
+ if (!Running())
+ return;
+ Render();
SetInitFinished();
if (IsAnimated()) {
ShiftIn();
diff --git a/views/view.h b/views/view.h
index b7918ca..7b85a6c 100644
--- a/views/view.h
+++ b/views/view.h
@@ -5,6 +5,7 @@
#include "map"
#include "../libcore/pixmapcontainer.h"
#include "../libtemplate/template.h"
+#include "viewhelpers.h"
#include "animation.h"
using namespace std;
@@ -79,15 +80,21 @@ public:
class cViewElement : public cView {
private:
protected:
+ bool init;
+ eViewElement ve;
int delay;
- map < string, string > stringTokens;
- map < string, int > intTokens;
+ stringmap stringTokens;
+ intmap intTokens;
+ bool (cViewHelpers::*SetTokens)(bool, stringmap&, intmap&);
+ cViewHelpers *helper;
void Action(void);
void ClearTokens(void);
public:
cViewElement(cTemplateViewElement *tmplViewElement);
+ cViewElement(cTemplateViewElement *tmplViewElement, cViewHelpers *helper);
virtual ~cViewElement();
- virtual bool Render(void) { return false; };
+ void SetCallback(eViewElement ve, bool (cViewHelpers::*SetTokens)(bool, stringmap&, intmap&)) { this->ve = ve; this->SetTokens = SetTokens; };
+ virtual bool Render(void);
bool Starting(void) { return Running(); };
};
diff --git a/views/viewhelpers.c b/views/viewhelpers.c
index 2be6d8f..47aa83b 100644
--- a/views/viewhelpers.c
+++ b/views/viewhelpers.c
@@ -36,6 +36,234 @@ cViewHelpers::~cViewHelpers() {
}
}
+/******************************************************************
+* Public Functions
+******************************************************************/
+bool cViewHelpers::SetDate(bool forced, stringmap &stringTokens, intmap &intTokens) {
+ time_t t = time(0); // get time now
+ struct tm * now = localtime(&t);
+ int min = now->tm_min;
+ if (!forced && min == lastMinute) {
+ return false;
+ }
+ lastMinute = min;
+
+ intTokens.insert(pair<string, int>("year", now->tm_year + 1900));
+ intTokens.insert(pair<string, int>("day", now->tm_mday));
+
+ char monthname[20];
+ char monthshort[10];
+ strftime(monthshort, sizeof(monthshort), "%b", now);
+ strftime(monthname, sizeof(monthname), "%B", now);
+
+ stringTokens.insert(pair<string,string>("monthname", monthname));
+ stringTokens.insert(pair<string,string>("monthnameshort", monthshort));
+ stringTokens.insert(pair<string,string>("month", *cString::sprintf("%02d", now->tm_mon + 1)));
+ stringTokens.insert(pair<string,string>("dayleadingzero", *cString::sprintf("%02d", now->tm_mday)));
+ stringTokens.insert(pair<string,string>("dayname", *WeekDayNameFull(now->tm_wday)));
+ stringTokens.insert(pair<string,string>("daynameshort", *WeekDayName(now->tm_wday)));
+ stringTokens.insert(pair<string,string>("time", *TimeString(t)));
+
+ return true;
+}
+
+bool cViewHelpers::SetTime(bool forced, stringmap &stringTokens, intmap &intTokens) {
+ time_t t = time(0); // get time now
+ struct tm * now = localtime(&t);
+ int sec = now->tm_sec;
+ if (!forced && sec == lastSecond) {
+ return false;
+ }
+ int min = now->tm_min;
+ int hour = now->tm_hour;
+ int hourMinutes = hour%12 * 5 + min / 12;
+
+ intTokens.insert(pair<string, int>("sec", sec));
+ intTokens.insert(pair<string, int>("min", min));
+ intTokens.insert(pair<string, int>("hour", hour));
+ intTokens.insert(pair<string, int>("hmins", hourMinutes));
+
+ lastSecond = sec;
+ return true;
+}
+
+bool cViewHelpers::SetSignal(bool forced, stringmap &stringTokens, intmap &intTokens) {
+ bool done = false;
+ time_t Now = time(NULL);
+ if (Now != lSignalDisplay) {
+ int SignalStrength = cDevice::ActualDevice()->SignalStrength();
+ int SignalQuality = cDevice::ActualDevice()->SignalQuality();
+ if (SignalStrength < 0) SignalStrength = 0;
+ if (SignalQuality < 0) SignalQuality = 0;
+ if ((SignalStrength == 0)&&(SignalQuality==0))
+ return done;
+ if ((lSignalStrength != SignalStrength) || (lSignalQuality != SignalQuality)) {
+ intTokens.insert(pair<string,int>("signalstrength", SignalStrength));
+ intTokens.insert(pair<string,int>("signalquality", SignalQuality));
+ lSignalStrength = SignalStrength;
+ lSignalQuality = SignalQuality;
+ done = true;
+ }
+ lSignalDisplay = Now;
+ }
+ return done;
+}
+
+bool cViewHelpers::SetCurrentWeatherTokens(bool forced, stringmap &stringTokens, intmap &intTokens) {
+ static cPlugin *pWeatherForecast = cPluginManager::GetPlugin("weatherforecast");
+ if (!pWeatherForecast)
+ return false;
+ cServiceCurrentWeather currentWeather;
+ if (!pWeatherForecast->Service("GetCurrentWeather", &currentWeather)) {
+ return false;
+ }
+ stringTokens.insert(pair<string,string>("timestamp", currentWeather.timeStamp));
+ stringTokens.insert(pair<string,string>("temperature", currentWeather.temperature));
+ stringTokens.insert(pair<string,string>("apparenttemperature", currentWeather.apparentTemperature));
+ stringTokens.insert(pair<string,string>("mintemperature", currentWeather.minTemperature));
+ stringTokens.insert(pair<string,string>("maxtemperature", currentWeather.maxTemperature));
+ stringTokens.insert(pair<string,string>("summary", currentWeather.summary));
+ stringTokens.insert(pair<string,string>("icon", currentWeather.icon));
+ stringTokens.insert(pair<string,string>("precipitationintensity", currentWeather.precipitationIntensity));
+ intTokens.insert(pair<string,int>("precipitationprobability", currentWeather.precipitationProbability));
+ stringTokens.insert(pair<string,string>("precipitationtype", currentWeather.precipitationType));
+ intTokens.insert(pair<string,int>("humidity", currentWeather.humidity));
+ stringTokens.insert(pair<string,string>("windspeed", currentWeather.windSpeed));
+ intTokens.insert(pair<string,int>("windbearing", currentWeather.windBearing));
+ stringTokens.insert(pair<string,string>("windbearingstring", currentWeather.windBearingString));
+ stringTokens.insert(pair<string,string>("visibility", currentWeather.visibility));
+ intTokens.insert(pair<string,int>("cloudcover", currentWeather.cloudCover));
+ stringTokens.insert(pair<string,string>("pressure", currentWeather.pressure));
+ stringTokens.insert(pair<string,string>("ozone", currentWeather.ozone));
+ return true;
+}
+
+bool cViewHelpers::SetDiscUsage(bool forced, stringmap &stringTokens, intmap &intTokens) {
+ string vdrUsageString = *cVideoDiskUsage::String();
+ int discUsage = cVideoDiskUsage::UsedPercent();
+ bool discAlert = (discUsage > 95) ? true : false;
+ string freeTime = *cString::sprintf("%02d:%02d", cVideoDiskUsage::FreeMinutes() / 60, cVideoDiskUsage::FreeMinutes() % 60);
+ int freeGB = cVideoDiskUsage::FreeMB() / 1024;
+
+ intTokens.insert(pair<string, int>("usedpercent", discUsage));
+ intTokens.insert(pair<string, int>("freepercent", 100-discUsage));
+ intTokens.insert(pair<string, int>("discalert", discAlert));
+ intTokens.insert(pair<string, int>("freegb", freeGB));
+ stringTokens.insert(pair<string,string>("freetime", freeTime));
+ stringTokens.insert(pair<string,string>("vdrusagestring", vdrUsageString));
+ return true;
+}
+
+bool cViewHelpers::SetSystemLoad(bool forced, stringmap &stringTokens, intmap &intTokens) {
+ double systemLoad;
+ if (getloadavg(&systemLoad, 1) > 0) {
+ if (lastSystemLoad == systemLoad) {
+ return false;
+ }
+ string load = *cString::sprintf("%.2f", systemLoad);
+ int loadHand = systemLoad * 1000;
+ int loadHandValue = 0;
+ if (loadHand > 2500)
+ loadHandValue = 2525;
+ else {
+
+ int loadHandDec = loadHand - (loadHand / 100) * 100;
+
+ if (loadHandDec <= 12)
+ loadHandDec = 0;
+ else if (loadHandDec <= 37)
+ loadHandDec = 25;
+ else if (loadHandDec <= 62)
+ loadHandDec = 50;
+ else if (loadHandDec <= 87)
+ loadHandDec = 75;
+ else
+ loadHandDec = 0;
+
+ loadHandValue = loadHand / 100 * 100 + loadHandDec;
+ }
+ stringTokens.insert(pair<string,string>("load", load));
+ intTokens.insert(pair<string,int>("loadhand", loadHandValue));
+ lastSystemLoad = systemLoad;
+ } else {
+ return false;
+ }
+ return true;
+}
+
+bool cViewHelpers::SetSystemMemory(bool forced, stringmap &stringTokens, intmap &intTokens) {
+ struct sysinfo memInfo;
+ sysinfo (&memInfo);
+
+ long long totalMem = memInfo.totalram;
+ totalMem += memInfo.totalswap;
+ totalMem *= memInfo.mem_unit;
+ int totalMemMB = totalMem / 1024 / 1024;
+
+ long long usedMem = memInfo.totalram - memInfo.freeram;
+ usedMem += memInfo.totalswap - memInfo.freeswap;
+ usedMem *= memInfo.mem_unit;
+ int usedMemMB = usedMem / 1024 / 1024;
+
+ if (lastMemUsage == usedMemMB) {
+ return false;
+ }
+ lastMemUsage = usedMemMB;
+
+ intTokens.insert(pair<string,int>("totalmem", totalMemMB));
+ intTokens.insert(pair<string,int>("usedmem", usedMemMB));
+ if (totalMemMB > 0)
+ intTokens.insert(pair<string,int>("usedmempercent", usedMemMB * 100 / totalMemMB));
+ return true;
+}
+
+bool cViewHelpers::SetSystemTemperatures(bool forced, stringmap &stringTokens, intmap &intTokens) {
+ cString execCommand = cString::sprintf("cd \"%s/\"; \"%s/temperatures\"", SCRIPTFOLDER, SCRIPTFOLDER);
+ system(*execCommand);
+
+ string tempCPU, tempGPU;
+ int cpu, gpu;
+
+ cString itemFilename = cString::sprintf("%s/cpu", SCRIPTOUTPUTPATH );
+ ifstream file(*itemFilename, ifstream::in);
+ if( file.is_open() ) {
+ std::getline(file, tempCPU);
+ if (tempCPU.size() > 2) {
+ cpu = atoi(tempCPU.substr(0,2).c_str());
+ } else
+ cpu = 0;
+ file.close();
+ } else {
+ tempCPU = "0°C";
+ cpu = 0;
+ }
+
+ itemFilename = cString::sprintf("%s/gpu", SCRIPTOUTPUTPATH );
+ ifstream file2(*itemFilename, ifstream::in);
+ if( file2.is_open() ) {
+ std::getline(file2, tempGPU);
+ if (tempGPU.size() > 2) {
+ gpu = atoi(tempGPU.substr(0,2).c_str());
+ } else
+ gpu = 0;
+ file2.close();
+ } else {
+ tempGPU = "0°C";
+ gpu = 0;
+ }
+
+ intTokens.insert(pair<string,int>("cputemp", cpu));
+ intTokens.insert(pair<string,int>("gputemp", gpu));
+ return true;
+}
+
+bool cViewHelpers::SetDummy(bool forced, stringmap &stringTokens, intmap &intTokens) {
+ return true;
+}
+
+/******************************************************************
+* Protected Functions
+******************************************************************/
void cViewHelpers::InitDevices(void) {
numDevices = cDevice::NumDevices();
lastSignalStrength = new int[numDevices];
@@ -49,7 +277,7 @@ void cViewHelpers::InitDevices(void) {
devicesInit = true;
}
-bool cViewHelpers::SetDevices(bool initial, bool light, map<string,int> *intTokens, vector<map<string,string> > *devices) {
+bool cViewHelpers::SetDevices(bool initial, bool light, intmap *intTokens, vector<stringmap> *devices) {
if (!initial) {
if (light)
return false;
@@ -99,7 +327,7 @@ bool cViewHelpers::SetDevices(bool initial, bool light, map<string,int> *intToke
continue;
}
- map< string, string > deviceVals;
+ stringmap deviceVals;
stringstream strNum;
strNum << actualNumDevices;
actualNumDevices++;
@@ -164,28 +392,6 @@ bool cViewHelpers::SetDevices(bool initial, bool light, map<string,int> *intToke
return true;
}
-bool cViewHelpers::SetSignal(map < string, int > &intTokens) {
- bool done = false;
- time_t Now = time(NULL);
- if (Now != lSignalDisplay) {
- int SignalStrength = cDevice::ActualDevice()->SignalStrength();
- int SignalQuality = cDevice::ActualDevice()->SignalQuality();
- if (SignalStrength < 0) SignalStrength = 0;
- if (SignalQuality < 0) SignalQuality = 0;
- if ((SignalStrength == 0)&&(SignalQuality==0))
- return done;
- if ((lSignalStrength != SignalStrength) || (lSignalQuality != SignalQuality)) {
- intTokens.insert(pair<string,int>("signalstrength", SignalStrength));
- intTokens.insert(pair<string,int>("signalquality", SignalQuality));
- lSignalStrength = SignalStrength;
- lSignalQuality = SignalQuality;
- done = true;
- }
- lSignalDisplay = Now;
- }
- return done;
-}
-
bool cViewHelpers::CheckNewMails(void) {
static cPlugin *pMailbox = cPluginManager::GetPlugin("mailbox");
if (!pMailbox) {
@@ -198,7 +404,7 @@ bool cViewHelpers::CheckNewMails(void) {
return false;
}
-void cViewHelpers::SetScraperTokens(const cEvent *event, const cRecording *recording, map < string, string > &stringTokens, map < string, int > &intTokens, map < string, vector< map< string, string > > > &loopTokens) {
+void cViewHelpers::SetScraperTokens(const cEvent *event, const cRecording *recording, stringmap &stringTokens, intmap &intTokens, map < string, vector<stringmap> > &loopTokens) {
static cPlugin *pScraper = GetScraperPlugin();
if (!pScraper || (!event && !recording)) {
intTokens.insert(pair<string,int>("ismovie", false));
@@ -404,7 +610,7 @@ void cViewHelpers::SetScraperTokens(const cEvent *event, const cRecording *recor
}
-void cViewHelpers::SetPosterBanner(const cEvent *event, map < string, string > &stringTokens, map < string, int > &intTokens) {
+void cViewHelpers::SetPosterBanner(const cEvent *event, stringmap &stringTokens, intmap &intTokens) {
static cPlugin *pScraper = GetScraperPlugin();
if (!pScraper) {
return;
@@ -471,83 +677,6 @@ void cViewHelpers::SetPosterBanner(const cEvent *event, map < string, string > &
}
}
-bool cViewHelpers::SetTime(bool forced, map < string, string > &stringTokens, map < string, int > &intTokens) {
- time_t t = time(0); // get time now
- struct tm * now = localtime(&t);
- int sec = now->tm_sec;
- if (!forced && sec == lastSecond) {
- return false;
- }
- int min = now->tm_min;
- int hour = now->tm_hour;
- int hourMinutes = hour%12 * 5 + min / 12;
-
- intTokens.insert(pair<string, int>("sec", sec));
- intTokens.insert(pair<string, int>("min", min));
- intTokens.insert(pair<string, int>("hour", hour));
- intTokens.insert(pair<string, int>("hmins", hourMinutes));
-
- lastSecond = sec;
- return true;
-}
-
-bool cViewHelpers::SetDate(bool forced, map < string, string > &stringTokens, map < string, int > &intTokens) {
- time_t t = time(0); // get time now
- struct tm * now = localtime(&t);
- int min = now->tm_min;
- if (!forced && min == lastMinute) {
- return false;
- }
- lastMinute = min;
-
- intTokens.insert(pair<string, int>("year", now->tm_year + 1900));
- intTokens.insert(pair<string, int>("day", now->tm_mday));
-
- char monthname[20];
- char monthshort[10];
- strftime(monthshort, sizeof(monthshort), "%b", now);
- strftime(monthname, sizeof(monthname), "%B", now);
-
- stringTokens.insert(pair<string,string>("monthname", monthname));
- stringTokens.insert(pair<string,string>("monthnameshort", monthshort));
- stringTokens.insert(pair<string,string>("month", *cString::sprintf("%02d", now->tm_mon + 1)));
- stringTokens.insert(pair<string,string>("dayleadingzero", *cString::sprintf("%02d", now->tm_mday)));
- stringTokens.insert(pair<string,string>("dayname", *WeekDayNameFull(now->tm_wday)));
- stringTokens.insert(pair<string,string>("daynameshort", *WeekDayName(now->tm_wday)));
- stringTokens.insert(pair<string,string>("time", *TimeString(t)));
-
- return true;
-}
-
-bool cViewHelpers::SetCurrentWeatherTokens(map < string, string > &stringTokens, map < string, int > &intTokens) {
- static cPlugin *pWeatherForecast = cPluginManager::GetPlugin("weatherforecast");
- if (!pWeatherForecast)
- return false;
- cServiceCurrentWeather currentWeather;
- if (!pWeatherForecast->Service("GetCurrentWeather", &currentWeather)) {
- return false;
- }
- stringTokens.insert(pair<string,string>("timestamp", currentWeather.timeStamp));
- stringTokens.insert(pair<string,string>("temperature", currentWeather.temperature));
- stringTokens.insert(pair<string,string>("apparenttemperature", currentWeather.apparentTemperature));
- stringTokens.insert(pair<string,string>("mintemperature", currentWeather.minTemperature));
- stringTokens.insert(pair<string,string>("maxtemperature", currentWeather.maxTemperature));
- stringTokens.insert(pair<string,string>("summary", currentWeather.summary));
- stringTokens.insert(pair<string,string>("icon", currentWeather.icon));
- stringTokens.insert(pair<string,string>("precipitationintensity", currentWeather.precipitationIntensity));
- intTokens.insert(pair<string,int>("precipitationprobability", currentWeather.precipitationProbability));
- stringTokens.insert(pair<string,string>("precipitationtype", currentWeather.precipitationType));
- intTokens.insert(pair<string,int>("humidity", currentWeather.humidity));
- stringTokens.insert(pair<string,string>("windspeed", currentWeather.windSpeed));
- intTokens.insert(pair<string,int>("windbearing", currentWeather.windBearing));
- stringTokens.insert(pair<string,string>("windbearingstring", currentWeather.windBearingString));
- stringTokens.insert(pair<string,string>("visibility", currentWeather.visibility));
- intTokens.insert(pair<string,int>("cloudcover", currentWeather.cloudCover));
- stringTokens.insert(pair<string,string>("pressure", currentWeather.pressure));
- stringTokens.insert(pair<string,string>("ozone", currentWeather.ozone));
- return true;
-}
-
void cViewHelpers::SetTimers(map<string,int> *intTokens, map<string,string> *stringTokens, vector<map<string,string> > *timers) {
cGlobalSortedTimers SortedTimers;// local and remote timers
int numTimers = SortedTimers.Size();
@@ -629,7 +758,7 @@ void cViewHelpers::SetTimers(map<string,int> *intTokens, map<string,string> *str
}
}
-void cViewHelpers::SetLastRecordings(map<string,int> *intTokens, map<string,string> *stringTokens, vector<map<string,string> > *lastRecordings) {
+void cViewHelpers::SetLastRecordings(map<string,int> *intTokens, map<string,string> *stringTokens, vector<stringmap> *lastRecordings) {
list<cRecording*> orderedRecs;
@@ -694,7 +823,7 @@ void cViewHelpers::SetLastRecordings(map<string,int> *intTokens, map<string,stri
}
}
-void cViewHelpers::SetMenuHeader(eMenuCategory cat, string menuTitle, map < string, string > &stringTokens, map < string, int > &intTokens) {
+void cViewHelpers::SetMenuHeader(eMenuCategory cat, string menuTitle, stringmap &stringTokens, intmap &intTokens) {
stringTokens.insert(pair<string,string>("title", menuTitle));
stringTokens.insert(pair<string,string>("vdrversion", VDRVERSION));
@@ -723,125 +852,7 @@ void cViewHelpers::SetMenuHeader(eMenuCategory cat, string menuTitle, map < stri
stringTokens.insert(pair<string,string>("vdrusagestring", vdrUsageString));
}
-void cViewHelpers::SetDiscUsage(map < string, string > &stringTokens, map < string, int > &intTokens) {
- string vdrUsageString = *cVideoDiskUsage::String();
- int discUsage = cVideoDiskUsage::UsedPercent();
- bool discAlert = (discUsage > 95) ? true : false;
- string freeTime = *cString::sprintf("%02d:%02d", cVideoDiskUsage::FreeMinutes() / 60, cVideoDiskUsage::FreeMinutes() % 60);
- int freeGB = cVideoDiskUsage::FreeMB() / 1024;
-
- intTokens.insert(pair<string, int>("usedpercent", discUsage));
- intTokens.insert(pair<string, int>("freepercent", 100-discUsage));
- intTokens.insert(pair<string, int>("discalert", discAlert));
- intTokens.insert(pair<string, int>("freegb", freeGB));
- stringTokens.insert(pair<string,string>("freetime", freeTime));
- stringTokens.insert(pair<string,string>("vdrusagestring", vdrUsageString));
-}
-
-bool cViewHelpers::SetSystemLoad(map < string, string > &stringTokens, map < string, int > &intTokens) {
- double systemLoad;
- if (getloadavg(&systemLoad, 1) > 0) {
- if (lastSystemLoad == systemLoad) {
- return false;
- }
- string load = *cString::sprintf("%.2f", systemLoad);
- int loadHand = systemLoad * 1000;
- int loadHandValue = 0;
- if (loadHand > 2500)
- loadHandValue = 2525;
- else {
-
- int loadHandDec = loadHand - (loadHand / 100) * 100;
-
- if (loadHandDec <= 12)
- loadHandDec = 0;
- else if (loadHandDec <= 37)
- loadHandDec = 25;
- else if (loadHandDec <= 62)
- loadHandDec = 50;
- else if (loadHandDec <= 87)
- loadHandDec = 75;
- else
- loadHandDec = 0;
-
- loadHandValue = loadHand / 100 * 100 + loadHandDec;
- }
- stringTokens.insert(pair<string,string>("load", load));
- intTokens.insert(pair<string,int>("loadhand", loadHandValue));
- lastSystemLoad = systemLoad;
- } else {
- return false;
- }
- return true;
-}
-
-bool cViewHelpers::SetSystemMemory(map < string, string > &stringTokens, map < string, int > &intTokens) {
- struct sysinfo memInfo;
- sysinfo (&memInfo);
-
- long long totalMem = memInfo.totalram;
- totalMem += memInfo.totalswap;
- totalMem *= memInfo.mem_unit;
- int totalMemMB = totalMem / 1024 / 1024;
-
- long long usedMem = memInfo.totalram - memInfo.freeram;
- usedMem += memInfo.totalswap - memInfo.freeswap;
- usedMem *= memInfo.mem_unit;
- int usedMemMB = usedMem / 1024 / 1024;
-
- if (lastMemUsage == usedMemMB) {
- return false;
- }
- lastMemUsage = usedMemMB;
-
- intTokens.insert(pair<string,int>("totalmem", totalMemMB));
- intTokens.insert(pair<string,int>("usedmem", usedMemMB));
- if (totalMemMB > 0)
- intTokens.insert(pair<string,int>("usedmempercent", usedMemMB * 100 / totalMemMB));
- return true;
-}
-
-bool cViewHelpers::SetSystemTemperatures(map < string, string > &stringTokens, map < string, int > &intTokens) {
- cString execCommand = cString::sprintf("cd \"%s/\"; \"%s/temperatures\"", SCRIPTFOLDER, SCRIPTFOLDER);
- system(*execCommand);
-
- string tempCPU, tempGPU;
- int cpu, gpu;
-
- cString itemFilename = cString::sprintf("%s/cpu", SCRIPTOUTPUTPATH );
- ifstream file(*itemFilename, ifstream::in);
- if( file.is_open() ) {
- std::getline(file, tempCPU);
- if (tempCPU.size() > 2) {
- cpu = atoi(tempCPU.substr(0,2).c_str());
- } else
- cpu = 0;
- file.close();
- } else {
- tempCPU = "0°C";
- cpu = 0;
- }
-
- itemFilename = cString::sprintf("%s/gpu", SCRIPTOUTPUTPATH );
- ifstream file2(*itemFilename, ifstream::in);
- if( file2.is_open() ) {
- std::getline(file2, tempGPU);
- if (tempGPU.size() > 2) {
- gpu = atoi(tempGPU.substr(0,2).c_str());
- } else
- gpu = 0;
- file2.close();
- } else {
- tempGPU = "0°C";
- gpu = 0;
- }
-
- intTokens.insert(pair<string,int>("cputemp", cpu));
- intTokens.insert(pair<string,int>("gputemp", gpu));
- return true;
-}
-
-void cViewHelpers::SetCurrentSchedule(string recName, map < string, string > &stringTokens, map < string, int > &intTokens) {
+void cViewHelpers::SetCurrentSchedule(string recName, stringmap &stringTokens, intmap &intTokens) {
cDevice *device = cDevice::PrimaryDevice();
const cChannel *channel = NULL;
if (!device->Replaying() || device->Transferring()) {
@@ -860,7 +871,7 @@ void cViewHelpers::SetCurrentSchedule(string recName, map < string, string > &st
}
}
-bool cViewHelpers::SetEcmInfos(int channelSid, map < string, string > &stringTokens, map < string, int > &intTokens) {
+bool cViewHelpers::SetEcmInfos(int channelSid, stringmap &stringTokens, intmap &intTokens) {
static cPlugin *pDVBApi = cPluginManager::GetPlugin("dvbapi");
if (!pDVBApi)
return false;
@@ -892,20 +903,6 @@ bool cViewHelpers::SetEcmInfos(int channelSid, map < string, string > &stringTok
return true;
}
-bool cViewHelpers::CompareECMInfos(sDVBAPIEcmInfo *ecmInfo) {
- if (ecmInfo->caid != lastEcmInfo.caid)
- return false;
- if (ecmInfo->pid != lastEcmInfo.pid)
- return false;
- if (ecmInfo->prid != lastEcmInfo.prid)
- return false;
- if (ecmInfo->ecmtime != lastEcmInfo.ecmtime)
- return false;
- if (ecmInfo->hops != lastEcmInfo.hops)
- return false;
- return true;
-}
-
/********************************************************************************
* Private Functions
********************************************************************************/
@@ -946,7 +943,7 @@ void cViewHelpers::RecPoster(const cRecording *rec, int &posterWidth, int &poste
}
}
-void cViewHelpers::SetCurrentScheduleFromChannel(const cChannel *channel, map < string, string > &stringTokens, map < string, int > &intTokens) {
+void cViewHelpers::SetCurrentScheduleFromChannel(const cChannel *channel, stringmap &stringTokens, intmap &intTokens) {
const cEvent *event = NULL;
cSchedulesLock SchedulesLock;
if (const cSchedules *Schedules = cSchedules::Schedules(SchedulesLock))
@@ -1026,7 +1023,7 @@ void cViewHelpers::SetCurrentScheduleFromChannel(const cChannel *channel, map <
intTokens.insert(pair<string,int>("hasbanner", hasBanner));
}
-void cViewHelpers::SetCurrentScheduleFromRecording(const cRecording *recording, map < string, string > &stringTokens, map < string, int > &intTokens) {
+void cViewHelpers::SetCurrentScheduleFromRecording(const cRecording *recording, stringmap &stringTokens, intmap &intTokens) {
intTokens.insert(pair<string,int>("islivetv", 0));
string recFullName = recording->Name() ? recording->Name() : "";
@@ -1109,3 +1106,17 @@ void cViewHelpers::SetCurrentScheduleFromRecording(const cRecording *recording,
stringTokens.insert(pair<string,string>("bannerpath", bannerPath));
intTokens.insert(pair<string,int>("hasbanner", hasBanner));
}
+
+bool cViewHelpers::CompareECMInfos(sDVBAPIEcmInfo *ecmInfo) {
+ if (ecmInfo->caid != lastEcmInfo.caid)
+ return false;
+ if (ecmInfo->pid != lastEcmInfo.pid)
+ return false;
+ if (ecmInfo->prid != lastEcmInfo.prid)
+ return false;
+ if (ecmInfo->ecmtime != lastEcmInfo.ecmtime)
+ return false;
+ if (ecmInfo->hops != lastEcmInfo.hops)
+ return false;
+ return true;
+}
diff --git a/views/viewhelpers.h b/views/viewhelpers.h
index bc0adcf..3ba13b3 100644
--- a/views/viewhelpers.h
+++ b/views/viewhelpers.h
@@ -3,6 +3,9 @@
#include "../services/dvbapi.h"
+typedef map<string,string> stringmap;
+typedef map<string,int> intmap;
+
class cViewHelpers {
private:
int numDevices;
@@ -20,31 +23,32 @@ private:
sDVBAPIEcmInfo lastEcmInfo;
void RecName(string &path, string &name, string &folder);
void RecPoster(const cRecording *rec, int &posterWidth, int &posterHeight, string &path, bool &hasPoster);
- void SetCurrentScheduleFromChannel(const cChannel *channel, map < string, string > &stringTokens, map < string, int > &intTokens);
- void SetCurrentScheduleFromRecording(const cRecording *recording, map < string, string > &stringTokens, map < string, int > &intTokens);
+ void SetCurrentScheduleFromChannel(const cChannel *channel, stringmap &stringTokens, intmap &intTokens);
+ void SetCurrentScheduleFromRecording(const cRecording *recording, stringmap &stringTokens, intmap &intTokens);
bool CompareECMInfos(sDVBAPIEcmInfo *ecmInfo);
protected:
void InitDevices(void);
- bool SetDevices(bool initial, bool light, map<string,int> *intTokens, vector<map<string,string> > *devices);
- bool SetSignal(map < string, int > &intTokens);
+ bool SetDevices(bool initial, bool light, intmap *intTokens, vector<stringmap> *devices);
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);
- void SetPosterBanner(const cEvent *event, map < string, string > &stringTokens, map < string, int > &intTokens);
- bool SetTime(bool forced, map < string, string > &stringTokens, map < string, int > &intTokens);
- bool SetDate(bool forced, map < string, string > &stringTokens, map < string, int > &intTokens);
- bool SetCurrentWeatherTokens(map < string, string > &stringTokens, map < string, int > &intTokens);
- void SetTimers(map<string,int> *intTokens, map<string,string> *stringTokens, vector<map<string,string> > *timers);
- void SetLastRecordings(map<string,int> *intTokens, map<string,string> *stringTokens, vector<map<string,string> > *lastRecordings);
- void SetMenuHeader(eMenuCategory cat, string menuTitle, map < string, string > &stringTokens, map < string, int > &intTokens);
- void SetDiscUsage(map < string, string > &stringTokens, map < string, int > &intTokens);
- bool SetSystemLoad(map < string, string > &stringTokens, map < string, int > &intTokens);
- bool SetSystemMemory(map < string, string > &stringTokens, map < string, int > &intTokens);
- bool SetSystemTemperatures(map < string, string > &stringTokens, map < string, int > &intTokens);
- void SetCurrentSchedule(string recName, map < string, string > &stringTokens, map < string, int > &intTokens);
- bool SetEcmInfos(int channelSid, map < string, string > &stringTokens, map < string, int > &intTokens);
+ void SetScraperTokens(const cEvent *event, const cRecording *recording, stringmap &stringTokens, intmap &intTokens, map < string, vector<stringmap> > &loopTokens);
+ void SetPosterBanner(const cEvent *event, stringmap &stringTokens, intmap &intTokens);
+ void SetTimers(map<string,int> *intTokens, map<string,string> *stringTokens, vector<stringmap> *timers);
+ void SetLastRecordings(map<string,int> *intTokens, map<string,string> *stringTokens, vector<stringmap> *lastRecordings);
+ void SetMenuHeader(eMenuCategory cat, string menuTitle, stringmap &stringTokens, intmap &intTokens);
+ void SetCurrentSchedule(string recName, stringmap &stringTokens, intmap &intTokens);
+ bool SetEcmInfos(int channelSid, stringmap &stringTokens, intmap &intTokens);
public:
cViewHelpers(void);
virtual ~cViewHelpers(void);
+ bool SetDate (bool forced, stringmap &stringTokens, intmap &intTokens);
+ bool SetTime (bool forced, stringmap &stringTokens, intmap &intTokens);
+ bool SetSignal (bool forced, stringmap &stringTokens, intmap &intTokens);
+ bool SetCurrentWeatherTokens(bool forced, stringmap &stringTokens, intmap &intTokens);
+ bool SetDiscUsage (bool forced, stringmap &stringTokens, intmap &intTokens);
+ bool SetSystemLoad (bool forced, stringmap &stringTokens, intmap &intTokens);
+ bool SetSystemMemory (bool forced, stringmap &stringTokens, intmap &intTokens);
+ bool SetSystemTemperatures (bool forced, stringmap &stringTokens, intmap &intTokens);
+ bool SetDummy (bool forced, stringmap &stringTokens, intmap &intTokens);
};
#endif //__VIEWHELPERS_H \ No newline at end of file