summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2015-06-13 15:41:41 +0200
committerlouis <louis.braun@gmx.de>2015-06-13 15:41:41 +0200
commit480b0a44e178c3241f121b3306aa323a4904be83 (patch)
tree55f86e2013ef44e53b42e046626ef38f6ce236be
parent3eb6418e3023828f500f7ad8c63f00c3986afac7 (diff)
downloadvdr-plugin-skindesigner-480b0a44e178c3241f121b3306aa323a4904be83.tar.gz
vdr-plugin-skindesigner-480b0a44e178c3241f121b3306aa323a4904be83.tar.bz2
made viewelement scrapercontent in displayreplay detachable
-rw-r--r--HISTORY1
-rw-r--r--views/displaychannelview.c2
-rw-r--r--views/displayreplayview.c80
-rw-r--r--views/displayviewelements.c9
-rw-r--r--views/displayviewelements.h10
-rw-r--r--views/viewhelpers.c66
-rw-r--r--views/viewhelpers.h1
7 files changed, 96 insertions, 73 deletions
diff --git a/HISTORY b/HISTORY
index 312e2aa..36bfc23 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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);