diff options
author | louis <louis.braun@gmx.de> | 2015-05-10 12:55:23 +0200 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2015-05-10 12:55:23 +0200 |
commit | 28743412fed4d9d59100c38f4def327122ed0e2c (patch) | |
tree | abfca0011e69b0e39973de807b2b3e99ff7936bb /views | |
parent | c5edc10fbd57d17e774a07b659996bdffe16242c (diff) | |
download | vdr-plugin-skindesigner-28743412fed4d9d59100c38f4def327122ed0e2c.tar.gz vdr-plugin-skindesigner-28743412fed4d9d59100c38f4def327122ed0e2c.tar.bz2 |
expanded shifting features
Diffstat (limited to 'views')
-rw-r--r-- | views/displayaudiotracksview.c | 8 | ||||
-rw-r--r-- | views/displayaudiotracksview.h | 1 | ||||
-rw-r--r-- | views/displaychannelview.c | 30 | ||||
-rw-r--r-- | views/displaychannelview.h | 1 | ||||
-rw-r--r-- | views/displaymenuitemview.c | 3 | ||||
-rw-r--r-- | views/displaymenurootview.c | 79 | ||||
-rw-r--r-- | views/displaymenuview.c | 113 | ||||
-rw-r--r-- | views/displaymessageview.c | 8 | ||||
-rw-r--r-- | views/displaymessageview.h | 2 | ||||
-rw-r--r-- | views/displayreplayview.c | 8 | ||||
-rw-r--r-- | views/displayreplayview.h | 1 | ||||
-rw-r--r-- | views/displayviewelements.c | 136 | ||||
-rw-r--r-- | views/displayviewelements.h | 74 | ||||
-rw-r--r-- | views/displayvolumeview.c | 8 | ||||
-rw-r--r-- | views/displayvolumeview.h | 1 | ||||
-rw-r--r-- | views/view.c | 51 | ||||
-rw-r--r-- | views/view.h | 13 | ||||
-rw-r--r-- | views/viewhelpers.c | 493 | ||||
-rw-r--r-- | views/viewhelpers.h | 40 |
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", ¤tWeather)) { + 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", ¤tWeather)) { - 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 |