From 76ab3e4cef2ef37ea8e9f2ababfd4b8c98ceaf54 Mon Sep 17 00:00:00 2001 From: louis Date: Sat, 29 Nov 2014 11:23:54 +0100 Subject: added onpause and onpausemodeonly in displayreplay --- views/displaymenudetailview.c | 210 +-------------------------------------- views/displaymenudetailview.h | 4 +- views/displayreplayonpauseview.c | 93 +++++++++++++++++ views/displayreplayonpauseview.h | 18 ++++ views/displayreplayview.c | 20 ++++ views/displayreplayview.h | 4 + views/view.c | 3 +- views/viewhelpers.c | 206 ++++++++++++++++++++++++++++++++++++++ views/viewhelpers.h | 1 + 9 files changed, 347 insertions(+), 212 deletions(-) create mode 100644 views/displayreplayonpauseview.c create mode 100644 views/displayreplayonpauseview.h (limited to 'views') diff --git a/views/displaymenudetailview.c b/views/displaymenudetailview.c index 2e3bf4c..c24fc6b 100644 --- a/views/displaymenudetailview.c +++ b/views/displaymenudetailview.c @@ -153,7 +153,7 @@ void cDisplayMenuDetailView::SetTokens(void) { intTokens.insert(pair("hasreruns", hasReruns)); - SetScraperTokens(); + SetScraperTokens(event, recording, stringTokens, intTokens, loopTokens); SetEpgPictures(event->EventID()); } else if (recording) { @@ -205,7 +205,7 @@ void cDisplayMenuDetailView::SetTokens(void) { stringTokens.insert(pair("durationeventminutes", "")); } LoadRecordingInformation(); - SetScraperTokens(); + SetScraperTokens(event, recording, stringTokens, intTokens, loopTokens); SetRecordingImages(recording->FileName()); } else if (text) { stringTokens.insert(pair("text", text)); @@ -215,212 +215,6 @@ void cDisplayMenuDetailView::SetTokens(void) { } } -void cDisplayMenuDetailView::SetScraperTokens(void) { - static cPlugin *pScraper = GetScraperPlugin(); - if (!pScraper || (!event && !recording)) { - intTokens.insert(pair("ismovie", false)); - intTokens.insert(pair("isseries", false)); - return; - } - - ScraperGetEventType getType; - getType.event = event; - getType.recording = recording; - if (!pScraper->Service("GetEventType", &getType)) { - intTokens.insert(pair("ismovie", false)); - intTokens.insert(pair("isseries", false)); - return; - } - - if (getType.type == tMovie) { - cMovie movie; - movie.movieId = getType.movieId; - pScraper->Service("GetMovie", &movie); - intTokens.insert(pair("ismovie", true)); - intTokens.insert(pair("isseries", false)); - - stringTokens.insert(pair("movietitle", movie.title)); - stringTokens.insert(pair("movieoriginalTitle", movie.originalTitle)); - stringTokens.insert(pair("movietagline", movie.tagline)); - stringTokens.insert(pair("movieoverview", movie.overview)); - stringTokens.insert(pair("moviegenres", movie.genres)); - stringTokens.insert(pair("moviehomepage", movie.homepage)); - stringTokens.insert(pair("moviereleasedate", movie.releaseDate)); - stringstream pop; - pop << movie.popularity; - stringTokens.insert(pair("moviepopularity", pop.str())); - stringstream vote; - vote << movie.voteAverage; - stringTokens.insert(pair("movievoteaverage", pop.str())); - stringTokens.insert(pair("posterpath", movie.poster.path)); - stringTokens.insert(pair("fanartpath", movie.fanart.path)); - stringTokens.insert(pair("collectionposterpath", movie.collectionPoster.path)); - stringTokens.insert(pair("collectionfanartpath", movie.collectionFanart.path)); - - intTokens.insert(pair("movieadult", movie.adult)); - intTokens.insert(pair("moviebudget", movie.budget)); - intTokens.insert(pair("movierevenue", movie.revenue)); - intTokens.insert(pair("movieruntime", movie.runtime)); - intTokens.insert(pair("posterwidth", movie.poster.width)); - intTokens.insert(pair("posterheight", movie.poster.height)); - intTokens.insert(pair("fanartwidth", movie.fanart.width)); - intTokens.insert(pair("fanartheight", movie.fanart.height)); - intTokens.insert(pair("collectionposterwidth", movie.collectionPoster.width)); - intTokens.insert(pair("collectionposterheight", movie.collectionPoster.height)); - intTokens.insert(pair("collectionfanartwidth", movie.collectionFanart.width)); - intTokens.insert(pair("collectionfanartheight", movie.collectionFanart.height)); - - vector< map< string, string > > actors; - for (vector::iterator act = movie.actors.begin(); act != movie.actors.end(); act++) { - map< string, string > actor; - actor.insert(pair("actors[name]", (*act).name)); - actor.insert(pair("actors[role]", (*act).role)); - actor.insert(pair("actors[thumb]", (*act).actorThumb.path)); - stringstream actWidth, actHeight; - actWidth << (*act).actorThumb.width; - actHeight << (*act).actorThumb.height; - actor.insert(pair("actors[thumbwidth]", actWidth.str())); - actor.insert(pair("actors[thumbheight]", actHeight.str())); - actors.push_back(actor); - } - loopTokens.insert(pair > >("actors", actors)); - - } else if (getType.type == tSeries) { - cSeries series; - series.seriesId = getType.seriesId; - series.episodeId = getType.episodeId; - pScraper->Service("GetSeries", &series); - intTokens.insert(pair("ismovie", false)); - intTokens.insert(pair("isseries", true)); - //Series Basics - stringTokens.insert(pair("seriesname", series.name)); - stringTokens.insert(pair("seriesoverview", series.overview)); - stringTokens.insert(pair("seriesfirstaired", series.firstAired)); - stringTokens.insert(pair("seriesnetwork", series.network)); - stringTokens.insert(pair("seriesgenre", series.genre)); - stringstream rating; - rating << series.rating; - stringTokens.insert(pair("seriesrating", rating.str())); - stringTokens.insert(pair("seriesstatus", series.status)); - //Episode Information - intTokens.insert(pair("episodenumber", series.episode.number)); - intTokens.insert(pair("episodeseason", series.episode.season)); - stringTokens.insert(pair("episodetitle", series.episode.name)); - stringTokens.insert(pair("episodefirstaired", series.episode.firstAired)); - stringTokens.insert(pair("episodegueststars", series.episode.guestStars)); - stringTokens.insert(pair("episodeoverview", series.episode.overview)); - stringstream eprating; - eprating << series.episode.rating; - stringTokens.insert(pair("episoderating", eprating.str())); - intTokens.insert(pair("episodeimagewidth", series.episode.episodeImage.width)); - intTokens.insert(pair("episodeimageheight", series.episode.episodeImage.height)); - stringTokens.insert(pair("episodeimagepath", series.episode.episodeImage.path)); - //Seasonposter - intTokens.insert(pair("seasonposterwidth", series.seasonPoster.width)); - intTokens.insert(pair("seasonposterheight", series.seasonPoster.height)); - stringTokens.insert(pair("seasonposterpath", series.seasonPoster.path)); - - //Posters - int current = 1; - for(vector::iterator poster = series.posters.begin(); poster != series.posters.end(); poster++) { - stringstream labelWidth, labelHeight, labelPath; - labelWidth << "seriesposter" << current << "width"; - labelHeight << "seriesposter" << current << "height"; - labelPath << "seriesposter" << current << "path"; - - intTokens.insert(pair(labelWidth.str(), (*poster).width)); - intTokens.insert(pair(labelHeight.str(), (*poster).height)); - stringTokens.insert(pair(labelPath.str(), (*poster).path)); - current++; - } - if (current < 3) { - for (; current < 4; current++) { - stringstream labelWidth, labelHeight, labelPath; - labelWidth << "seriesposter" << current << "width"; - labelHeight << "seriesposter" << current << "height"; - labelPath << "seriesposter" << current << "path"; - - intTokens.insert(pair(labelWidth.str(), 0)); - intTokens.insert(pair(labelHeight.str(), 0)); - stringTokens.insert(pair(labelPath.str(), "")); - } - } - - //Banners - current = 1; - for(vector::iterator banner = series.banners.begin(); banner != series.banners.end(); banner++) { - stringstream labelWidth, labelHeight, labelPath; - labelWidth << "seriesbanner" << current << "width"; - labelHeight << "seriesbanner" << current << "height"; - labelPath << "seriesbanner" << current << "path"; - - intTokens.insert(pair(labelWidth.str(), (*banner).width)); - intTokens.insert(pair(labelHeight.str(), (*banner).height)); - stringTokens.insert(pair(labelPath.str(), (*banner).path)); - current++; - } - if (current < 3) { - for (; current < 4; current++) { - stringstream labelWidth, labelHeight, labelPath; - labelWidth << "seriesbanner" << current << "width"; - labelHeight << "seriesbanner" << current << "height"; - labelPath << "seriesbanner" << current << "path"; - - intTokens.insert(pair(labelWidth.str(), 0)); - intTokens.insert(pair(labelHeight.str(), 0)); - stringTokens.insert(pair(labelPath.str(), "")); - } - } - - //Fanarts - current = 1; - for(vector::iterator fanart = series.fanarts.begin(); fanart != series.fanarts.end(); fanart++) { - stringstream labelWidth, labelHeight, labelPath; - labelWidth << "seriesfanart" << current << "width"; - labelHeight << "seriesfanart" << current << "height"; - labelPath << "seriesfanart" << current << "path"; - - intTokens.insert(pair(labelWidth.str(), (*fanart).width)); - intTokens.insert(pair(labelHeight.str(), (*fanart).height)); - stringTokens.insert(pair(labelPath.str(), (*fanart).path)); - current++; - } - if (current < 3) { - for (; current < 4; current++) { - stringstream labelWidth, labelHeight, labelPath; - labelWidth << "seriesfanart" << current << "width"; - labelHeight << "seriesfanart" << current << "height"; - labelPath << "seriesfanart" << current << "path"; - - intTokens.insert(pair(labelWidth.str(), 0)); - intTokens.insert(pair(labelHeight.str(), 0)); - stringTokens.insert(pair(labelPath.str(), "")); - } - } - - //Actors - vector< map< string, string > > actors; - for (vector::iterator act = series.actors.begin(); act != series.actors.end(); act++) { - map< string, string > actor; - actor.insert(pair("actors[name]", (*act).name)); - actor.insert(pair("actors[role]", (*act).role)); - actor.insert(pair("actors[thumb]", (*act).actorThumb.path)); - stringstream actWidth, actHeight; - actWidth << (*act).actorThumb.width; - actHeight << (*act).actorThumb.height; - actor.insert(pair("actors[thumbwidth]", actWidth.str())); - actor.insert(pair("actors[thumbheight]", actHeight.str())); - actors.push_back(actor); - } - loopTokens.insert(pair > >("actors", actors)); - - } else { - intTokens.insert(pair("ismovie", false)); - intTokens.insert(pair("isseries", false)); - } - -} - void cDisplayMenuDetailView::InitTabs(void) { tmplView->InitViewTabIterator(); cTemplateViewTab *tmplTab = NULL; diff --git a/views/displaymenudetailview.h b/views/displaymenudetailview.h index 2387609..1b43687 100644 --- a/views/displaymenudetailview.h +++ b/views/displaymenudetailview.h @@ -4,9 +4,10 @@ #include #include "../libtemplate/template.h" #include "view.h" +#include "viewhelpers.h" #include "displaymenutabview.h" -class cDisplayMenuDetailView : public cView { +class cDisplayMenuDetailView : public cView, public cViewHelpers { private: bool detailViewInit; bool isPluginTextView; @@ -21,7 +22,6 @@ private: map < string, int > intTokens; map < string, vector< map< string, string > > > loopTokens; void SetTokens(void); - void SetScraperTokens(void); void InitTabs(void); bool LoadReruns(vector< map< string, string > > *reruns); void LoadRecordingInformation(void); diff --git a/views/displayreplayonpauseview.c b/views/displayreplayonpauseview.c new file mode 100644 index 0000000..976d37b --- /dev/null +++ b/views/displayreplayonpauseview.c @@ -0,0 +1,93 @@ +#define __STL_CONFIG_H +#include +#include "displayreplayonpauseview.h" + +cDisplayReplayOnPauseView::cDisplayReplayOnPauseView(cTemplateViewElement *tmplViewElement) : cView(tmplViewElement) { + tmplViewElement->SetPixOffset(0); + delay = tmplViewElement->GetNumericParameter(ptDelay) * 1000; + SetFadeTime(tmplViewElement->GetNumericParameter(ptFadeTime)); +} + +cDisplayReplayOnPauseView::~cDisplayReplayOnPauseView() { + CancelSave(); + FadeOut(); +} + +void cDisplayReplayOnPauseView::Render(void) { + map < string, string > stringTokens; + map < string, int > intTokens; + map < string, vector< map< string, string > > > loopTokens; + const cRecording *recording = NULL; + cControl *control = cControl::Control(); + if (control) { + recording = control->GetRecording(); + } + if (recording) { + string name = recording->Name() ? recording->Name() : ""; + stringTokens.insert(pair("name", name)); + const cRecordingInfo *info = recording->Info(); + if (info) { + stringTokens.insert(pair("shorttext", info->ShortText() ? info->ShortText() : "")); + stringTokens.insert(pair("description", info->Description() ? info->Description() : "")); + const cEvent *event = info->GetEvent(); + if (event) { + string recDate = *(event->GetDateString()); + string recTime = *(event->GetTimeString()); + if (recDate.find("1970") != string::npos) { + time_t start = recording->Start(); + recDate = *DateString(start); + recTime = *TimeString(start); + } + stringTokens.insert(pair("date", recDate.c_str())); + stringTokens.insert(pair("time", recTime.c_str())); + time_t startTime = event->StartTime(); + struct tm * sStartTime = localtime(&startTime); + intTokens.insert(pair("year", sStartTime->tm_year + 1900)); + intTokens.insert(pair("daynumeric", sStartTime->tm_mday)); + intTokens.insert(pair("month", sStartTime->tm_mon+1)); + int duration = event->Duration() / 60; + int recDuration = recording->LengthInSeconds(); + recDuration = (recDuration>0)?(recDuration / 60):0; + intTokens.insert(pair("duration", recDuration)); + intTokens.insert(pair("durationhours", recDuration / 60)); + stringTokens.insert(pair("durationminutes", *cString::sprintf("%.2d", recDuration%60))); + intTokens.insert(pair("durationevent", duration)); + intTokens.insert(pair("durationeventhours", duration / 60)); + stringTokens.insert(pair("durationeventminutes", *cString::sprintf("%.2d", duration%60))); + } + } else { + stringTokens.insert(pair("shorttext", "")); + stringTokens.insert(pair("description", "")); + int recDuration = recording->LengthInSeconds(); + recDuration = (recDuration>0)?(recDuration / 60):0; + stringTokens.insert(pair("date", "")); + stringTokens.insert(pair("time", "")); + intTokens.insert(pair("duration", recDuration)); + intTokens.insert(pair("durationhours", recDuration / 60)); + stringTokens.insert(pair("durationminutes", *cString::sprintf("%.2d", recDuration%60))); + intTokens.insert(pair("durationevent", 0)); + intTokens.insert(pair("durationeventhours", 0)); + stringTokens.insert(pair("durationeventminutes", "")); + } + } else { + stringTokens.insert(pair("name", "")); + stringTokens.insert(pair("shorttext", "")); + stringTokens.insert(pair("description", "")); + stringTokens.insert(pair("date", "")); + stringTokens.insert(pair("time", "")); + stringTokens.insert(pair("durationminutes", "")); + stringTokens.insert(pair("durationeventminutes", "")); + } + SetScraperTokens(NULL, recording, stringTokens, intTokens, loopTokens); + DrawViewElement(veOnPause, &stringTokens, &intTokens, &loopTokens); +} + +void cDisplayReplayOnPauseView::Action(void) { + DoSleep(delay); + if (!Running()) + return; + Render(); + SetInitFinished(); + FadeIn(); + DoFlush(); +} diff --git a/views/displayreplayonpauseview.h b/views/displayreplayonpauseview.h new file mode 100644 index 0000000..6c50ce6 --- /dev/null +++ b/views/displayreplayonpauseview.h @@ -0,0 +1,18 @@ +#ifndef __DISPLAYREPLAYONPAUSEVIEW_H +#define __DISPLAYREPLAYONPAUSEVIEW_H + +#include "../libtemplate/template.h" +#include "view.h" +#include "viewhelpers.h" + +class cDisplayReplayOnPauseView : public cView, public cViewHelpers { +private: + int delay; + virtual void Action(void); +public: + cDisplayReplayOnPauseView(cTemplateViewElement *tmplViewElement); + virtual ~cDisplayReplayOnPauseView(); + void Render(void); + void Flush(void) { DoFlush(); }; +}; +#endif //__DISPLAYREPLAYONPAUSEVIEW_H diff --git a/views/displayreplayview.c b/views/displayreplayview.c index 680eea6..299978f 100644 --- a/views/displayreplayview.c +++ b/views/displayreplayview.c @@ -5,6 +5,7 @@ #include "../libcore/helpers.h" cDisplayReplayView::cDisplayReplayView(cTemplateView *tmplView) : cView(tmplView) { + onPauseView = NULL; lastDate = ""; numMarksLast = 0; lastMarks = NULL; @@ -17,6 +18,9 @@ cDisplayReplayView::~cDisplayReplayView() { if (lastMarks) { delete[] lastMarks; } + if (onPauseView) { + delete onPauseView; + } CancelSave(); FadeOut(); } @@ -369,6 +373,22 @@ void cDisplayReplayView::DrawMessage(eMessageType type, const char *text) { DrawViewElement(veMessage, &stringTokens, &intTokens); } +void cDisplayReplayView::DrawOnPause(bool modeOnly) { + eViewElement veTmplOnPause = modeOnly ? veOnPauseModeOnly : veOnPause; + cTemplateViewElement *tmplOnPause = tmplView->GetViewElement(veTmplOnPause); + if (!tmplOnPause) + return; + onPauseView = new cDisplayReplayOnPauseView(tmplOnPause); + onPauseView->Start(); +} + +void cDisplayReplayView::ClearOnPause(void) { + if (onPauseView) { + delete onPauseView; + onPauseView = NULL; + } +} + /**************************************************************************************** * Private Functions *****************************************************************************************/ diff --git a/views/displayreplayview.h b/views/displayreplayview.h index e637214..cf94a4a 100644 --- a/views/displayreplayview.h +++ b/views/displayreplayview.h @@ -3,9 +3,11 @@ #include "../libtemplate/template.h" #include "view.h" +#include "displayreplayonpauseview.h" class cDisplayReplayView : public cView { private: + cDisplayReplayOnPauseView *onPauseView; cString lastDate; int numMarksLast; int *lastMarks; @@ -29,6 +31,8 @@ public: void DrawControlIcons(bool play, bool forward, int speed, bool modeOnly); void DrawJump(const char *jump); void DrawMessage(eMessageType type, const char *text); + void DrawOnPause(bool modeOnly); + void ClearOnPause(void); void DoFadeIn(void) { Start(); }; void Flush(void) { DoFlush(); }; }; diff --git a/views/view.c b/views/view.c index 864eb45..2b9c4bf 100644 --- a/views/view.c +++ b/views/view.c @@ -73,7 +73,7 @@ void cView::Stop(void) { void cView::DrawViewElement(eViewElement ve, map *stringTokens, map *intTokens, map < string, vector< map< string, string > > > *loopTokens) { //setting correct ViewElement, depending which constructor was used cTemplateViewElement *viewElement; - if (tmplItem && ve == veMenuCurrentItemDetail) { + if (tmplItem && (ve == veMenuCurrentItemDetail || ve == veOnPause)) { viewElement = tmplItem; } else if (tmplView) { viewElement = tmplView->GetViewElement(ve); @@ -84,7 +84,6 @@ void cView::DrawViewElement(eViewElement ve, map *stringTokens, if (viewElement->DebugTokens()) { DebugTokens(tmplView ? (tmplView->GetViewElementName(ve)) : "current view", stringTokens, intTokens, loopTokens); } - //iterate through pixmaps of viewelement int pixCurrent = viewElement->GetPixOffset(); if (pixCurrent < 0) diff --git a/views/viewhelpers.c b/views/viewhelpers.c index abb46a3..38a332d 100644 --- a/views/viewhelpers.c +++ b/views/viewhelpers.c @@ -1,4 +1,5 @@ #include +#include "../services/scraper2vdr.h" #include "../config.h" #include "../libcore/helpers.h" #include "viewhelpers.h" @@ -168,3 +169,208 @@ 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) { + static cPlugin *pScraper = GetScraperPlugin(); + if (!pScraper || (!event && !recording)) { + intTokens.insert(pair("ismovie", false)); + intTokens.insert(pair("isseries", false)); + return; + } + + ScraperGetEventType getType; + getType.event = event; + getType.recording = recording; + if (!pScraper->Service("GetEventType", &getType)) { + intTokens.insert(pair("ismovie", false)); + intTokens.insert(pair("isseries", false)); + return; + } + + if (getType.type == tMovie) { + cMovie movie; + movie.movieId = getType.movieId; + pScraper->Service("GetMovie", &movie); + intTokens.insert(pair("ismovie", true)); + intTokens.insert(pair("isseries", false)); + + stringTokens.insert(pair("movietitle", movie.title)); + stringTokens.insert(pair("movieoriginalTitle", movie.originalTitle)); + stringTokens.insert(pair("movietagline", movie.tagline)); + stringTokens.insert(pair("movieoverview", movie.overview)); + stringTokens.insert(pair("moviegenres", movie.genres)); + stringTokens.insert(pair("moviehomepage", movie.homepage)); + stringTokens.insert(pair("moviereleasedate", movie.releaseDate)); + stringstream pop; + pop << movie.popularity; + stringTokens.insert(pair("moviepopularity", pop.str())); + stringstream vote; + vote << movie.voteAverage; + stringTokens.insert(pair("movievoteaverage", pop.str())); + stringTokens.insert(pair("posterpath", movie.poster.path)); + stringTokens.insert(pair("fanartpath", movie.fanart.path)); + stringTokens.insert(pair("collectionposterpath", movie.collectionPoster.path)); + stringTokens.insert(pair("collectionfanartpath", movie.collectionFanart.path)); + + intTokens.insert(pair("movieadult", movie.adult)); + intTokens.insert(pair("moviebudget", movie.budget)); + intTokens.insert(pair("movierevenue", movie.revenue)); + intTokens.insert(pair("movieruntime", movie.runtime)); + intTokens.insert(pair("posterwidth", movie.poster.width)); + intTokens.insert(pair("posterheight", movie.poster.height)); + intTokens.insert(pair("fanartwidth", movie.fanart.width)); + intTokens.insert(pair("fanartheight", movie.fanart.height)); + intTokens.insert(pair("collectionposterwidth", movie.collectionPoster.width)); + intTokens.insert(pair("collectionposterheight", movie.collectionPoster.height)); + intTokens.insert(pair("collectionfanartwidth", movie.collectionFanart.width)); + intTokens.insert(pair("collectionfanartheight", movie.collectionFanart.height)); + + vector< map< string, string > > actors; + for (vector::iterator act = movie.actors.begin(); act != movie.actors.end(); act++) { + map< string, string > actor; + actor.insert(pair("actors[name]", (*act).name)); + actor.insert(pair("actors[role]", (*act).role)); + actor.insert(pair("actors[thumb]", (*act).actorThumb.path)); + stringstream actWidth, actHeight; + actWidth << (*act).actorThumb.width; + actHeight << (*act).actorThumb.height; + actor.insert(pair("actors[thumbwidth]", actWidth.str())); + actor.insert(pair("actors[thumbheight]", actHeight.str())); + actors.push_back(actor); + } + loopTokens.insert(pair > >("actors", actors)); + + } else if (getType.type == tSeries) { + cSeries series; + series.seriesId = getType.seriesId; + series.episodeId = getType.episodeId; + pScraper->Service("GetSeries", &series); + intTokens.insert(pair("ismovie", false)); + intTokens.insert(pair("isseries", true)); + //Series Basics + stringTokens.insert(pair("seriesname", series.name)); + stringTokens.insert(pair("seriesoverview", series.overview)); + stringTokens.insert(pair("seriesfirstaired", series.firstAired)); + stringTokens.insert(pair("seriesnetwork", series.network)); + stringTokens.insert(pair("seriesgenre", series.genre)); + stringstream rating; + rating << series.rating; + stringTokens.insert(pair("seriesrating", rating.str())); + stringTokens.insert(pair("seriesstatus", series.status)); + //Episode Information + intTokens.insert(pair("episodenumber", series.episode.number)); + intTokens.insert(pair("episodeseason", series.episode.season)); + stringTokens.insert(pair("episodetitle", series.episode.name)); + stringTokens.insert(pair("episodefirstaired", series.episode.firstAired)); + stringTokens.insert(pair("episodegueststars", series.episode.guestStars)); + stringTokens.insert(pair("episodeoverview", series.episode.overview)); + stringstream eprating; + eprating << series.episode.rating; + stringTokens.insert(pair("episoderating", eprating.str())); + intTokens.insert(pair("episodeimagewidth", series.episode.episodeImage.width)); + intTokens.insert(pair("episodeimageheight", series.episode.episodeImage.height)); + stringTokens.insert(pair("episodeimagepath", series.episode.episodeImage.path)); + //Seasonposter + intTokens.insert(pair("seasonposterwidth", series.seasonPoster.width)); + intTokens.insert(pair("seasonposterheight", series.seasonPoster.height)); + stringTokens.insert(pair("seasonposterpath", series.seasonPoster.path)); + + //Posters + int current = 1; + for(vector::iterator poster = series.posters.begin(); poster != series.posters.end(); poster++) { + stringstream labelWidth, labelHeight, labelPath; + labelWidth << "seriesposter" << current << "width"; + labelHeight << "seriesposter" << current << "height"; + labelPath << "seriesposter" << current << "path"; + + intTokens.insert(pair(labelWidth.str(), (*poster).width)); + intTokens.insert(pair(labelHeight.str(), (*poster).height)); + stringTokens.insert(pair(labelPath.str(), (*poster).path)); + current++; + } + if (current < 3) { + for (; current < 4; current++) { + stringstream labelWidth, labelHeight, labelPath; + labelWidth << "seriesposter" << current << "width"; + labelHeight << "seriesposter" << current << "height"; + labelPath << "seriesposter" << current << "path"; + + intTokens.insert(pair(labelWidth.str(), 0)); + intTokens.insert(pair(labelHeight.str(), 0)); + stringTokens.insert(pair(labelPath.str(), "")); + } + } + + //Banners + current = 1; + for(vector::iterator banner = series.banners.begin(); banner != series.banners.end(); banner++) { + stringstream labelWidth, labelHeight, labelPath; + labelWidth << "seriesbanner" << current << "width"; + labelHeight << "seriesbanner" << current << "height"; + labelPath << "seriesbanner" << current << "path"; + + intTokens.insert(pair(labelWidth.str(), (*banner).width)); + intTokens.insert(pair(labelHeight.str(), (*banner).height)); + stringTokens.insert(pair(labelPath.str(), (*banner).path)); + current++; + } + if (current < 3) { + for (; current < 4; current++) { + stringstream labelWidth, labelHeight, labelPath; + labelWidth << "seriesbanner" << current << "width"; + labelHeight << "seriesbanner" << current << "height"; + labelPath << "seriesbanner" << current << "path"; + + intTokens.insert(pair(labelWidth.str(), 0)); + intTokens.insert(pair(labelHeight.str(), 0)); + stringTokens.insert(pair(labelPath.str(), "")); + } + } + + //Fanarts + current = 1; + for(vector::iterator fanart = series.fanarts.begin(); fanart != series.fanarts.end(); fanart++) { + stringstream labelWidth, labelHeight, labelPath; + labelWidth << "seriesfanart" << current << "width"; + labelHeight << "seriesfanart" << current << "height"; + labelPath << "seriesfanart" << current << "path"; + + intTokens.insert(pair(labelWidth.str(), (*fanart).width)); + intTokens.insert(pair(labelHeight.str(), (*fanart).height)); + stringTokens.insert(pair(labelPath.str(), (*fanart).path)); + current++; + } + if (current < 3) { + for (; current < 4; current++) { + stringstream labelWidth, labelHeight, labelPath; + labelWidth << "seriesfanart" << current << "width"; + labelHeight << "seriesfanart" << current << "height"; + labelPath << "seriesfanart" << current << "path"; + + intTokens.insert(pair(labelWidth.str(), 0)); + intTokens.insert(pair(labelHeight.str(), 0)); + stringTokens.insert(pair(labelPath.str(), "")); + } + } + + //Actors + vector< map< string, string > > actors; + for (vector::iterator act = series.actors.begin(); act != series.actors.end(); act++) { + map< string, string > actor; + actor.insert(pair("actors[name]", (*act).name)); + actor.insert(pair("actors[role]", (*act).role)); + actor.insert(pair("actors[thumb]", (*act).actorThumb.path)); + stringstream actWidth, actHeight; + actWidth << (*act).actorThumb.width; + actHeight << (*act).actorThumb.height; + actor.insert(pair("actors[thumbwidth]", actWidth.str())); + actor.insert(pair("actors[thumbheight]", actHeight.str())); + actors.push_back(actor); + } + loopTokens.insert(pair > >("actors", actors)); + + } else { + intTokens.insert(pair("ismovie", false)); + intTokens.insert(pair("isseries", false)); + } + +} diff --git a/views/viewhelpers.h b/views/viewhelpers.h index 7946b53..8e57bb4 100644 --- a/views/viewhelpers.h +++ b/views/viewhelpers.h @@ -11,6 +11,7 @@ protected: void InitDevices(void); bool SetDevices(bool initial, map *intTokens, vector > *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); public: cViewHelpers(void); virtual ~cViewHelpers(void); -- cgit v1.2.3