summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2016-02-28 12:32:02 +0100
committerlouis <louis.braun@gmx.de>2016-02-28 12:32:02 +0100
commitb288ead2c506e31b660ac56a12787b8cdcf07069 (patch)
tree6d2c76bed0af0cd6857de2242bbec32fc3b6f238
parent3c038ad1c73d85dd75cc5eb1e746ef7298cf5843 (diff)
downloadvdr-plugin-skindesigner-b288ead2c506e31b660ac56a12787b8cdcf07069.tar.gz
vdr-plugin-skindesigner-b288ead2c506e31b660ac56a12787b8cdcf07069.tar.bz2
added poster and banner to channels and timers menu current view
-rw-r--r--coreengine/definitions.h8
-rw-r--r--coreengine/listelements.c13
-rw-r--r--coreengine/listelements.h4
-rw-r--r--extensions/scrapmanager.c48
-rw-r--r--extensions/scrapmanager.h2
-rw-r--r--skinskeleton/xmlfiles/displaymenuchannels.xml4
-rw-r--r--skinskeleton/xmlfiles/displaymenutimers.xml4
7 files changed, 80 insertions, 3 deletions
diff --git a/coreengine/definitions.h b/coreengine/definitions.h
index c1da5ce..2c49707 100644
--- a/coreengine/definitions.h
+++ b/coreengine/definitions.h
@@ -830,6 +830,7 @@ enum class eCeMenuChannelsST {
presenteventdate,
presenteventdurationminutes,
posterpath,
+ bannerpath,
nexteventtitle,
nexteventstart,
nexteventstop,
@@ -861,6 +862,9 @@ enum class eCeMenuChannelsIT {
hasposter,
posterwidth,
posterheight,
+ hasbanner,
+ bannerwidth,
+ bannerheight,
nexteventduration,
nexteventdurationhours,
count
@@ -920,6 +924,7 @@ enum class eCeMenuTimersST {
eventshorttext,
eventdescription,
posterpath,
+ bannerpath,
count
};
@@ -940,6 +945,9 @@ enum class eCeMenuTimersIT {
hasposter,
posterwidth,
posterheight,
+ hasbanner,
+ bannerwidth,
+ bannerheight,
count
};
diff --git a/coreengine/listelements.c b/coreengine/listelements.c
index 71acc24..b9fd0c8 100644
--- a/coreengine/listelements.c
+++ b/coreengine/listelements.c
@@ -968,6 +968,7 @@ void cCeMenuChannels::SetTokenContainer(void) {
tokenContainer->DefineStringToken("{presenteventdate}", (int)eCeMenuChannelsST::presenteventdate);
tokenContainer->DefineStringToken("{presenteventdurationminutes}", (int)eCeMenuChannelsST::presenteventdurationminutes);
tokenContainer->DefineStringToken("{posterpath}", (int)eCeMenuChannelsST::posterpath);
+ tokenContainer->DefineStringToken("{bannerpath}", (int)eCeMenuChannelsST::bannerpath);
tokenContainer->DefineStringToken("{nexteventtitle}", (int)eCeMenuChannelsST::nexteventtitle);
tokenContainer->DefineStringToken("{nexteventstart}", (int)eCeMenuChannelsST::nexteventstart);
tokenContainer->DefineStringToken("{nexteventstop}", (int)eCeMenuChannelsST::nexteventstop);
@@ -995,6 +996,9 @@ void cCeMenuChannels::SetTokenContainer(void) {
tokenContainer->DefineIntToken("{hasposter}", (int)eCeMenuChannelsIT::hasposter);
tokenContainer->DefineIntToken("{posterwidth}", (int)eCeMenuChannelsIT::posterwidth);
tokenContainer->DefineIntToken("{posterheight}", (int)eCeMenuChannelsIT::posterheight);
+ tokenContainer->DefineIntToken("{hasbanner}", (int)eCeMenuChannelsIT::hasbanner);
+ tokenContainer->DefineIntToken("{bannerwidth}", (int)eCeMenuChannelsIT::bannerwidth);
+ tokenContainer->DefineIntToken("{bannerheight}", (int)eCeMenuChannelsIT::bannerheight);
tokenContainer->DefineIntToken("{nexteventduration}", (int)eCeMenuChannelsIT::nexteventduration);
tokenContainer->DefineIntToken("{nexteventdurationhours}", (int)eCeMenuChannelsIT::nexteventdurationhours);
tokenContainer->DefineLoopToken("{schedule[title]}", (int)eCeMenuChannelsLT::title);
@@ -1060,7 +1064,8 @@ bool cCeMenuChannels::Parse(bool forced) {
tokenContainer->AddIntToken((int)eCeMenuChannelsIT::presenteventduration, presentEvent->Duration() / 60);
tokenContainer->AddIntToken((int)eCeMenuChannelsIT::presenteventdurationhours, presentEvent->Duration() / 3600);
tokenContainer->AddStringToken((int)eCeMenuChannelsST::presenteventdurationminutes, *cString::sprintf("%.2d", (presentEvent->Duration() / 60)%60));
- //SetScraperPoster(presentEvent);
+ if (LoadFullScrapInfo(presentEvent, NULL))
+ SetScraperPosterBannerChannel(tokenContainer);
}
const cList<cEvent> *events = schedule->Events();
if (events && presentEvent) {
@@ -1276,6 +1281,7 @@ void cCeMenuTimers::SetTokenContainer(void) {
tokenContainer->DefineStringToken("{eventshorttext}", (int)eCeMenuTimersST::eventshorttext);
tokenContainer->DefineStringToken("{eventdescription}", (int)eCeMenuTimersST::eventdescription);
tokenContainer->DefineStringToken("{posterpath}", (int)eCeMenuTimersST::posterpath);
+ tokenContainer->DefineStringToken("{bannerpath}", (int)eCeMenuTimersST::bannerpath);
tokenContainer->DefineIntToken("{menuitemx}", (int)eCeMenuTimersIT::menuitemx);
tokenContainer->DefineIntToken("{menuitemy}", (int)eCeMenuTimersIT::menuitemy);
tokenContainer->DefineIntToken("{menuitemwidth}", (int)eCeMenuTimersIT::menuitemwidth);
@@ -1292,6 +1298,9 @@ void cCeMenuTimers::SetTokenContainer(void) {
tokenContainer->DefineIntToken("{hasposter}", (int)eCeMenuTimersIT::hasposter);
tokenContainer->DefineIntToken("{posterwidth}", (int)eCeMenuTimersIT::posterwidth);
tokenContainer->DefineIntToken("{posterheight}", (int)eCeMenuTimersIT::posterheight);
+ tokenContainer->DefineIntToken("{hasbanner}", (int)eCeMenuTimersIT::hasbanner);
+ tokenContainer->DefineIntToken("{bannerwidth}", (int)eCeMenuTimersIT::bannerwidth);
+ tokenContainer->DefineIntToken("{bannerheight}", (int)eCeMenuTimersIT::bannerheight);
InheritTokenContainer();
}
@@ -1374,6 +1383,8 @@ bool cCeMenuTimers::Parse(bool forced) {
tokenContainer->AddStringToken((int)eCeMenuTimersST::eventstop, *event->GetEndTimeString());
tokenContainer->AddStringToken((int)eCeMenuTimersST::eventshorttext, event->ShortText());
tokenContainer->AddStringToken((int)eCeMenuTimersST::eventdescription, event->Description());
+ if (LoadFullScrapInfo(event, NULL))
+ SetScraperPosterBannerTimer(tokenContainer);
}
return true;
}
diff --git a/coreengine/listelements.h b/coreengine/listelements.h
index e1520c3..d3dfc84 100644
--- a/coreengine/listelements.h
+++ b/coreengine/listelements.h
@@ -195,7 +195,7 @@ public:
/******************************************************************
* cCeMenuChannels
******************************************************************/
-class cCeMenuChannels : public cCurrentElement {
+class cCeMenuChannels : public cCurrentElement, public cScrapManager {
private:
const cChannel *channel;
bool withProvider;
@@ -231,7 +231,7 @@ public:
/******************************************************************
* cCeMenuTimers
******************************************************************/
-class cCeMenuTimers : public cCurrentElement {
+class cCeMenuTimers : public cCurrentElement, public cScrapManager {
private:
const cTimer *timer;
public:
diff --git a/extensions/scrapmanager.c b/extensions/scrapmanager.c
index c1fd69f..1c65f71 100644
--- a/extensions/scrapmanager.c
+++ b/extensions/scrapmanager.c
@@ -128,6 +128,54 @@ void cScrapManager::SetScraperPosterBanner(skindesignerapi::cTokenContainer *tk)
}
}
+void cScrapManager::SetScraperPosterBannerChannel(skindesignerapi::cTokenContainer *tk) {
+ if (movie) {
+ tk->AddIntToken((int)eCeMenuChannelsIT::hasposter, 1);
+ tk->AddStringToken((int)eCeMenuChannelsST::posterpath, movie->poster.path.c_str());
+ tk->AddIntToken((int)eCeMenuChannelsIT::posterwidth, movie->poster.width);
+ tk->AddIntToken((int)eCeMenuChannelsIT::posterheight, movie->poster.height);
+ } else if (series) {
+ vector<cTvMedia>::iterator poster = series->posters.begin();
+ if (poster != series->posters.end()) {
+ tk->AddIntToken((int)eCeMenuChannelsIT::hasposter, 1);
+ tk->AddIntToken((int)eCeMenuChannelsIT::posterwidth, (*poster).width);
+ tk->AddIntToken((int)eCeMenuChannelsIT::posterheight, (*poster).height);
+ tk->AddStringToken((int)eCeMenuChannelsST::posterpath, (*poster).path.c_str());
+ }
+ vector<cTvMedia>::iterator banner = series->banners.begin();
+ if (banner != series->banners.end()) {
+ tk->AddIntToken((int)eCeMenuChannelsIT::hasbanner, 1);
+ tk->AddIntToken((int)eCeMenuChannelsIT::bannerwidth, (*banner).width);
+ tk->AddIntToken((int)eCeMenuChannelsIT::bannerheight, (*banner).height);
+ tk->AddStringToken((int)eCeMenuChannelsST::bannerpath, (*banner).path.c_str());
+ }
+ }
+}
+
+void cScrapManager::SetScraperPosterBannerTimer(skindesignerapi::cTokenContainer *tk) {
+ if (movie) {
+ tk->AddIntToken((int)eCeMenuTimersIT::hasposter, 1);
+ tk->AddStringToken((int)eCeMenuTimersST::posterpath, movie->poster.path.c_str());
+ tk->AddIntToken((int)eCeMenuTimersIT::posterwidth, movie->poster.width);
+ tk->AddIntToken((int)eCeMenuTimersIT::posterheight, movie->poster.height);
+ } else if (series) {
+ vector<cTvMedia>::iterator poster = series->posters.begin();
+ if (poster != series->posters.end()) {
+ tk->AddIntToken((int)eCeMenuTimersIT::hasposter, 1);
+ tk->AddIntToken((int)eCeMenuTimersIT::posterwidth, (*poster).width);
+ tk->AddIntToken((int)eCeMenuTimersIT::posterheight, (*poster).height);
+ tk->AddStringToken((int)eCeMenuTimersST::posterpath, (*poster).path.c_str());
+ }
+ vector<cTvMedia>::iterator banner = series->banners.begin();
+ if (banner != series->banners.end()) {
+ tk->AddIntToken((int)eCeMenuTimersIT::hasbanner, 1);
+ tk->AddIntToken((int)eCeMenuTimersIT::bannerwidth, (*banner).width);
+ tk->AddIntToken((int)eCeMenuTimersIT::bannerheight, (*banner).height);
+ tk->AddStringToken((int)eCeMenuTimersST::bannerpath, (*banner).path.c_str());
+ }
+ }
+}
+
void cScrapManager::SetScraperRecordingPoster(skindesignerapi::cTokenContainer *tk, const cRecording *recording, bool isListElement) {
if (!pScraper) {
return;
diff --git a/extensions/scrapmanager.h b/extensions/scrapmanager.h
index a1ff449..2525b5f 100644
--- a/extensions/scrapmanager.h
+++ b/extensions/scrapmanager.h
@@ -18,6 +18,8 @@ protected:
int NumActors(void);
void SetHeaderScrapInfo(skindesignerapi::cTokenContainer *tk);
void SetScraperPosterBanner(skindesignerapi::cTokenContainer *tk);
+ void SetScraperPosterBannerChannel(skindesignerapi::cTokenContainer *tk);
+ void SetScraperPosterBannerTimer(skindesignerapi::cTokenContainer *tk);
void SetScraperRecordingPoster(skindesignerapi::cTokenContainer *tk, const cRecording *recording, bool isListElement);
void RecPoster(const cRecording *rec, int &posterWidth, int &posterHeight, string &path, bool &hasPoster);
void SetPosterBanner(skindesignerapi::cTokenContainer *tk, const cEvent *event, const cRecording *recording);
diff --git a/skinskeleton/xmlfiles/displaymenuchannels.xml b/skinskeleton/xmlfiles/displaymenuchannels.xml
index bee9079..a8f528f 100644
--- a/skinskeleton/xmlfiles/displaymenuchannels.xml
+++ b/skinskeleton/xmlfiles/displaymenuchannels.xml
@@ -59,6 +59,10 @@
{posterwidth} width of scraped poster
{posterheight} height of scraped poster
{posterpath} absolute path of scraped poster
+ {hasbanner} true if a scraped banner is available for this elements present evemt
+ {bannerwidth} width of scraped banner
+ {bannerheight} height of scraped banner
+ {bannerpath} absolute path of scraped banner
{nexteventtitle} title of next event on this channel
{nexteventstart} next event start time in hh::mm
{nexteventstop} next event event stop time in hh::mm
diff --git a/skinskeleton/xmlfiles/displaymenutimers.xml b/skinskeleton/xmlfiles/displaymenutimers.xml
index e806240..7889572 100644
--- a/skinskeleton/xmlfiles/displaymenutimers.xml
+++ b/skinskeleton/xmlfiles/displaymenutimers.xml
@@ -53,6 +53,10 @@
{posterwidth} width of scraped poster
{posterheight} height of scraped poster
{posterpath} absolute path of scraped poster
+ {hasbanner} true if a scraped banner is available for event
+ {bannerwidth} width of scraped banner
+ {bannerheight} height of scraped banner
+ {bannerpath} absolute path of scraped banner
{flagactive} true if timer is active
{flaginstant} true if timer is an instant timer
{flagvps} true if timer uses VPS