diff options
author | louis <louis.braun@gmx.de> | 2015-06-13 15:41:41 +0200 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2015-06-13 15:41:41 +0200 |
commit | 480b0a44e178c3241f121b3306aa323a4904be83 (patch) | |
tree | 55f86e2013ef44e53b42e046626ef38f6ce236be | |
parent | 3eb6418e3023828f500f7ad8c63f00c3986afac7 (diff) | |
download | vdr-plugin-skindesigner-480b0a44e178c3241f121b3306aa323a4904be83.tar.gz vdr-plugin-skindesigner-480b0a44e178c3241f121b3306aa323a4904be83.tar.bz2 |
made viewelement scrapercontent in displayreplay detachable
-rw-r--r-- | HISTORY | 1 | ||||
-rw-r--r-- | views/displaychannelview.c | 2 | ||||
-rw-r--r-- | views/displayreplayview.c | 80 | ||||
-rw-r--r-- | views/displayviewelements.c | 9 | ||||
-rw-r--r-- | views/displayviewelements.h | 10 | ||||
-rw-r--r-- | views/viewhelpers.c | 66 | ||||
-rw-r--r-- | views/viewhelpers.h | 1 |
7 files changed, 96 insertions, 73 deletions
@@ -369,3 +369,4 @@ Version 0.5.2 - fixed bug searching channel logos with channelid - fixed bug in parsing printf text tokens - changed "Update from Git" to "Update" +- made viewelement scrapercontent in displayreplay detachable diff --git a/views/displaychannelview.c b/views/displaychannelview.c index 47537ec..06ebe88 100644 --- a/views/displaychannelview.c +++ b/views/displaychannelview.c @@ -363,7 +363,7 @@ void cDisplayChannelView::DrawScraperContent(const cEvent *event) { if (DetachViewElement(veScraperContent)) { cViewElementScraperContent *viewElement = dynamic_cast<cViewElementScraperContent*>(GetViewElement(veScraperContent)); if (!viewElement) { - viewElement = new cViewElementScraperContent(event, ctPosterBanner, tmplView->GetViewElement(veScraperContent)); + viewElement = new cViewElementScraperContent(event, NULL, tmplView->GetViewElement(veScraperContent)); AddViewElement(veScraperContent, viewElement); viewElement->Start(); } else { diff --git a/views/displayreplayview.c b/views/displayreplayview.c index 385ed2e..364b801 100644 --- a/views/displayreplayview.c +++ b/views/displayreplayview.c @@ -1,6 +1,7 @@ #define __STL_CONFIG_H #include <vdr/menu.h> #include "../services/scraper2vdr.h" +#include "displayviewelements.h" #include "displayreplayview.h" #include "../libcore/helpers.h" @@ -152,71 +153,26 @@ void cDisplayReplayView::DrawScraperContent(const cRecording *recording) { return; } - int mediaWidth = 0; - int mediaHeight = 0; - string mediaPath = ""; - bool isBanner = false; - int posterWidth = 0; - int posterHeight = 0; - string posterPath = ""; - bool hasPoster = false; - int bannerWidth = 0; - int bannerHeight = 0; - string bannerPath = ""; - bool hasBanner = false; - - static cPlugin *pScraper = GetScraperPlugin(); - if (pScraper) { - ScraperGetPosterBannerV2 call; - call.event = NULL; - call.recording = recording; - if (pScraper->Service("GetPosterBannerV2", &call)) { - if ((call.type == tSeries) && call.banner.path.size() > 0) { - mediaWidth = call.banner.width; - mediaHeight = call.banner.height; - mediaPath = call.banner.path; - isBanner = true; - bannerWidth = mediaWidth; - bannerHeight = mediaHeight; - bannerPath = mediaPath; - hasBanner = true; - - ScraperGetPoster callPoster; - callPoster.event = NULL; - callPoster.recording = recording; - if (pScraper->Service("GetPoster", &callPoster)) { - posterWidth = callPoster.poster.width; - posterHeight = callPoster.poster.height; - posterPath = callPoster.poster.path; - hasPoster = true; - } - } else if (call.type == tMovie && call.poster.path.size() > 0 && call.poster.height > 0) { - mediaWidth = call.poster.width; - mediaHeight = call.poster.height; - mediaPath = call.poster.path; - posterWidth = call.poster.width; - posterHeight = call.poster.height; - posterPath = call.poster.path; - hasPoster = true; + if (DetachViewElement(veScraperContent)) { + cViewElementScraperContent *viewElement = dynamic_cast<cViewElementScraperContent*>(GetViewElement(veScraperContent)); + if (!viewElement) { + viewElement = new cViewElementScraperContent(NULL, recording, tmplView->GetViewElement(veScraperContent)); + AddViewElement(veScraperContent, viewElement); + viewElement->Start(); + } else { + if (!viewElement->Starting()) { + viewElement->SetRecording(recording); + viewElement->Render(); } } + } else { + map < string, string > stringTokens; + map < string, int > intTokens; + + SetPosterBannerV2(recording, stringTokens, intTokens); + ClearViewElement(veScraperContent); + DrawViewElement(veScraperContent, &stringTokens, &intTokens); } - map < string, int > intTokens; - map < string, string > stringTokens; - intTokens.insert(pair<string,int>("mediawidth", mediaWidth)); - intTokens.insert(pair<string,int>("mediaheight", mediaHeight)); - intTokens.insert(pair<string,int>("isbanner", isBanner)); - stringTokens.insert(pair<string,string>("mediapath", mediaPath)); - intTokens.insert(pair<string,int>("posterwidth", posterWidth)); - intTokens.insert(pair<string,int>("posterheight", posterHeight)); - stringTokens.insert(pair<string,string>("posterpath", posterPath)); - intTokens.insert(pair<string,int>("hasposter", hasPoster)); - intTokens.insert(pair<string,int>("bannerwidth", bannerWidth)); - intTokens.insert(pair<string,int>("bannerheight", bannerHeight)); - stringTokens.insert(pair<string,string>("bannerpath", bannerPath)); - intTokens.insert(pair<string,int>("hasbanner", hasBanner)); - ClearViewElement(veScraperContent); - DrawViewElement(veScraperContent, &stringTokens, &intTokens); } void cDisplayReplayView::DrawCurrent(const char *current) { diff --git a/views/displayviewelements.c b/views/displayviewelements.c index b09f1d5..1f60804 100644 --- a/views/displayviewelements.c +++ b/views/displayviewelements.c @@ -27,14 +27,17 @@ bool cViewElementDevices::Render(void) { /********************************************************************************************************************/ -cViewElementScraperContent::cViewElementScraperContent(const cEvent *event, ScraperContentType type, cTemplateViewElement *tmplViewElement) : cViewElement(tmplViewElement) { +cViewElementScraperContent::cViewElementScraperContent(const cEvent *event, const cRecording *recording, cTemplateViewElement *tmplViewElement) : cViewElement(tmplViewElement) { this->event = event; - this->type = type; + this->recording = recording; } bool cViewElementScraperContent::Render(void) { ClearTokens(); - SetPosterBanner(event, stringTokens, intTokens); + if (event) + SetPosterBanner(event, stringTokens, intTokens); + else if (recording) + SetPosterBannerV2(recording, stringTokens, intTokens); ClearViewElement(veScraperContent); DrawViewElement(veScraperContent, &stringTokens, &intTokens); return true; diff --git a/views/displayviewelements.h b/views/displayviewelements.h index d55f562..72d31e9 100644 --- a/views/displayviewelements.h +++ b/views/displayviewelements.h @@ -15,19 +15,15 @@ public: bool Render(void); }; -enum ScraperContentType { - ctPosterBanner, - ctFull -}; - class cViewElementScraperContent : public cViewElement, public cViewHelpers { private: - ScraperContentType type; const cEvent *event; + const cRecording *recording; public: - cViewElementScraperContent(const cEvent *event, ScraperContentType type, cTemplateViewElement *tmplViewElement); + cViewElementScraperContent(const cEvent *event, const cRecording *recording, cTemplateViewElement *tmplViewElement); virtual ~cViewElementScraperContent() {}; void SetEvent(const cEvent *event) { this->event = event; }; + void SetRecording(const cRecording *recording) { this->recording = recording; }; bool Render(void); }; diff --git a/views/viewhelpers.c b/views/viewhelpers.c index d504dad..8643753 100644 --- a/views/viewhelpers.c +++ b/views/viewhelpers.c @@ -727,6 +727,72 @@ void cViewHelpers::SetPosterBanner(const cEvent *event, stringmap &stringTokens, } } +void cViewHelpers::SetPosterBannerV2(const cRecording *recording, stringmap &stringTokens, intmap &intTokens) { + static cPlugin *pScraper = GetScraperPlugin(); + if (!pScraper) { + return; + } + + int mediaWidth = 0; + int mediaHeight = 0; + string mediaPath = ""; + bool isBanner = false; + int posterWidth = 0; + int posterHeight = 0; + string posterPath = ""; + bool hasPoster = false; + int bannerWidth = 0; + int bannerHeight = 0; + string bannerPath = ""; + bool hasBanner = false; + + ScraperGetPosterBannerV2 call; + call.event = NULL; + call.recording = recording; + if (pScraper->Service("GetPosterBannerV2", &call)) { + if ((call.type == tSeries) && call.banner.path.size() > 0) { + mediaWidth = call.banner.width; + mediaHeight = call.banner.height; + mediaPath = call.banner.path; + isBanner = true; + bannerWidth = mediaWidth; + bannerHeight = mediaHeight; + bannerPath = mediaPath; + hasBanner = true; + + ScraperGetPoster callPoster; + callPoster.event = NULL; + callPoster.recording = recording; + if (pScraper->Service("GetPoster", &callPoster)) { + posterWidth = callPoster.poster.width; + posterHeight = callPoster.poster.height; + posterPath = callPoster.poster.path; + hasPoster = true; + } + } else if (call.type == tMovie && call.poster.path.size() > 0 && call.poster.height > 0) { + mediaWidth = call.poster.width; + mediaHeight = call.poster.height; + mediaPath = call.poster.path; + posterWidth = call.poster.width; + posterHeight = call.poster.height; + posterPath = call.poster.path; + hasPoster = true; + } + } + intTokens.insert(pair<string,int>("mediawidth", mediaWidth)); + intTokens.insert(pair<string,int>("mediaheight", mediaHeight)); + intTokens.insert(pair<string,int>("isbanner", isBanner)); + stringTokens.insert(pair<string,string>("mediapath", mediaPath)); + intTokens.insert(pair<string,int>("posterwidth", posterWidth)); + intTokens.insert(pair<string,int>("posterheight", posterHeight)); + stringTokens.insert(pair<string,string>("posterpath", posterPath)); + intTokens.insert(pair<string,int>("hasposter", hasPoster)); + intTokens.insert(pair<string,int>("bannerwidth", bannerWidth)); + intTokens.insert(pair<string,int>("bannerheight", bannerHeight)); + stringTokens.insert(pair<string,string>("bannerpath", bannerPath)); + intTokens.insert(pair<string,int>("hasbanner", hasBanner)); +} + 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(); diff --git a/views/viewhelpers.h b/views/viewhelpers.h index e1675bc..c66b6f6 100644 --- a/views/viewhelpers.h +++ b/views/viewhelpers.h @@ -35,6 +35,7 @@ protected: int GetLiveBuffer(void); 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 SetPosterBannerV2(const cRecording *recording, 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); |