mirror of
https://projects.vdr-developer.org/git/vdr-plugin-skindesigner.git
synced 2023-10-19 15:58:31 +00:00
added onpause and onpausemodeonly in displayreplay
This commit is contained in:
@@ -153,7 +153,7 @@ void cDisplayMenuDetailView::SetTokens(void) {
|
||||
|
||||
intTokens.insert(pair<string,int>("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<string,string>("durationeventminutes", ""));
|
||||
}
|
||||
LoadRecordingInformation();
|
||||
SetScraperTokens();
|
||||
SetScraperTokens(event, recording, stringTokens, intTokens, loopTokens);
|
||||
SetRecordingImages(recording->FileName());
|
||||
} else if (text) {
|
||||
stringTokens.insert(pair<string,string>("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<string,int>("ismovie", false));
|
||||
intTokens.insert(pair<string,int>("isseries", false));
|
||||
return;
|
||||
}
|
||||
|
||||
ScraperGetEventType getType;
|
||||
getType.event = event;
|
||||
getType.recording = recording;
|
||||
if (!pScraper->Service("GetEventType", &getType)) {
|
||||
intTokens.insert(pair<string,int>("ismovie", false));
|
||||
intTokens.insert(pair<string,int>("isseries", false));
|
||||
return;
|
||||
}
|
||||
|
||||
if (getType.type == tMovie) {
|
||||
cMovie movie;
|
||||
movie.movieId = getType.movieId;
|
||||
pScraper->Service("GetMovie", &movie);
|
||||
intTokens.insert(pair<string,int>("ismovie", true));
|
||||
intTokens.insert(pair<string,int>("isseries", false));
|
||||
|
||||
stringTokens.insert(pair<string,string>("movietitle", movie.title));
|
||||
stringTokens.insert(pair<string,string>("movieoriginalTitle", movie.originalTitle));
|
||||
stringTokens.insert(pair<string,string>("movietagline", movie.tagline));
|
||||
stringTokens.insert(pair<string,string>("movieoverview", movie.overview));
|
||||
stringTokens.insert(pair<string,string>("moviegenres", movie.genres));
|
||||
stringTokens.insert(pair<string,string>("moviehomepage", movie.homepage));
|
||||
stringTokens.insert(pair<string,string>("moviereleasedate", movie.releaseDate));
|
||||
stringstream pop;
|
||||
pop << movie.popularity;
|
||||
stringTokens.insert(pair<string,string>("moviepopularity", pop.str()));
|
||||
stringstream vote;
|
||||
vote << movie.voteAverage;
|
||||
stringTokens.insert(pair<string,string>("movievoteaverage", pop.str()));
|
||||
stringTokens.insert(pair<string,string>("posterpath", movie.poster.path));
|
||||
stringTokens.insert(pair<string,string>("fanartpath", movie.fanart.path));
|
||||
stringTokens.insert(pair<string,string>("collectionposterpath", movie.collectionPoster.path));
|
||||
stringTokens.insert(pair<string,string>("collectionfanartpath", movie.collectionFanart.path));
|
||||
|
||||
intTokens.insert(pair<string,int>("movieadult", movie.adult));
|
||||
intTokens.insert(pair<string,int>("moviebudget", movie.budget));
|
||||
intTokens.insert(pair<string,int>("movierevenue", movie.revenue));
|
||||
intTokens.insert(pair<string,int>("movieruntime", movie.runtime));
|
||||
intTokens.insert(pair<string,int>("posterwidth", movie.poster.width));
|
||||
intTokens.insert(pair<string,int>("posterheight", movie.poster.height));
|
||||
intTokens.insert(pair<string,int>("fanartwidth", movie.fanart.width));
|
||||
intTokens.insert(pair<string,int>("fanartheight", movie.fanart.height));
|
||||
intTokens.insert(pair<string,int>("collectionposterwidth", movie.collectionPoster.width));
|
||||
intTokens.insert(pair<string,int>("collectionposterheight", movie.collectionPoster.height));
|
||||
intTokens.insert(pair<string,int>("collectionfanartwidth", movie.collectionFanart.width));
|
||||
intTokens.insert(pair<string,int>("collectionfanartheight", movie.collectionFanart.height));
|
||||
|
||||
vector< map< string, string > > actors;
|
||||
for (vector<cActor>::iterator act = movie.actors.begin(); act != movie.actors.end(); act++) {
|
||||
map< string, string > actor;
|
||||
actor.insert(pair<string, string>("actors[name]", (*act).name));
|
||||
actor.insert(pair<string, string>("actors[role]", (*act).role));
|
||||
actor.insert(pair<string, string>("actors[thumb]", (*act).actorThumb.path));
|
||||
stringstream actWidth, actHeight;
|
||||
actWidth << (*act).actorThumb.width;
|
||||
actHeight << (*act).actorThumb.height;
|
||||
actor.insert(pair<string, string>("actors[thumbwidth]", actWidth.str()));
|
||||
actor.insert(pair<string, string>("actors[thumbheight]", actHeight.str()));
|
||||
actors.push_back(actor);
|
||||
}
|
||||
loopTokens.insert(pair<string, vector< map< string, string > > >("actors", actors));
|
||||
|
||||
} else if (getType.type == tSeries) {
|
||||
cSeries series;
|
||||
series.seriesId = getType.seriesId;
|
||||
series.episodeId = getType.episodeId;
|
||||
pScraper->Service("GetSeries", &series);
|
||||
intTokens.insert(pair<string,int>("ismovie", false));
|
||||
intTokens.insert(pair<string,int>("isseries", true));
|
||||
//Series Basics
|
||||
stringTokens.insert(pair<string,string>("seriesname", series.name));
|
||||
stringTokens.insert(pair<string,string>("seriesoverview", series.overview));
|
||||
stringTokens.insert(pair<string,string>("seriesfirstaired", series.firstAired));
|
||||
stringTokens.insert(pair<string,string>("seriesnetwork", series.network));
|
||||
stringTokens.insert(pair<string,string>("seriesgenre", series.genre));
|
||||
stringstream rating;
|
||||
rating << series.rating;
|
||||
stringTokens.insert(pair<string,string>("seriesrating", rating.str()));
|
||||
stringTokens.insert(pair<string,string>("seriesstatus", series.status));
|
||||
//Episode Information
|
||||
intTokens.insert(pair<string,int>("episodenumber", series.episode.number));
|
||||
intTokens.insert(pair<string,int>("episodeseason", series.episode.season));
|
||||
stringTokens.insert(pair<string,string>("episodetitle", series.episode.name));
|
||||
stringTokens.insert(pair<string,string>("episodefirstaired", series.episode.firstAired));
|
||||
stringTokens.insert(pair<string,string>("episodegueststars", series.episode.guestStars));
|
||||
stringTokens.insert(pair<string,string>("episodeoverview", series.episode.overview));
|
||||
stringstream eprating;
|
||||
eprating << series.episode.rating;
|
||||
stringTokens.insert(pair<string,string>("episoderating", eprating.str()));
|
||||
intTokens.insert(pair<string,int>("episodeimagewidth", series.episode.episodeImage.width));
|
||||
intTokens.insert(pair<string,int>("episodeimageheight", series.episode.episodeImage.height));
|
||||
stringTokens.insert(pair<string,string>("episodeimagepath", series.episode.episodeImage.path));
|
||||
//Seasonposter
|
||||
intTokens.insert(pair<string,int>("seasonposterwidth", series.seasonPoster.width));
|
||||
intTokens.insert(pair<string,int>("seasonposterheight", series.seasonPoster.height));
|
||||
stringTokens.insert(pair<string,string>("seasonposterpath", series.seasonPoster.path));
|
||||
|
||||
//Posters
|
||||
int current = 1;
|
||||
for(vector<cTvMedia>::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<string,int>(labelWidth.str(), (*poster).width));
|
||||
intTokens.insert(pair<string,int>(labelHeight.str(), (*poster).height));
|
||||
stringTokens.insert(pair<string,string>(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<string,int>(labelWidth.str(), 0));
|
||||
intTokens.insert(pair<string,int>(labelHeight.str(), 0));
|
||||
stringTokens.insert(pair<string,string>(labelPath.str(), ""));
|
||||
}
|
||||
}
|
||||
|
||||
//Banners
|
||||
current = 1;
|
||||
for(vector<cTvMedia>::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<string,int>(labelWidth.str(), (*banner).width));
|
||||
intTokens.insert(pair<string,int>(labelHeight.str(), (*banner).height));
|
||||
stringTokens.insert(pair<string,string>(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<string,int>(labelWidth.str(), 0));
|
||||
intTokens.insert(pair<string,int>(labelHeight.str(), 0));
|
||||
stringTokens.insert(pair<string,string>(labelPath.str(), ""));
|
||||
}
|
||||
}
|
||||
|
||||
//Fanarts
|
||||
current = 1;
|
||||
for(vector<cTvMedia>::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<string,int>(labelWidth.str(), (*fanart).width));
|
||||
intTokens.insert(pair<string,int>(labelHeight.str(), (*fanart).height));
|
||||
stringTokens.insert(pair<string,string>(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<string,int>(labelWidth.str(), 0));
|
||||
intTokens.insert(pair<string,int>(labelHeight.str(), 0));
|
||||
stringTokens.insert(pair<string,string>(labelPath.str(), ""));
|
||||
}
|
||||
}
|
||||
|
||||
//Actors
|
||||
vector< map< string, string > > actors;
|
||||
for (vector<cActor>::iterator act = series.actors.begin(); act != series.actors.end(); act++) {
|
||||
map< string, string > actor;
|
||||
actor.insert(pair<string, string>("actors[name]", (*act).name));
|
||||
actor.insert(pair<string, string>("actors[role]", (*act).role));
|
||||
actor.insert(pair<string, string>("actors[thumb]", (*act).actorThumb.path));
|
||||
stringstream actWidth, actHeight;
|
||||
actWidth << (*act).actorThumb.width;
|
||||
actHeight << (*act).actorThumb.height;
|
||||
actor.insert(pair<string, string>("actors[thumbwidth]", actWidth.str()));
|
||||
actor.insert(pair<string, string>("actors[thumbheight]", actHeight.str()));
|
||||
actors.push_back(actor);
|
||||
}
|
||||
loopTokens.insert(pair<string, vector< map< string, string > > >("actors", actors));
|
||||
|
||||
} else {
|
||||
intTokens.insert(pair<string,int>("ismovie", false));
|
||||
intTokens.insert(pair<string,int>("isseries", false));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void cDisplayMenuDetailView::InitTabs(void) {
|
||||
tmplView->InitViewTabIterator();
|
||||
cTemplateViewTab *tmplTab = NULL;
|
||||
|
@@ -4,9 +4,10 @@
|
||||
#include <list>
|
||||
#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);
|
||||
|
93
views/displayreplayonpauseview.c
Normal file
93
views/displayreplayonpauseview.c
Normal file
@@ -0,0 +1,93 @@
|
||||
#define __STL_CONFIG_H
|
||||
#include <vdr/player.h>
|
||||
#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<string,string>("name", name));
|
||||
const cRecordingInfo *info = recording->Info();
|
||||
if (info) {
|
||||
stringTokens.insert(pair<string,string>("shorttext", info->ShortText() ? info->ShortText() : ""));
|
||||
stringTokens.insert(pair<string,string>("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<string,string>("date", recDate.c_str()));
|
||||
stringTokens.insert(pair<string,string>("time", recTime.c_str()));
|
||||
time_t startTime = event->StartTime();
|
||||
struct tm * sStartTime = localtime(&startTime);
|
||||
intTokens.insert(pair<string, int>("year", sStartTime->tm_year + 1900));
|
||||
intTokens.insert(pair<string, int>("daynumeric", sStartTime->tm_mday));
|
||||
intTokens.insert(pair<string, int>("month", sStartTime->tm_mon+1));
|
||||
int duration = event->Duration() / 60;
|
||||
int recDuration = recording->LengthInSeconds();
|
||||
recDuration = (recDuration>0)?(recDuration / 60):0;
|
||||
intTokens.insert(pair<string,int>("duration", recDuration));
|
||||
intTokens.insert(pair<string,int>("durationhours", recDuration / 60));
|
||||
stringTokens.insert(pair<string,string>("durationminutes", *cString::sprintf("%.2d", recDuration%60)));
|
||||
intTokens.insert(pair<string,int>("durationevent", duration));
|
||||
intTokens.insert(pair<string,int>("durationeventhours", duration / 60));
|
||||
stringTokens.insert(pair<string,string>("durationeventminutes", *cString::sprintf("%.2d", duration%60)));
|
||||
}
|
||||
} else {
|
||||
stringTokens.insert(pair<string,string>("shorttext", ""));
|
||||
stringTokens.insert(pair<string,string>("description", ""));
|
||||
int recDuration = recording->LengthInSeconds();
|
||||
recDuration = (recDuration>0)?(recDuration / 60):0;
|
||||
stringTokens.insert(pair<string,string>("date", ""));
|
||||
stringTokens.insert(pair<string,string>("time", ""));
|
||||
intTokens.insert(pair<string,int>("duration", recDuration));
|
||||
intTokens.insert(pair<string,int>("durationhours", recDuration / 60));
|
||||
stringTokens.insert(pair<string,string>("durationminutes", *cString::sprintf("%.2d", recDuration%60)));
|
||||
intTokens.insert(pair<string,int>("durationevent", 0));
|
||||
intTokens.insert(pair<string,int>("durationeventhours", 0));
|
||||
stringTokens.insert(pair<string,string>("durationeventminutes", ""));
|
||||
}
|
||||
} else {
|
||||
stringTokens.insert(pair<string,string>("name", ""));
|
||||
stringTokens.insert(pair<string,string>("shorttext", ""));
|
||||
stringTokens.insert(pair<string,string>("description", ""));
|
||||
stringTokens.insert(pair<string,string>("date", ""));
|
||||
stringTokens.insert(pair<string,string>("time", ""));
|
||||
stringTokens.insert(pair<string,string>("durationminutes", ""));
|
||||
stringTokens.insert(pair<string,string>("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();
|
||||
}
|
18
views/displayreplayonpauseview.h
Normal file
18
views/displayreplayonpauseview.h
Normal file
@@ -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
|
@@ -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
|
||||
*****************************************************************************************/
|
||||
|
@@ -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(); };
|
||||
};
|
||||
|
@@ -73,7 +73,7 @@ void cView::Stop(void) {
|
||||
void cView::DrawViewElement(eViewElement ve, map <string,string> *stringTokens, map <string,int> *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 <string,string> *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)
|
||||
|
@@ -1,4 +1,5 @@
|
||||
#include <vdr/menu.h>
|
||||
#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<string,int>("ismovie", false));
|
||||
intTokens.insert(pair<string,int>("isseries", false));
|
||||
return;
|
||||
}
|
||||
|
||||
ScraperGetEventType getType;
|
||||
getType.event = event;
|
||||
getType.recording = recording;
|
||||
if (!pScraper->Service("GetEventType", &getType)) {
|
||||
intTokens.insert(pair<string,int>("ismovie", false));
|
||||
intTokens.insert(pair<string,int>("isseries", false));
|
||||
return;
|
||||
}
|
||||
|
||||
if (getType.type == tMovie) {
|
||||
cMovie movie;
|
||||
movie.movieId = getType.movieId;
|
||||
pScraper->Service("GetMovie", &movie);
|
||||
intTokens.insert(pair<string,int>("ismovie", true));
|
||||
intTokens.insert(pair<string,int>("isseries", false));
|
||||
|
||||
stringTokens.insert(pair<string,string>("movietitle", movie.title));
|
||||
stringTokens.insert(pair<string,string>("movieoriginalTitle", movie.originalTitle));
|
||||
stringTokens.insert(pair<string,string>("movietagline", movie.tagline));
|
||||
stringTokens.insert(pair<string,string>("movieoverview", movie.overview));
|
||||
stringTokens.insert(pair<string,string>("moviegenres", movie.genres));
|
||||
stringTokens.insert(pair<string,string>("moviehomepage", movie.homepage));
|
||||
stringTokens.insert(pair<string,string>("moviereleasedate", movie.releaseDate));
|
||||
stringstream pop;
|
||||
pop << movie.popularity;
|
||||
stringTokens.insert(pair<string,string>("moviepopularity", pop.str()));
|
||||
stringstream vote;
|
||||
vote << movie.voteAverage;
|
||||
stringTokens.insert(pair<string,string>("movievoteaverage", pop.str()));
|
||||
stringTokens.insert(pair<string,string>("posterpath", movie.poster.path));
|
||||
stringTokens.insert(pair<string,string>("fanartpath", movie.fanart.path));
|
||||
stringTokens.insert(pair<string,string>("collectionposterpath", movie.collectionPoster.path));
|
||||
stringTokens.insert(pair<string,string>("collectionfanartpath", movie.collectionFanart.path));
|
||||
|
||||
intTokens.insert(pair<string,int>("movieadult", movie.adult));
|
||||
intTokens.insert(pair<string,int>("moviebudget", movie.budget));
|
||||
intTokens.insert(pair<string,int>("movierevenue", movie.revenue));
|
||||
intTokens.insert(pair<string,int>("movieruntime", movie.runtime));
|
||||
intTokens.insert(pair<string,int>("posterwidth", movie.poster.width));
|
||||
intTokens.insert(pair<string,int>("posterheight", movie.poster.height));
|
||||
intTokens.insert(pair<string,int>("fanartwidth", movie.fanart.width));
|
||||
intTokens.insert(pair<string,int>("fanartheight", movie.fanart.height));
|
||||
intTokens.insert(pair<string,int>("collectionposterwidth", movie.collectionPoster.width));
|
||||
intTokens.insert(pair<string,int>("collectionposterheight", movie.collectionPoster.height));
|
||||
intTokens.insert(pair<string,int>("collectionfanartwidth", movie.collectionFanart.width));
|
||||
intTokens.insert(pair<string,int>("collectionfanartheight", movie.collectionFanart.height));
|
||||
|
||||
vector< map< string, string > > actors;
|
||||
for (vector<cActor>::iterator act = movie.actors.begin(); act != movie.actors.end(); act++) {
|
||||
map< string, string > actor;
|
||||
actor.insert(pair<string, string>("actors[name]", (*act).name));
|
||||
actor.insert(pair<string, string>("actors[role]", (*act).role));
|
||||
actor.insert(pair<string, string>("actors[thumb]", (*act).actorThumb.path));
|
||||
stringstream actWidth, actHeight;
|
||||
actWidth << (*act).actorThumb.width;
|
||||
actHeight << (*act).actorThumb.height;
|
||||
actor.insert(pair<string, string>("actors[thumbwidth]", actWidth.str()));
|
||||
actor.insert(pair<string, string>("actors[thumbheight]", actHeight.str()));
|
||||
actors.push_back(actor);
|
||||
}
|
||||
loopTokens.insert(pair<string, vector< map< string, string > > >("actors", actors));
|
||||
|
||||
} else if (getType.type == tSeries) {
|
||||
cSeries series;
|
||||
series.seriesId = getType.seriesId;
|
||||
series.episodeId = getType.episodeId;
|
||||
pScraper->Service("GetSeries", &series);
|
||||
intTokens.insert(pair<string,int>("ismovie", false));
|
||||
intTokens.insert(pair<string,int>("isseries", true));
|
||||
//Series Basics
|
||||
stringTokens.insert(pair<string,string>("seriesname", series.name));
|
||||
stringTokens.insert(pair<string,string>("seriesoverview", series.overview));
|
||||
stringTokens.insert(pair<string,string>("seriesfirstaired", series.firstAired));
|
||||
stringTokens.insert(pair<string,string>("seriesnetwork", series.network));
|
||||
stringTokens.insert(pair<string,string>("seriesgenre", series.genre));
|
||||
stringstream rating;
|
||||
rating << series.rating;
|
||||
stringTokens.insert(pair<string,string>("seriesrating", rating.str()));
|
||||
stringTokens.insert(pair<string,string>("seriesstatus", series.status));
|
||||
//Episode Information
|
||||
intTokens.insert(pair<string,int>("episodenumber", series.episode.number));
|
||||
intTokens.insert(pair<string,int>("episodeseason", series.episode.season));
|
||||
stringTokens.insert(pair<string,string>("episodetitle", series.episode.name));
|
||||
stringTokens.insert(pair<string,string>("episodefirstaired", series.episode.firstAired));
|
||||
stringTokens.insert(pair<string,string>("episodegueststars", series.episode.guestStars));
|
||||
stringTokens.insert(pair<string,string>("episodeoverview", series.episode.overview));
|
||||
stringstream eprating;
|
||||
eprating << series.episode.rating;
|
||||
stringTokens.insert(pair<string,string>("episoderating", eprating.str()));
|
||||
intTokens.insert(pair<string,int>("episodeimagewidth", series.episode.episodeImage.width));
|
||||
intTokens.insert(pair<string,int>("episodeimageheight", series.episode.episodeImage.height));
|
||||
stringTokens.insert(pair<string,string>("episodeimagepath", series.episode.episodeImage.path));
|
||||
//Seasonposter
|
||||
intTokens.insert(pair<string,int>("seasonposterwidth", series.seasonPoster.width));
|
||||
intTokens.insert(pair<string,int>("seasonposterheight", series.seasonPoster.height));
|
||||
stringTokens.insert(pair<string,string>("seasonposterpath", series.seasonPoster.path));
|
||||
|
||||
//Posters
|
||||
int current = 1;
|
||||
for(vector<cTvMedia>::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<string,int>(labelWidth.str(), (*poster).width));
|
||||
intTokens.insert(pair<string,int>(labelHeight.str(), (*poster).height));
|
||||
stringTokens.insert(pair<string,string>(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<string,int>(labelWidth.str(), 0));
|
||||
intTokens.insert(pair<string,int>(labelHeight.str(), 0));
|
||||
stringTokens.insert(pair<string,string>(labelPath.str(), ""));
|
||||
}
|
||||
}
|
||||
|
||||
//Banners
|
||||
current = 1;
|
||||
for(vector<cTvMedia>::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<string,int>(labelWidth.str(), (*banner).width));
|
||||
intTokens.insert(pair<string,int>(labelHeight.str(), (*banner).height));
|
||||
stringTokens.insert(pair<string,string>(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<string,int>(labelWidth.str(), 0));
|
||||
intTokens.insert(pair<string,int>(labelHeight.str(), 0));
|
||||
stringTokens.insert(pair<string,string>(labelPath.str(), ""));
|
||||
}
|
||||
}
|
||||
|
||||
//Fanarts
|
||||
current = 1;
|
||||
for(vector<cTvMedia>::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<string,int>(labelWidth.str(), (*fanart).width));
|
||||
intTokens.insert(pair<string,int>(labelHeight.str(), (*fanart).height));
|
||||
stringTokens.insert(pair<string,string>(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<string,int>(labelWidth.str(), 0));
|
||||
intTokens.insert(pair<string,int>(labelHeight.str(), 0));
|
||||
stringTokens.insert(pair<string,string>(labelPath.str(), ""));
|
||||
}
|
||||
}
|
||||
|
||||
//Actors
|
||||
vector< map< string, string > > actors;
|
||||
for (vector<cActor>::iterator act = series.actors.begin(); act != series.actors.end(); act++) {
|
||||
map< string, string > actor;
|
||||
actor.insert(pair<string, string>("actors[name]", (*act).name));
|
||||
actor.insert(pair<string, string>("actors[role]", (*act).role));
|
||||
actor.insert(pair<string, string>("actors[thumb]", (*act).actorThumb.path));
|
||||
stringstream actWidth, actHeight;
|
||||
actWidth << (*act).actorThumb.width;
|
||||
actHeight << (*act).actorThumb.height;
|
||||
actor.insert(pair<string, string>("actors[thumbwidth]", actWidth.str()));
|
||||
actor.insert(pair<string, string>("actors[thumbheight]", actHeight.str()));
|
||||
actors.push_back(actor);
|
||||
}
|
||||
loopTokens.insert(pair<string, vector< map< string, string > > >("actors", actors));
|
||||
|
||||
} else {
|
||||
intTokens.insert(pair<string,int>("ismovie", false));
|
||||
intTokens.insert(pair<string,int>("isseries", false));
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -11,6 +11,7 @@ protected:
|
||||
void InitDevices(void);
|
||||
bool SetDevices(bool initial, map<string,int> *intTokens, vector<map<string,string> > *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);
|
||||
|
Reference in New Issue
Block a user