mirror of
https://projects.vdr-developer.org/git/vdr-plugin-skindesigner.git
synced 2023-10-19 17:58:31 +02:00
added onpause and onpausemodeonly in displayreplay
This commit is contained in:
parent
d684cec70e
commit
76ab3e4cef
1
HISTORY
1
HISTORY
@ -95,3 +95,4 @@ Version 0.0.6
|
|||||||
epgsearch
|
epgsearch
|
||||||
- using VDRs OSD Language instead of system language
|
- using VDRs OSD Language instead of system language
|
||||||
- added compatibility to librsvg >= 2.36.1
|
- added compatibility to librsvg >= 2.36.1
|
||||||
|
- added onpause and onpausemodeonly in displayreplay
|
||||||
|
1
Makefile
1
Makefile
@ -94,6 +94,7 @@ OBJS = $(PLUGIN).o \
|
|||||||
views/displaymenutabview.o \
|
views/displaymenutabview.o \
|
||||||
views/displaymessageview.o \
|
views/displaymessageview.o \
|
||||||
views/displayreplayview.o \
|
views/displayreplayview.o \
|
||||||
|
views/displayreplayonpauseview.o \
|
||||||
views/displayvolumeview.o \
|
views/displayvolumeview.o \
|
||||||
views/displayaudiotracksview.o
|
views/displayaudiotracksview.o
|
||||||
|
|
||||||
|
@ -35,6 +35,11 @@ void cSDDisplayReplay::SetRecording(const cRecording *Recording) {
|
|||||||
void cSDDisplayReplay::SetMode(bool Play, bool Forward, int Speed) {
|
void cSDDisplayReplay::SetMode(bool Play, bool Forward, int Speed) {
|
||||||
if (!doOutput)
|
if (!doOutput)
|
||||||
return;
|
return;
|
||||||
|
if (!Play && Speed < 0) {
|
||||||
|
replayView->DrawOnPause(modeOnly);
|
||||||
|
} else {
|
||||||
|
replayView->ClearOnPause();
|
||||||
|
}
|
||||||
replayView->DrawControlIcons(Play, Forward, Speed, modeOnly);
|
replayView->DrawControlIcons(Play, Forward, Speed, modeOnly);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<!ELEMENT displayreplay (background | backgroundmodeonly |datetime |
|
<!ELEMENT displayreplay (background | backgroundmodeonly |datetime |
|
||||||
scrapercontent | rectitle | recinfo | currenttime |
|
scrapercontent | rectitle | recinfo | currenttime |
|
||||||
totaltime | progressbar | cutmarks | controlicons |
|
totaltime | progressbar | cutmarks | controlicons |
|
||||||
controliconsmodeonly | jump | message)*>
|
controliconsmodeonly | jump | message | onpause | onpausemodeonly)*>
|
||||||
<!ATTLIST displayreplay
|
<!ATTLIST displayreplay
|
||||||
x CDATA #REQUIRED
|
x CDATA #REQUIRED
|
||||||
y CDATA #REQUIRED
|
y CDATA #REQUIRED
|
||||||
@ -88,4 +88,18 @@
|
|||||||
debug CDATA #IMPLIED
|
debug CDATA #IMPLIED
|
||||||
>
|
>
|
||||||
|
|
||||||
|
<!ELEMENT onpause (area|areascroll)*>
|
||||||
|
<!ATTLIST onpause
|
||||||
|
debug CDATA #IMPLIED
|
||||||
|
delay CDATA #REQUIRED
|
||||||
|
fadetime CDATA #IMPLIED
|
||||||
|
>
|
||||||
|
|
||||||
|
<!ELEMENT onpausemodeonly (area|areascroll)*>
|
||||||
|
<!ATTLIST onpausemodeonly
|
||||||
|
debug CDATA #IMPLIED
|
||||||
|
delay CDATA #REQUIRED
|
||||||
|
fadetime CDATA #IMPLIED
|
||||||
|
>
|
||||||
|
|
||||||
%functions;
|
%functions;
|
@ -469,9 +469,16 @@ void cTemplateView::Debug(void) {
|
|||||||
|
|
||||||
void cTemplateView::SetFunctionDefinitions(void) {
|
void cTemplateView::SetFunctionDefinitions(void) {
|
||||||
|
|
||||||
string name = "area";
|
string name = "viewelement";
|
||||||
set<string> attributes;
|
set<string> attributes;
|
||||||
attributes.insert("debug");
|
attributes.insert("debug");
|
||||||
|
attributes.insert("delay");
|
||||||
|
attributes.insert("fadetime");
|
||||||
|
funcsAllowed.insert(pair< string, set<string> >(name, attributes));
|
||||||
|
|
||||||
|
name = "area";
|
||||||
|
attributes.clear();
|
||||||
|
attributes.insert("debug");
|
||||||
attributes.insert("condition");
|
attributes.insert("condition");
|
||||||
attributes.insert("x");
|
attributes.insert("x");
|
||||||
attributes.insert("y");
|
attributes.insert("y");
|
||||||
@ -723,7 +730,7 @@ string cTemplateViewChannel::GetViewElementName(eViewElement ve) {
|
|||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cTemplateViewChannel::AddPixmap(string sViewElement, cTemplatePixmap *pix, bool debugViewElement) {
|
void cTemplateViewChannel::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes) {
|
||||||
eViewElement ve = veUndefined;
|
eViewElement ve = veUndefined;
|
||||||
|
|
||||||
if (!sViewElement.compare("background")) {
|
if (!sViewElement.compare("background")) {
|
||||||
@ -770,10 +777,9 @@ void cTemplateViewChannel::AddPixmap(string sViewElement, cTemplatePixmap *pix,
|
|||||||
map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
|
map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
|
||||||
if (hit == viewElements.end()) {
|
if (hit == viewElements.end()) {
|
||||||
cTemplateViewElement *viewElement = new cTemplateViewElement();
|
cTemplateViewElement *viewElement = new cTemplateViewElement();
|
||||||
|
viewElement->SetParameters(viewElementattributes);
|
||||||
viewElement->AddPixmap(pix);
|
viewElement->AddPixmap(pix);
|
||||||
viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
|
viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
|
||||||
if (debugViewElement)
|
|
||||||
viewElement->ActivateDebugTokens();
|
|
||||||
} else {
|
} else {
|
||||||
(hit->second)->AddPixmap(pix);
|
(hit->second)->AddPixmap(pix);
|
||||||
}
|
}
|
||||||
@ -1192,7 +1198,7 @@ void cTemplateViewMenu::AddPluginView(string plugName, int templNo, cTemplateVie
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cTemplateViewMenu::AddPixmap(string sViewElement, cTemplatePixmap *pix, bool debugViewElement) {
|
void cTemplateViewMenu::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes) {
|
||||||
eViewElement ve = veUndefined;
|
eViewElement ve = veUndefined;
|
||||||
|
|
||||||
if (!sViewElement.compare("background")) {
|
if (!sViewElement.compare("background")) {
|
||||||
@ -1231,10 +1237,9 @@ void cTemplateViewMenu::AddPixmap(string sViewElement, cTemplatePixmap *pix, boo
|
|||||||
map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
|
map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
|
||||||
if (hit == viewElements.end()) {
|
if (hit == viewElements.end()) {
|
||||||
cTemplateViewElement *viewElement = new cTemplateViewElement();
|
cTemplateViewElement *viewElement = new cTemplateViewElement();
|
||||||
|
viewElement->SetParameters(viewElementattributes);
|
||||||
viewElement->AddPixmap(pix);
|
viewElement->AddPixmap(pix);
|
||||||
viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
|
viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
|
||||||
if (debugViewElement)
|
|
||||||
viewElement->ActivateDebugTokens();
|
|
||||||
} else {
|
} else {
|
||||||
(hit->second)->AddPixmap(pix);
|
(hit->second)->AddPixmap(pix);
|
||||||
}
|
}
|
||||||
@ -1309,7 +1314,7 @@ string cTemplateViewMessage::GetViewElementName(eViewElement ve) {
|
|||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cTemplateViewMessage::AddPixmap(string sViewElement, cTemplatePixmap *pix, bool debugViewElement) {
|
void cTemplateViewMessage::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes) {
|
||||||
eViewElement ve = veUndefined;
|
eViewElement ve = veUndefined;
|
||||||
|
|
||||||
if (!sViewElement.compare("background")) {
|
if (!sViewElement.compare("background")) {
|
||||||
@ -1328,10 +1333,9 @@ void cTemplateViewMessage::AddPixmap(string sViewElement, cTemplatePixmap *pix,
|
|||||||
map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
|
map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
|
||||||
if (hit == viewElements.end()) {
|
if (hit == viewElements.end()) {
|
||||||
cTemplateViewElement *viewElement = new cTemplateViewElement();
|
cTemplateViewElement *viewElement = new cTemplateViewElement();
|
||||||
|
viewElement->SetParameters(viewElementattributes);
|
||||||
viewElement->AddPixmap(pix);
|
viewElement->AddPixmap(pix);
|
||||||
viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
|
viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
|
||||||
if (debugViewElement)
|
|
||||||
viewElement->ActivateDebugTokens();
|
|
||||||
} else {
|
} else {
|
||||||
(hit->second)->AddPixmap(pix);
|
(hit->second)->AddPixmap(pix);
|
||||||
}
|
}
|
||||||
@ -1357,6 +1361,14 @@ cTemplateViewReplay::cTemplateViewReplay(void) {
|
|||||||
attributes.insert("scaletvheight");
|
attributes.insert("scaletvheight");
|
||||||
funcsAllowed.insert(pair< string, set<string> >(viewName, attributes));
|
funcsAllowed.insert(pair< string, set<string> >(viewName, attributes));
|
||||||
|
|
||||||
|
//definition of allowed parameters for onpause and onpausemodeonly viewelement
|
||||||
|
attributes.clear();
|
||||||
|
attributes.insert("debug");
|
||||||
|
attributes.insert("delay");
|
||||||
|
attributes.insert("fadetime");
|
||||||
|
funcsAllowed.insert(pair< string, set<string> >("onpause", attributes));
|
||||||
|
funcsAllowed.insert(pair< string, set<string> >("onpausemodeonly", attributes));
|
||||||
|
|
||||||
SetViewElements();
|
SetViewElements();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1378,6 +1390,8 @@ void cTemplateViewReplay::SetViewElements(void) {
|
|||||||
viewElementsAllowed.insert("controliconsmodeonly");
|
viewElementsAllowed.insert("controliconsmodeonly");
|
||||||
viewElementsAllowed.insert("jump");
|
viewElementsAllowed.insert("jump");
|
||||||
viewElementsAllowed.insert("message");
|
viewElementsAllowed.insert("message");
|
||||||
|
viewElementsAllowed.insert("onpause");
|
||||||
|
viewElementsAllowed.insert("onpausemodeonly");
|
||||||
}
|
}
|
||||||
|
|
||||||
string cTemplateViewReplay::GetViewElementName(eViewElement ve) {
|
string cTemplateViewReplay::GetViewElementName(eViewElement ve) {
|
||||||
@ -1422,6 +1436,12 @@ string cTemplateViewReplay::GetViewElementName(eViewElement ve) {
|
|||||||
case veScraperContent:
|
case veScraperContent:
|
||||||
name = "Scraper Content";
|
name = "Scraper Content";
|
||||||
break;
|
break;
|
||||||
|
case veOnPause:
|
||||||
|
name = "On Pause";
|
||||||
|
break;
|
||||||
|
case veOnPauseModeOnly:
|
||||||
|
name = "On Pause Mode Only";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
name = "Unknown";
|
name = "Unknown";
|
||||||
break;
|
break;
|
||||||
@ -1429,7 +1449,7 @@ string cTemplateViewReplay::GetViewElementName(eViewElement ve) {
|
|||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cTemplateViewReplay::AddPixmap(string sViewElement, cTemplatePixmap *pix, bool debugViewElement) {
|
void cTemplateViewReplay::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes) {
|
||||||
eViewElement ve = veUndefined;
|
eViewElement ve = veUndefined;
|
||||||
|
|
||||||
if (!sViewElement.compare("background")) {
|
if (!sViewElement.compare("background")) {
|
||||||
@ -1460,6 +1480,10 @@ void cTemplateViewReplay::AddPixmap(string sViewElement, cTemplatePixmap *pix, b
|
|||||||
ve = veRecJump;
|
ve = veRecJump;
|
||||||
} else if (!sViewElement.compare("message")) {
|
} else if (!sViewElement.compare("message")) {
|
||||||
ve = veMessage;
|
ve = veMessage;
|
||||||
|
} else if (!sViewElement.compare("onpause")) {
|
||||||
|
ve = veOnPause;
|
||||||
|
} else if (!sViewElement.compare("onpausemodeonly")) {
|
||||||
|
ve = veOnPauseModeOnly;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ve == veUndefined) {
|
if (ve == veUndefined) {
|
||||||
@ -1472,10 +1496,9 @@ void cTemplateViewReplay::AddPixmap(string sViewElement, cTemplatePixmap *pix, b
|
|||||||
map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
|
map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
|
||||||
if (hit == viewElements.end()) {
|
if (hit == viewElements.end()) {
|
||||||
cTemplateViewElement *viewElement = new cTemplateViewElement();
|
cTemplateViewElement *viewElement = new cTemplateViewElement();
|
||||||
|
viewElement->SetParameters(viewElementattributes);
|
||||||
viewElement->AddPixmap(pix);
|
viewElement->AddPixmap(pix);
|
||||||
viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
|
viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
|
||||||
if (debugViewElement)
|
|
||||||
viewElement->ActivateDebugTokens();
|
|
||||||
} else {
|
} else {
|
||||||
(hit->second)->AddPixmap(pix);
|
(hit->second)->AddPixmap(pix);
|
||||||
}
|
}
|
||||||
@ -1529,7 +1552,7 @@ string cTemplateViewVolume::GetViewElementName(eViewElement ve) {
|
|||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cTemplateViewVolume::AddPixmap(string sViewElement, cTemplatePixmap *pix, bool debugViewElement) {
|
void cTemplateViewVolume::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes) {
|
||||||
eViewElement ve = veUndefined;
|
eViewElement ve = veUndefined;
|
||||||
|
|
||||||
if (!sViewElement.compare("background")) {
|
if (!sViewElement.compare("background")) {
|
||||||
@ -1548,10 +1571,9 @@ void cTemplateViewVolume::AddPixmap(string sViewElement, cTemplatePixmap *pix, b
|
|||||||
map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
|
map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
|
||||||
if (hit == viewElements.end()) {
|
if (hit == viewElements.end()) {
|
||||||
cTemplateViewElement *viewElement = new cTemplateViewElement();
|
cTemplateViewElement *viewElement = new cTemplateViewElement();
|
||||||
|
viewElement->SetParameters(viewElementattributes);
|
||||||
viewElement->AddPixmap(pix);
|
viewElement->AddPixmap(pix);
|
||||||
viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
|
viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
|
||||||
if (debugViewElement)
|
|
||||||
viewElement->ActivateDebugTokens();
|
|
||||||
} else {
|
} else {
|
||||||
(hit->second)->AddPixmap(pix);
|
(hit->second)->AddPixmap(pix);
|
||||||
}
|
}
|
||||||
@ -1634,7 +1656,7 @@ string cTemplateViewAudioTracks::GetViewListName(eViewList vl) {
|
|||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cTemplateViewAudioTracks::AddPixmap(string sViewElement, cTemplatePixmap *pix, bool debugViewElement) {
|
void cTemplateViewAudioTracks::AddPixmap(string sViewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes) {
|
||||||
eViewElement ve = veUndefined;
|
eViewElement ve = veUndefined;
|
||||||
|
|
||||||
if (!sViewElement.compare("background")) {
|
if (!sViewElement.compare("background")) {
|
||||||
@ -1653,10 +1675,9 @@ void cTemplateViewAudioTracks::AddPixmap(string sViewElement, cTemplatePixmap *p
|
|||||||
map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
|
map < eViewElement, cTemplateViewElement* >::iterator hit = viewElements.find(ve);
|
||||||
if (hit == viewElements.end()) {
|
if (hit == viewElements.end()) {
|
||||||
cTemplateViewElement *viewElement = new cTemplateViewElement();
|
cTemplateViewElement *viewElement = new cTemplateViewElement();
|
||||||
|
viewElement->SetParameters(viewElementattributes);
|
||||||
viewElement->AddPixmap(pix);
|
viewElement->AddPixmap(pix);
|
||||||
viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
|
viewElements.insert(pair< eViewElement, cTemplateViewElement*>(ve, viewElement));
|
||||||
if (debugViewElement)
|
|
||||||
viewElement->ActivateDebugTokens();
|
|
||||||
} else {
|
} else {
|
||||||
(hit->second)->AddPixmap(pix);
|
(hit->second)->AddPixmap(pix);
|
||||||
}
|
}
|
||||||
|
@ -72,7 +72,7 @@ public:
|
|||||||
virtual string GetViewListName(eViewList vl) { return ""; };
|
virtual string GetViewListName(eViewList vl) { return ""; };
|
||||||
virtual void AddSubView(string sSubView, cTemplateView *subView) {};
|
virtual void AddSubView(string sSubView, cTemplateView *subView) {};
|
||||||
virtual void AddPluginView(string plugName, int templNo, cTemplateView *plugView) {};
|
virtual void AddPluginView(string plugName, int templNo, cTemplateView *plugView) {};
|
||||||
virtual void AddPixmap(string sViewElement, cTemplatePixmap *pix, bool debugViewElement) {};
|
virtual void AddPixmap(string sViewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes) {};
|
||||||
virtual void AddViewList(string sViewList, cTemplateViewList *viewList) {};
|
virtual void AddViewList(string sViewList, cTemplateViewList *viewList) {};
|
||||||
virtual void AddViewTab(cTemplateViewTab *viewTab) {};
|
virtual void AddViewTab(cTemplateViewTab *viewTab) {};
|
||||||
//Setter Functions
|
//Setter Functions
|
||||||
@ -129,7 +129,7 @@ public:
|
|||||||
cTemplateViewChannel(void);
|
cTemplateViewChannel(void);
|
||||||
virtual ~cTemplateViewChannel(void);
|
virtual ~cTemplateViewChannel(void);
|
||||||
string GetViewElementName(eViewElement ve);
|
string GetViewElementName(eViewElement ve);
|
||||||
void AddPixmap(string viewElement, cTemplatePixmap *pix, bool debugViewElement);
|
void AddPixmap(string viewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes);
|
||||||
};
|
};
|
||||||
|
|
||||||
// --- cTemplateViewMenu -------------------------------------------------------------
|
// --- cTemplateViewMenu -------------------------------------------------------------
|
||||||
@ -147,7 +147,7 @@ public:
|
|||||||
string GetViewListName(eViewList vl);
|
string GetViewListName(eViewList vl);
|
||||||
void AddSubView(string sSubView, cTemplateView *subView);
|
void AddSubView(string sSubView, cTemplateView *subView);
|
||||||
void AddPluginView(string plugName, int templNo, cTemplateView *plugView);
|
void AddPluginView(string plugName, int templNo, cTemplateView *plugView);
|
||||||
void AddPixmap(string viewElement, cTemplatePixmap *pix, bool debugViewElement);
|
void AddPixmap(string viewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes);
|
||||||
void AddViewList(string sViewList, cTemplateViewList *viewList);
|
void AddViewList(string sViewList, cTemplateViewList *viewList);
|
||||||
void AddViewTab(cTemplateViewTab *viewTab);
|
void AddViewTab(cTemplateViewTab *viewTab);
|
||||||
};
|
};
|
||||||
@ -161,7 +161,7 @@ public:
|
|||||||
cTemplateViewMessage(void);
|
cTemplateViewMessage(void);
|
||||||
virtual ~cTemplateViewMessage(void);
|
virtual ~cTemplateViewMessage(void);
|
||||||
string GetViewElementName(eViewElement ve);
|
string GetViewElementName(eViewElement ve);
|
||||||
void AddPixmap(string viewElement, cTemplatePixmap *pix, bool debugViewElement);
|
void AddPixmap(string viewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes);
|
||||||
};
|
};
|
||||||
|
|
||||||
// --- cTemplateViewReplay -------------------------------------------------------------
|
// --- cTemplateViewReplay -------------------------------------------------------------
|
||||||
@ -173,7 +173,7 @@ public:
|
|||||||
cTemplateViewReplay(void);
|
cTemplateViewReplay(void);
|
||||||
virtual ~cTemplateViewReplay(void);
|
virtual ~cTemplateViewReplay(void);
|
||||||
string GetViewElementName(eViewElement ve);
|
string GetViewElementName(eViewElement ve);
|
||||||
void AddPixmap(string viewElement, cTemplatePixmap *pix, bool debugViewElement);
|
void AddPixmap(string viewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes);
|
||||||
};
|
};
|
||||||
|
|
||||||
// --- cTemplateViewVolume -------------------------------------------------------------
|
// --- cTemplateViewVolume -------------------------------------------------------------
|
||||||
@ -185,7 +185,7 @@ public:
|
|||||||
cTemplateViewVolume(void);
|
cTemplateViewVolume(void);
|
||||||
virtual ~cTemplateViewVolume(void);
|
virtual ~cTemplateViewVolume(void);
|
||||||
string GetViewElementName(eViewElement ve);
|
string GetViewElementName(eViewElement ve);
|
||||||
void AddPixmap(string viewElement, cTemplatePixmap *pix, bool debugViewElement);
|
void AddPixmap(string viewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes);
|
||||||
};
|
};
|
||||||
|
|
||||||
// --- cTemplateViewAudioTracks -------------------------------------------------------------
|
// --- cTemplateViewAudioTracks -------------------------------------------------------------
|
||||||
@ -199,7 +199,7 @@ public:
|
|||||||
virtual ~cTemplateViewAudioTracks(void);
|
virtual ~cTemplateViewAudioTracks(void);
|
||||||
string GetViewElementName(eViewElement ve);
|
string GetViewElementName(eViewElement ve);
|
||||||
string GetViewListName(eViewList vl);
|
string GetViewListName(eViewList vl);
|
||||||
void AddPixmap(string viewElement, cTemplatePixmap *pix, bool debugViewElement);
|
void AddPixmap(string viewElement, cTemplatePixmap *pix, vector<pair<string, string> > &viewElementattributes);
|
||||||
void AddViewList(string sViewList, cTemplateViewList *viewList);
|
void AddViewList(string sViewList, cTemplateViewList *viewList);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -118,6 +118,13 @@ cTemplateFunction *cTemplateViewElement::GetFunction(string name) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cTemplateViewElement::DebugTokens(void) {
|
||||||
|
if (!parameters)
|
||||||
|
return false;
|
||||||
|
return parameters->DoDebug();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void cTemplateViewElement::Debug(void) {
|
void cTemplateViewElement::Debug(void) {
|
||||||
esyslog("skindesigner: viewelement container size x: %d, y: %d, width: %d, height %d", containerX, containerY, containerWidth, containerHeight);
|
esyslog("skindesigner: viewelement container size x: %d, y: %d, width: %d, height %d", containerX, containerY, containerWidth, containerHeight);
|
||||||
if (parameters)
|
if (parameters)
|
||||||
|
@ -60,6 +60,8 @@ enum eViewElement {
|
|||||||
veControlIconsModeOnly,
|
veControlIconsModeOnly,
|
||||||
veBackgroundModeOnly,
|
veBackgroundModeOnly,
|
||||||
veRecJump,
|
veRecJump,
|
||||||
|
veOnPause,
|
||||||
|
veOnPauseModeOnly,
|
||||||
//DisplayVolume ViewElements
|
//DisplayVolume ViewElements
|
||||||
veVolume
|
veVolume
|
||||||
};
|
};
|
||||||
@ -93,8 +95,7 @@ public:
|
|||||||
void InitIterator(void);
|
void InitIterator(void);
|
||||||
cTemplatePixmap *GetNextPixmap(void);
|
cTemplatePixmap *GetNextPixmap(void);
|
||||||
cTemplateFunction *GetFunction(string name);
|
cTemplateFunction *GetFunction(string name);
|
||||||
void ActivateDebugTokens(void) {debugTokens = true; };
|
bool DebugTokens(void);
|
||||||
bool DebugTokens(void) { return debugTokens; };
|
|
||||||
virtual void Debug(void);
|
virtual void Debug(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -139,12 +139,18 @@ bool cXmlParser::ParseView(void) {
|
|||||||
node = node->next;
|
node = node->next;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (view->ValidSubView((const char*)node->name)) {
|
if (view->ValidSubView((const char*)node->name)) {
|
||||||
ParseSubView(node);
|
ParseSubView(node);
|
||||||
} else if (view->ValidViewElement((const char*)node->name)) {
|
} else if (view->ValidViewElement((const char*)node->name)) {
|
||||||
bool debugViewElement = DebugViewElement(node);
|
xmlAttrPtr attr = node->properties;
|
||||||
ParseViewElement(node->name, node->xmlChildrenNode, debugViewElement);
|
vector<pair<string, string> > attribs;
|
||||||
|
ParseAttributes(attr, node, attribs);
|
||||||
|
/*
|
||||||
|
for (vector<pair<string, string> >::iterator it = attribs.begin(); it != attribs.end(); it++) {
|
||||||
|
esyslog("skindesigner: attribute %s value %s", (it->first).c_str(), (it->second).c_str());
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
ParseViewElement(node->name, node->xmlChildrenNode, attribs);
|
||||||
} else if (view->ValidViewList((const char*)node->name)) {
|
} else if (view->ValidViewList((const char*)node->name)) {
|
||||||
ParseViewList(node);
|
ParseViewList(node);
|
||||||
} else {
|
} else {
|
||||||
@ -178,8 +184,8 @@ bool cXmlParser::ParsePluginView(string plugName, int templateNumber) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (plugView->ValidViewElement((const char*)childNode->name)) {
|
if (plugView->ValidViewElement((const char*)childNode->name)) {
|
||||||
bool debugViewElement = DebugViewElement(childNode);
|
vector<pair<string, string> > attribs;
|
||||||
ParseViewElement(childNode->name, childNode->xmlChildrenNode, debugViewElement, plugView);
|
ParseViewElement(childNode->name, childNode->xmlChildrenNode, attribs, plugView);
|
||||||
} else if (plugView->ValidViewList((const char*)childNode->name)) {
|
} else if (plugView->ValidViewList((const char*)childNode->name)) {
|
||||||
ParseViewList(childNode, plugView);
|
ParseViewList(childNode, plugView);
|
||||||
} else if (!xmlStrcmp(childNode->name, (const xmlChar *) "tab")) {
|
} else if (!xmlStrcmp(childNode->name, (const xmlChar *) "tab")) {
|
||||||
@ -508,8 +514,8 @@ bool cXmlParser::ParseSubView(xmlNodePtr node) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (subView->ValidViewElement((const char*)childNode->name)) {
|
if (subView->ValidViewElement((const char*)childNode->name)) {
|
||||||
bool debugViewElement = DebugViewElement(childNode);
|
vector<pair<string, string> > attribs;
|
||||||
ParseViewElement(childNode->name, childNode->xmlChildrenNode, debugViewElement, subView);
|
ParseViewElement(childNode->name, childNode->xmlChildrenNode, attribs, subView);
|
||||||
} else if (subView->ValidViewList((const char*)childNode->name)) {
|
} else if (subView->ValidViewList((const char*)childNode->name)) {
|
||||||
ParseViewList(childNode, subView);
|
ParseViewList(childNode, subView);
|
||||||
} else if (!xmlStrcmp(childNode->name, (const xmlChar *) "tab")) {
|
} else if (!xmlStrcmp(childNode->name, (const xmlChar *) "tab")) {
|
||||||
@ -527,17 +533,13 @@ bool cXmlParser::ParseSubView(xmlNodePtr node) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cXmlParser::ParseViewElement(const xmlChar * viewElement, xmlNodePtr node, bool debugVE, cTemplateView *subView) {
|
void cXmlParser::ParseViewElement(const xmlChar * viewElement, xmlNodePtr node, vector<pair<string, string> > &attributes, cTemplateView *subView) {
|
||||||
if (!node)
|
if (!node)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!view)
|
if (!view)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (debugVE) {
|
|
||||||
dsyslog("skindesigner: activating debugging of viewElement %s", (const char*)viewElement);
|
|
||||||
}
|
|
||||||
|
|
||||||
while (node != NULL) {
|
while (node != NULL) {
|
||||||
|
|
||||||
if (node->type != XML_ELEMENT_NODE) {
|
if (node->type != XML_ELEMENT_NODE) {
|
||||||
@ -562,9 +564,9 @@ void cXmlParser::ParseViewElement(const xmlChar * viewElement, xmlNodePtr node,
|
|||||||
pix->SetParameters(attribs);
|
pix->SetParameters(attribs);
|
||||||
ParseFunctionCalls(node->xmlChildrenNode, pix);
|
ParseFunctionCalls(node->xmlChildrenNode, pix);
|
||||||
if (subView)
|
if (subView)
|
||||||
subView->AddPixmap((const char*)viewElement, pix, debugVE);
|
subView->AddPixmap((const char*)viewElement, pix, attributes);
|
||||||
else
|
else
|
||||||
view->AddPixmap((const char*)viewElement, pix, debugVE);
|
view->AddPixmap((const char*)viewElement, pix, attributes);
|
||||||
|
|
||||||
node = node->next;
|
node = node->next;
|
||||||
}
|
}
|
||||||
@ -601,15 +603,6 @@ void cXmlParser::ParseViewList(xmlNodePtr parentNode, cTemplateView *subView) {
|
|||||||
ParseAttributes(attrCur, node, attribsCur);
|
ParseAttributes(attrCur, node, attribsCur);
|
||||||
currentElement->SetGlobals(globals);
|
currentElement->SetGlobals(globals);
|
||||||
currentElement->SetParameters(attribsCur);
|
currentElement->SetParameters(attribsCur);
|
||||||
bool debugCurrent = false;
|
|
||||||
for (vector<pair<string, string> >::iterator it = attribsCur.begin(); it != attribsCur.end(); it++) {
|
|
||||||
if (!(it->first).compare("debug")) {
|
|
||||||
debugCurrent = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (debugCurrent)
|
|
||||||
currentElement->ActivateDebugTokens();
|
|
||||||
while (childNode != NULL) {
|
while (childNode != NULL) {
|
||||||
if (childNode->type != XML_ELEMENT_NODE) {
|
if (childNode->type != XML_ELEMENT_NODE) {
|
||||||
childNode = childNode->next;
|
childNode = childNode->next;
|
||||||
@ -631,13 +624,15 @@ void cXmlParser::ParseViewList(xmlNodePtr parentNode, cTemplateView *subView) {
|
|||||||
}
|
}
|
||||||
viewList->AddCurrentElement(currentElement);
|
viewList->AddCurrentElement(currentElement);
|
||||||
} else if (!xmlStrcmp(node->name, (const xmlChar *) "listelement")) {
|
} else if (!xmlStrcmp(node->name, (const xmlChar *) "listelement")) {
|
||||||
bool debugViewList = DebugViewElement(node);
|
|
||||||
xmlNodePtr childNode = node->xmlChildrenNode;
|
xmlNodePtr childNode = node->xmlChildrenNode;
|
||||||
if (!childNode)
|
if (!childNode)
|
||||||
continue;
|
continue;
|
||||||
cTemplateViewElement *listElement = new cTemplateViewElement();
|
cTemplateViewElement *listElement = new cTemplateViewElement();
|
||||||
if (debugViewList)
|
xmlAttrPtr attrList = node->properties;
|
||||||
listElement->ActivateDebugTokens();
|
vector<pair<string, string> > attribsList;
|
||||||
|
ParseAttributes(attrList, node, attribsList);
|
||||||
|
listElement->SetGlobals(globals);
|
||||||
|
listElement->SetParameters(attribsList);
|
||||||
while (childNode != NULL) {
|
while (childNode != NULL) {
|
||||||
if (childNode->type != XML_ELEMENT_NODE) {
|
if (childNode->type != XML_ELEMENT_NODE) {
|
||||||
childNode = childNode->next;
|
childNode = childNode->next;
|
||||||
@ -775,6 +770,7 @@ bool cXmlParser::ParseAttributes(xmlAttrPtr attr, xmlNodePtr node, vector<pair<s
|
|||||||
xmlChar *value = NULL;
|
xmlChar *value = NULL;
|
||||||
value = xmlGetProp(node, attr->name);
|
value = xmlGetProp(node, attr->name);
|
||||||
if (!view->ValidAttribute((const char*)node->name, (const char*)attr->name)) {
|
if (!view->ValidAttribute((const char*)node->name, (const char*)attr->name)) {
|
||||||
|
esyslog("skindesigner: unknown attribute %s in %s", (const char*)attr->name, (const char*)node->name);
|
||||||
attr = attr->next;
|
attr = attr->next;
|
||||||
if (value)
|
if (value)
|
||||||
xmlFree(value);
|
xmlFree(value);
|
||||||
@ -789,17 +785,6 @@ bool cXmlParser::ParseAttributes(xmlAttrPtr attr, xmlNodePtr node, vector<pair<s
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cXmlParser::DebugViewElement(xmlNodePtr node) {
|
|
||||||
xmlAttrPtr attr = node->properties;
|
|
||||||
vector<pair<string, string> > attribs;
|
|
||||||
ParseAttributes(attr, node, attribs);
|
|
||||||
for (vector<pair<string, string> >::iterator it = attribs.begin(); it != attribs.end(); it++) {
|
|
||||||
if (!(it->first).compare("debug"))
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void cXmlParser::InitLibXML() {
|
void cXmlParser::InitLibXML() {
|
||||||
xmlInitParser();
|
xmlInitParser();
|
||||||
}
|
}
|
||||||
|
@ -36,13 +36,12 @@ private:
|
|||||||
void ParseGlobalFonts(xmlNodePtr node);
|
void ParseGlobalFonts(xmlNodePtr node);
|
||||||
void ParseTranslations(xmlNodePtr node);
|
void ParseTranslations(xmlNodePtr node);
|
||||||
bool ParseSubView(xmlNodePtr node);
|
bool ParseSubView(xmlNodePtr node);
|
||||||
void ParseViewElement(const xmlChar * viewElement, xmlNodePtr node, bool debugVE, cTemplateView *subView = NULL);
|
void ParseViewElement(const xmlChar * viewElement, xmlNodePtr node, vector<pair<string, string> > &attributes, cTemplateView *subView = NULL);
|
||||||
void ParseViewList(xmlNodePtr parentNode, cTemplateView *subView = NULL);
|
void ParseViewList(xmlNodePtr parentNode, cTemplateView *subView = NULL);
|
||||||
void ParseViewTab(xmlNodePtr parentNode, cTemplateView *subView);
|
void ParseViewTab(xmlNodePtr parentNode, cTemplateView *subView);
|
||||||
void ParseFunctionCalls(xmlNodePtr node, cTemplatePixmap *pix);
|
void ParseFunctionCalls(xmlNodePtr node, cTemplatePixmap *pix);
|
||||||
void ParseLoopFunctionCalls(xmlNodePtr node, cTemplateLoopFunction *loopFunc);
|
void ParseLoopFunctionCalls(xmlNodePtr node, cTemplateLoopFunction *loopFunc);
|
||||||
bool ParseAttributes(xmlAttrPtr attr, xmlNodePtr node, vector<pair<string, string> > &attribs);
|
bool ParseAttributes(xmlAttrPtr attr, xmlNodePtr node, vector<pair<string, string> > &attribs);
|
||||||
bool DebugViewElement(xmlNodePtr node);
|
|
||||||
public:
|
public:
|
||||||
cXmlParser(void);
|
cXmlParser(void);
|
||||||
virtual ~cXmlParser(void);
|
virtual ~cXmlParser(void);
|
||||||
|
@ -190,6 +190,10 @@
|
|||||||
<trans lang="en_EN">Volume</trans>
|
<trans lang="en_EN">Volume</trans>
|
||||||
<trans lang="de_DE">Lautstärke</trans>
|
<trans lang="de_DE">Lautstärke</trans>
|
||||||
</token>
|
</token>
|
||||||
|
<token name="tr(pause)">
|
||||||
|
<trans lang="en_EN">Pause</trans>
|
||||||
|
<trans lang="de_DE">Pause</trans>
|
||||||
|
</token>
|
||||||
</translations>
|
</translations>
|
||||||
<!--
|
<!--
|
||||||
The three Fonts FontOSD, FontFix and FontSml configured in VDR
|
The three Fonts FontOSD, FontFix and FontSml configured in VDR
|
||||||
|
@ -19,11 +19,6 @@
|
|||||||
<area x="25%" y="85%" width="50%" height="10%" layer="1">
|
<area x="25%" y="85%" width="50%" height="10%" layer="1">
|
||||||
<fill color="{clrTransBlack}" />
|
<fill color="{clrTransBlack}" />
|
||||||
</area>
|
</area>
|
||||||
<!-- background datetime -->
|
|
||||||
<area x="70%" y="0" width="30%" height="13%" layer="1">
|
|
||||||
<fill color="{clrTransBlack}" />
|
|
||||||
<drawrectangle x="0" y="0" width="45%" height="100%" color="{clrTransBlueLight}" />
|
|
||||||
</area>
|
|
||||||
</backgroundmodeonly>
|
</backgroundmodeonly>
|
||||||
|
|
||||||
<!-- Available Variables datetime:
|
<!-- Available Variables datetime:
|
||||||
@ -231,6 +226,132 @@
|
|||||||
<drawtext align="center" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{jump}" />
|
<drawtext align="center" valign="center" font="{light}" fontsize="80%" color="{clrWhite}" text="{jump}" />
|
||||||
</area>
|
</area>
|
||||||
</jump>
|
</jump>
|
||||||
|
|
||||||
|
<!-- Available Variables onpause and onpausemodeonly:
|
||||||
|
{name} title of recording
|
||||||
|
{shorttext} shorttext of recording
|
||||||
|
{description} description of recording
|
||||||
|
{date} date of recording in dd.mm.yy
|
||||||
|
{time} time of recording in hh:mm
|
||||||
|
{daynumeric} day as number
|
||||||
|
{month} month as number
|
||||||
|
{year} year as number
|
||||||
|
{duration} real duration of recording in minutes
|
||||||
|
{durationhours} real duration, full hours
|
||||||
|
{durationminutes} real duration, rest of minutes
|
||||||
|
{durationevent} duration of corresponding event in minutes
|
||||||
|
{durationeventhours} event duration, full hours
|
||||||
|
{durationeventminutes} event duration, rest of minutes
|
||||||
|
|
||||||
|
{ismovie} true if event is scraped as a movie
|
||||||
|
Available variables for movies:
|
||||||
|
{movietitle} movie title from themoviedb
|
||||||
|
{movieoriginalTitle} movie original title from themoviedb
|
||||||
|
{movietagline} movie tagline from themoviedb
|
||||||
|
{movieoverview} movie overview from themoviedb
|
||||||
|
{movieadult} true if movie is rated as adult
|
||||||
|
{moviebudget} movie budget from themoviedb in $
|
||||||
|
{movierevenue} movie revenue from themoviedb in $
|
||||||
|
{moviegenres} movie genres from themoviedb
|
||||||
|
{moviehomepage} movie homepage from themoviedb
|
||||||
|
{moviereleasedate} movie release date from themoviedb
|
||||||
|
{movieruntime} movie runtime from themoviedb
|
||||||
|
{moviepopularity} movie popularity from themoviedb
|
||||||
|
{movievoteaverage} movie vote average from themoviedb
|
||||||
|
{posterwidth} width of scraped poster
|
||||||
|
{posterheight} height of scraped poster
|
||||||
|
{posterpath} absolute path of scraped poster
|
||||||
|
{fanartwidth} width of scraped fanart
|
||||||
|
{fanartheight} height of scraped fanart
|
||||||
|
{fanartpath} absolute path of scraped fanart
|
||||||
|
{movieiscollection} true if movie is part of a collection
|
||||||
|
{moviecollectionName} name of movie collection
|
||||||
|
{collectionposterwidth} width of scraped collection poster
|
||||||
|
{collectionposterheight} height of scraped collection poster
|
||||||
|
{collectionposterpath} absolute path of scraped collection poster
|
||||||
|
{collectionfanartwidth} width of scraped collection fanart
|
||||||
|
{collectionfanartheight} height of scraped collection fanart
|
||||||
|
{collectionfanartpath} absolute path of scraped collection fanart
|
||||||
|
{actors[]} array with movie actors
|
||||||
|
{actors[name]} real name of actor
|
||||||
|
{actors[role]} actor role
|
||||||
|
{actors[thumb]} absolute path of scraped actor thumb
|
||||||
|
{actors[thumbwidth]} width of scraped actor thumb
|
||||||
|
{actors[thumbheight]} height of scraped actor thumb
|
||||||
|
|
||||||
|
{isseries} true if event is scraped as a series
|
||||||
|
Available variables for series:
|
||||||
|
{seriesname} name of series
|
||||||
|
{seriesoverview} series overview
|
||||||
|
{seriesfirstaired} first aired date
|
||||||
|
{seriesnetwork} network which produces series
|
||||||
|
{seriesgenre} series genre
|
||||||
|
{seriesrating} series thetvdb rating
|
||||||
|
{seriesstatus} status of series (running / finished)
|
||||||
|
{episodetitle} title of episode
|
||||||
|
{episodenumber} number of episode
|
||||||
|
{episodeseason} season of episode
|
||||||
|
{episodefirstaired} first aired date of episode
|
||||||
|
{episodegueststars} guest stars of episode
|
||||||
|
{episodeoverview} episode overview
|
||||||
|
{episoderating} user rating for episode
|
||||||
|
{episodeimagewidth} episode image width
|
||||||
|
{episodeimageheight} episode image height
|
||||||
|
{episodeimagepath} episode image path
|
||||||
|
{seasonposterwidth} episode season poster width
|
||||||
|
{seasonposterheight} episode season poster height
|
||||||
|
{seasonposterpath} episode season poster path
|
||||||
|
{seriesposter1width} width of 1st poster
|
||||||
|
{seriesposter1height} height of 1st poster
|
||||||
|
{seriesposter1path} path of 1st poster
|
||||||
|
{seriesposter2width} width of 2nd poster
|
||||||
|
{seriesposter2height} height of 2nd poster
|
||||||
|
{seriesposter2path} path of 2nd poster
|
||||||
|
{seriesposter3width} width of 3rd poster
|
||||||
|
{seriesposter3height} height of 3rd poster
|
||||||
|
{seriesposter3path} path of 3rd poster
|
||||||
|
{seriesfanart1width} width of 1st fanart
|
||||||
|
{seriesfanart1height} height of 1st fanart
|
||||||
|
{seriesfanart1path} path of 1st fanart
|
||||||
|
{seriesfanart2width} width of 2nd fanart
|
||||||
|
{seriesfanart2height} height of 2nd fanart
|
||||||
|
{seriesfanart2path} path of 2nd fanart
|
||||||
|
{seriesfanart3width} width of 3rd fanart
|
||||||
|
{seriesfanart3height} height of 3rd fanart
|
||||||
|
{seriesfanart3path} path of 3rd fanart
|
||||||
|
{seriesbanner1width} width of 1st banner
|
||||||
|
{seriesbanner1height} height of 1st banner
|
||||||
|
{seriesbanner1path} path of 1st banner
|
||||||
|
{seriesbanner2width} width of 2nd banner
|
||||||
|
{seriesbanner2height} height of 2nd banner
|
||||||
|
{seriesbanner2path} path of 2nd banner
|
||||||
|
{seriesbanner3width} width of 3rd banner
|
||||||
|
{seriesbanner3height} height of 3rd banner
|
||||||
|
{seriesbanner3path} path of 3rd fanart
|
||||||
|
{actors[]} array with movie actors
|
||||||
|
{actors[name]} real name of actor
|
||||||
|
{actors[role]} actor role
|
||||||
|
{actors[thumb]} absolute path of scraped actor thumb
|
||||||
|
{actors[thumbwidth]} width of scraped actor thumb
|
||||||
|
{actors[thumbheight]} height of scraped actor thumb
|
||||||
|
-->
|
||||||
|
<onpause delay="60" fadetime="{fadeTime}">
|
||||||
|
<area x="0" y="0" width="100%" height="100%" layer="7">
|
||||||
|
<fill color="{clrSemiTransBlack}" />
|
||||||
|
</area>
|
||||||
|
</onpause>
|
||||||
|
|
||||||
|
<onpausemodeonly delay="20" fadetime="{fadeTime}">
|
||||||
|
<area x="0" y="0" width="100%" height="100%" layer="7">
|
||||||
|
<fill color="{clrSemiTransBlack}" />
|
||||||
|
</area>
|
||||||
|
<area x="0" y="0" width="100%" height="100%" layer="6">
|
||||||
|
<drawtext align="center" valign="center" font="{semibold}" fontsize="25%" color="{clrWhite}" text="{tr(pause)}" />
|
||||||
|
<drawimage condition="{isseries}" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesbanner1height} / {seriesbanner1width}"/>
|
||||||
|
<drawimage condition="{ismovie}" imagetype="image" path="{posterpath}" x="10" y="10" width="{areaheight} * 0.4 * {posterwidth} / {posterheight}" height="{areaheight} * 0.4"/>
|
||||||
|
</area>
|
||||||
|
</onpausemodeonly>
|
||||||
|
|
||||||
<!-- Available Variables message:
|
<!-- Available Variables message:
|
||||||
{text} message text
|
{text} message text
|
||||||
{status} true if message is a status message
|
{status} true if message is a status message
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
<color name="clrGray">FF858585</color>
|
<color name="clrGray">FF858585</color>
|
||||||
<color name="clrBackground">B0000000</color>
|
<color name="clrBackground">B0000000</color>
|
||||||
<color name="clrTransBlack">99000000</color>
|
<color name="clrTransBlack">99000000</color>
|
||||||
|
<color name="clrTransBlackDark">DF000000</color>
|
||||||
<color name="clrTransRed">99FF0000</color>
|
<color name="clrTransRed">99FF0000</color>
|
||||||
<color name="clrFontMenuItem">FFFFFFFF</color>
|
<color name="clrFontMenuItem">FFFFFFFF</color>
|
||||||
<color name="clrFontMenuItemSelected">FFFFFFFF</color>
|
<color name="clrFontMenuItemSelected">FFFFFFFF</color>
|
||||||
@ -188,6 +189,10 @@
|
|||||||
<trans lang="en_EN">Volume</trans>
|
<trans lang="en_EN">Volume</trans>
|
||||||
<trans lang="de_DE">Lautstärke</trans>
|
<trans lang="de_DE">Lautstärke</trans>
|
||||||
</token>
|
</token>
|
||||||
|
<token name="tr(pause)">
|
||||||
|
<trans lang="en_EN">Pause</trans>
|
||||||
|
<trans lang="de_DE">Pause</trans>
|
||||||
|
</token>
|
||||||
</translations>
|
</translations>
|
||||||
<!--
|
<!--
|
||||||
The three Fonts FontOSD, FontFix and FontSml configured in VDR
|
The three Fonts FontOSD, FontFix and FontSml configured in VDR
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
<color name="clrGray">FF858585</color>
|
<color name="clrGray">FF858585</color>
|
||||||
<color name="clrBackground">B012273F</color>
|
<color name="clrBackground">B012273F</color>
|
||||||
<color name="clrTransBlack">99000000</color>
|
<color name="clrTransBlack">99000000</color>
|
||||||
|
<color name="clrTransBlackDark">CC000000</color>
|
||||||
<color name="clrTransRed">99FF0000</color>
|
<color name="clrTransRed">99FF0000</color>
|
||||||
<color name="clrFontMenuItem">FFFFFFFF</color>
|
<color name="clrFontMenuItem">FFFFFFFF</color>
|
||||||
<color name="clrFontMenuItemSelected">FF363636</color>
|
<color name="clrFontMenuItemSelected">FF363636</color>
|
||||||
@ -188,6 +189,10 @@
|
|||||||
<trans lang="en_EN">Volume</trans>
|
<trans lang="en_EN">Volume</trans>
|
||||||
<trans lang="de_DE">Lautstärke</trans>
|
<trans lang="de_DE">Lautstärke</trans>
|
||||||
</token>
|
</token>
|
||||||
|
<token name="tr(pause)">
|
||||||
|
<trans lang="en_EN">Pause</trans>
|
||||||
|
<trans lang="de_DE">Pause</trans>
|
||||||
|
</token>
|
||||||
</translations>
|
</translations>
|
||||||
<!--
|
<!--
|
||||||
The three Fonts FontOSD, FontFix and FontSml configured in VDR
|
The three Fonts FontOSD, FontFix and FontSml configured in VDR
|
||||||
|
@ -215,4 +215,128 @@
|
|||||||
</area>
|
</area>
|
||||||
</message>
|
</message>
|
||||||
|
|
||||||
|
<!-- Available Variables onpause and onpausemodeonly:
|
||||||
|
{name} title of recording
|
||||||
|
{shorttext} shorttext of recording
|
||||||
|
{description} description of recording
|
||||||
|
{date} date of recording in dd.mm.yy
|
||||||
|
{time} time of recording in hh:mm
|
||||||
|
{daynumeric} day as number
|
||||||
|
{month} month as number
|
||||||
|
{year} year as number
|
||||||
|
{duration} real duration of recording in minutes
|
||||||
|
{durationhours} real duration, full hours
|
||||||
|
{durationminutes} real duration, rest of minutes
|
||||||
|
{durationevent} duration of corresponding event in minutes
|
||||||
|
{durationeventhours} event duration, full hours
|
||||||
|
{durationeventminutes} event duration, rest of minutes
|
||||||
|
|
||||||
|
{ismovie} true if event is scraped as a movie
|
||||||
|
Available variables for movies:
|
||||||
|
{movietitle} movie title from themoviedb
|
||||||
|
{movieoriginalTitle} movie original title from themoviedb
|
||||||
|
{movietagline} movie tagline from themoviedb
|
||||||
|
{movieoverview} movie overview from themoviedb
|
||||||
|
{movieadult} true if movie is rated as adult
|
||||||
|
{moviebudget} movie budget from themoviedb in $
|
||||||
|
{movierevenue} movie revenue from themoviedb in $
|
||||||
|
{moviegenres} movie genres from themoviedb
|
||||||
|
{moviehomepage} movie homepage from themoviedb
|
||||||
|
{moviereleasedate} movie release date from themoviedb
|
||||||
|
{movieruntime} movie runtime from themoviedb
|
||||||
|
{moviepopularity} movie popularity from themoviedb
|
||||||
|
{movievoteaverage} movie vote average from themoviedb
|
||||||
|
{posterwidth} width of scraped poster
|
||||||
|
{posterheight} height of scraped poster
|
||||||
|
{posterpath} absolute path of scraped poster
|
||||||
|
{fanartwidth} width of scraped fanart
|
||||||
|
{fanartheight} height of scraped fanart
|
||||||
|
{fanartpath} absolute path of scraped fanart
|
||||||
|
{movieiscollection} true if movie is part of a collection
|
||||||
|
{moviecollectionName} name of movie collection
|
||||||
|
{collectionposterwidth} width of scraped collection poster
|
||||||
|
{collectionposterheight} height of scraped collection poster
|
||||||
|
{collectionposterpath} absolute path of scraped collection poster
|
||||||
|
{collectionfanartwidth} width of scraped collection fanart
|
||||||
|
{collectionfanartheight} height of scraped collection fanart
|
||||||
|
{collectionfanartpath} absolute path of scraped collection fanart
|
||||||
|
{actors[]} array with movie actors
|
||||||
|
{actors[name]} real name of actor
|
||||||
|
{actors[role]} actor role
|
||||||
|
{actors[thumb]} absolute path of scraped actor thumb
|
||||||
|
{actors[thumbwidth]} width of scraped actor thumb
|
||||||
|
{actors[thumbheight]} height of scraped actor thumb
|
||||||
|
|
||||||
|
{isseries} true if event is scraped as a series
|
||||||
|
Available variables for series:
|
||||||
|
{seriesname} name of series
|
||||||
|
{seriesoverview} series overview
|
||||||
|
{seriesfirstaired} first aired date
|
||||||
|
{seriesnetwork} network which produces series
|
||||||
|
{seriesgenre} series genre
|
||||||
|
{seriesrating} series thetvdb rating
|
||||||
|
{seriesstatus} status of series (running / finished)
|
||||||
|
{episodetitle} title of episode
|
||||||
|
{episodenumber} number of episode
|
||||||
|
{episodeseason} season of episode
|
||||||
|
{episodefirstaired} first aired date of episode
|
||||||
|
{episodegueststars} guest stars of episode
|
||||||
|
{episodeoverview} episode overview
|
||||||
|
{episoderating} user rating for episode
|
||||||
|
{episodeimagewidth} episode image width
|
||||||
|
{episodeimageheight} episode image height
|
||||||
|
{episodeimagepath} episode image path
|
||||||
|
{seasonposterwidth} episode season poster width
|
||||||
|
{seasonposterheight} episode season poster height
|
||||||
|
{seasonposterpath} episode season poster path
|
||||||
|
{seriesposter1width} width of 1st poster
|
||||||
|
{seriesposter1height} height of 1st poster
|
||||||
|
{seriesposter1path} path of 1st poster
|
||||||
|
{seriesposter2width} width of 2nd poster
|
||||||
|
{seriesposter2height} height of 2nd poster
|
||||||
|
{seriesposter2path} path of 2nd poster
|
||||||
|
{seriesposter3width} width of 3rd poster
|
||||||
|
{seriesposter3height} height of 3rd poster
|
||||||
|
{seriesposter3path} path of 3rd poster
|
||||||
|
{seriesfanart1width} width of 1st fanart
|
||||||
|
{seriesfanart1height} height of 1st fanart
|
||||||
|
{seriesfanart1path} path of 1st fanart
|
||||||
|
{seriesfanart2width} width of 2nd fanart
|
||||||
|
{seriesfanart2height} height of 2nd fanart
|
||||||
|
{seriesfanart2path} path of 2nd fanart
|
||||||
|
{seriesfanart3width} width of 3rd fanart
|
||||||
|
{seriesfanart3height} height of 3rd fanart
|
||||||
|
{seriesfanart3path} path of 3rd fanart
|
||||||
|
{seriesbanner1width} width of 1st banner
|
||||||
|
{seriesbanner1height} height of 1st banner
|
||||||
|
{seriesbanner1path} path of 1st banner
|
||||||
|
{seriesbanner2width} width of 2nd banner
|
||||||
|
{seriesbanner2height} height of 2nd banner
|
||||||
|
{seriesbanner2path} path of 2nd banner
|
||||||
|
{seriesbanner3width} width of 3rd banner
|
||||||
|
{seriesbanner3height} height of 3rd banner
|
||||||
|
{seriesbanner3path} path of 3rd fanart
|
||||||
|
{actors[]} array with movie actors
|
||||||
|
{actors[name]} real name of actor
|
||||||
|
{actors[role]} actor role
|
||||||
|
{actors[thumb]} absolute path of scraped actor thumb
|
||||||
|
{actors[thumbwidth]} width of scraped actor thumb
|
||||||
|
{actors[thumbheight]} height of scraped actor thumb
|
||||||
|
-->
|
||||||
|
<onpause delay="60" fadetime="{fadeTime}">
|
||||||
|
<area x="0" y="0" width="100%" height="100%" layer="7">
|
||||||
|
<fill color="{clrTransBlackDark}" />
|
||||||
|
</area>
|
||||||
|
</onpause>
|
||||||
|
|
||||||
|
<onpausemodeonly delay="20" fadetime="{fadeTime}">
|
||||||
|
<area x="0" y="0" width="100%" height="100%" layer="7">
|
||||||
|
<fill color="{clrTransBlackDark}" />
|
||||||
|
</area>
|
||||||
|
<area x="0" y="0" width="100%" height="100%" layer="6">
|
||||||
|
<drawtext align="center" valign="center" font="{vdrOsd}" fontsize="25%" color="{clrWhite}" text="{tr(pause)}" />
|
||||||
|
<drawimage condition="{isseries}" imagetype="image" path="{seriesbanner1path}" align="center" y="10" width="{areawidth}*0.5" height="{areawidth} * 0.5 * {seriesbanner1height} / {seriesbanner1width}"/>
|
||||||
|
<drawimage condition="{ismovie}" imagetype="image" path="{posterpath}" x="10" y="10" width="{areaheight} * 0.4 * {posterwidth} / {posterheight}" height="{areaheight} * 0.4"/>
|
||||||
|
</area>
|
||||||
|
</onpausemodeonly>
|
||||||
</displayreplay>
|
</displayreplay>
|
||||||
|
@ -125,4 +125,120 @@
|
|||||||
<message>
|
<message>
|
||||||
</message>
|
</message>
|
||||||
|
|
||||||
|
<!-- Available Variables onpause and onpausemodeonly:
|
||||||
|
{name} title of recording
|
||||||
|
{shorttext} shorttext of recording
|
||||||
|
{description} description of recording
|
||||||
|
{date} date of recording in dd.mm.yy
|
||||||
|
{time} time of recording in hh:mm
|
||||||
|
{daynumeric} day as number
|
||||||
|
{month} month as number
|
||||||
|
{year} year as number
|
||||||
|
{duration} real duration of recording in minutes
|
||||||
|
{durationhours} real duration, full hours
|
||||||
|
{durationminutes} real duration, rest of minutes
|
||||||
|
{durationevent} duration of corresponding event in minutes
|
||||||
|
{durationeventhours} event duration, full hours
|
||||||
|
{durationeventminutes} event duration, rest of minutes
|
||||||
|
|
||||||
|
{ismovie} true if event is scraped as a movie
|
||||||
|
Available variables for movies:
|
||||||
|
{movietitle} movie title from themoviedb
|
||||||
|
{movieoriginalTitle} movie original title from themoviedb
|
||||||
|
{movietagline} movie tagline from themoviedb
|
||||||
|
{movieoverview} movie overview from themoviedb
|
||||||
|
{movieadult} true if movie is rated as adult
|
||||||
|
{moviebudget} movie budget from themoviedb in $
|
||||||
|
{movierevenue} movie revenue from themoviedb in $
|
||||||
|
{moviegenres} movie genres from themoviedb
|
||||||
|
{moviehomepage} movie homepage from themoviedb
|
||||||
|
{moviereleasedate} movie release date from themoviedb
|
||||||
|
{movieruntime} movie runtime from themoviedb
|
||||||
|
{moviepopularity} movie popularity from themoviedb
|
||||||
|
{movievoteaverage} movie vote average from themoviedb
|
||||||
|
{posterwidth} width of scraped poster
|
||||||
|
{posterheight} height of scraped poster
|
||||||
|
{posterpath} absolute path of scraped poster
|
||||||
|
{fanartwidth} width of scraped fanart
|
||||||
|
{fanartheight} height of scraped fanart
|
||||||
|
{fanartpath} absolute path of scraped fanart
|
||||||
|
{movieiscollection} true if movie is part of a collection
|
||||||
|
{moviecollectionName} name of movie collection
|
||||||
|
{collectionposterwidth} width of scraped collection poster
|
||||||
|
{collectionposterheight} height of scraped collection poster
|
||||||
|
{collectionposterpath} absolute path of scraped collection poster
|
||||||
|
{collectionfanartwidth} width of scraped collection fanart
|
||||||
|
{collectionfanartheight} height of scraped collection fanart
|
||||||
|
{collectionfanartpath} absolute path of scraped collection fanart
|
||||||
|
{actors[]} array with movie actors
|
||||||
|
{actors[name]} real name of actor
|
||||||
|
{actors[role]} actor role
|
||||||
|
{actors[thumb]} absolute path of scraped actor thumb
|
||||||
|
{actors[thumbwidth]} width of scraped actor thumb
|
||||||
|
{actors[thumbheight]} height of scraped actor thumb
|
||||||
|
|
||||||
|
{isseries} true if event is scraped as a series
|
||||||
|
Available variables for series:
|
||||||
|
{seriesname} name of series
|
||||||
|
{seriesoverview} series overview
|
||||||
|
{seriesfirstaired} first aired date
|
||||||
|
{seriesnetwork} network which produces series
|
||||||
|
{seriesgenre} series genre
|
||||||
|
{seriesrating} series thetvdb rating
|
||||||
|
{seriesstatus} status of series (running / finished)
|
||||||
|
{episodetitle} title of episode
|
||||||
|
{episodenumber} number of episode
|
||||||
|
{episodeseason} season of episode
|
||||||
|
{episodefirstaired} first aired date of episode
|
||||||
|
{episodegueststars} guest stars of episode
|
||||||
|
{episodeoverview} episode overview
|
||||||
|
{episoderating} user rating for episode
|
||||||
|
{episodeimagewidth} episode image width
|
||||||
|
{episodeimageheight} episode image height
|
||||||
|
{episodeimagepath} episode image path
|
||||||
|
{seasonposterwidth} episode season poster width
|
||||||
|
{seasonposterheight} episode season poster height
|
||||||
|
{seasonposterpath} episode season poster path
|
||||||
|
{seriesposter1width} width of 1st poster
|
||||||
|
{seriesposter1height} height of 1st poster
|
||||||
|
{seriesposter1path} path of 1st poster
|
||||||
|
{seriesposter2width} width of 2nd poster
|
||||||
|
{seriesposter2height} height of 2nd poster
|
||||||
|
{seriesposter2path} path of 2nd poster
|
||||||
|
{seriesposter3width} width of 3rd poster
|
||||||
|
{seriesposter3height} height of 3rd poster
|
||||||
|
{seriesposter3path} path of 3rd poster
|
||||||
|
{seriesfanart1width} width of 1st fanart
|
||||||
|
{seriesfanart1height} height of 1st fanart
|
||||||
|
{seriesfanart1path} path of 1st fanart
|
||||||
|
{seriesfanart2width} width of 2nd fanart
|
||||||
|
{seriesfanart2height} height of 2nd fanart
|
||||||
|
{seriesfanart2path} path of 2nd fanart
|
||||||
|
{seriesfanart3width} width of 3rd fanart
|
||||||
|
{seriesfanart3height} height of 3rd fanart
|
||||||
|
{seriesfanart3path} path of 3rd fanart
|
||||||
|
{seriesbanner1width} width of 1st banner
|
||||||
|
{seriesbanner1height} height of 1st banner
|
||||||
|
{seriesbanner1path} path of 1st banner
|
||||||
|
{seriesbanner2width} width of 2nd banner
|
||||||
|
{seriesbanner2height} height of 2nd banner
|
||||||
|
{seriesbanner2path} path of 2nd banner
|
||||||
|
{seriesbanner3width} width of 3rd banner
|
||||||
|
{seriesbanner3height} height of 3rd banner
|
||||||
|
{seriesbanner3path} path of 3rd fanart
|
||||||
|
{actors[]} array with movie actors
|
||||||
|
{actors[name]} real name of actor
|
||||||
|
{actors[role]} actor role
|
||||||
|
{actors[thumb]} absolute path of scraped actor thumb
|
||||||
|
{actors[thumbwidth]} width of scraped actor thumb
|
||||||
|
{actors[thumbheight]} height of scraped actor thumb
|
||||||
|
-->
|
||||||
|
<!-- delay (in seconds) defines the time to wait till viewelement is displayed
|
||||||
|
fadetime in ms -->
|
||||||
|
<onpause delay="60" fadetime="0">
|
||||||
|
</onpause>
|
||||||
|
|
||||||
|
<onpausemodeonly delay="30" fadetime="0">
|
||||||
|
</onpausemodeonly>
|
||||||
|
|
||||||
</displayreplay>
|
</displayreplay>
|
||||||
|
@ -153,7 +153,7 @@ void cDisplayMenuDetailView::SetTokens(void) {
|
|||||||
|
|
||||||
intTokens.insert(pair<string,int>("hasreruns", hasReruns));
|
intTokens.insert(pair<string,int>("hasreruns", hasReruns));
|
||||||
|
|
||||||
SetScraperTokens();
|
SetScraperTokens(event, recording, stringTokens, intTokens, loopTokens);
|
||||||
SetEpgPictures(event->EventID());
|
SetEpgPictures(event->EventID());
|
||||||
|
|
||||||
} else if (recording) {
|
} else if (recording) {
|
||||||
@ -205,7 +205,7 @@ void cDisplayMenuDetailView::SetTokens(void) {
|
|||||||
stringTokens.insert(pair<string,string>("durationeventminutes", ""));
|
stringTokens.insert(pair<string,string>("durationeventminutes", ""));
|
||||||
}
|
}
|
||||||
LoadRecordingInformation();
|
LoadRecordingInformation();
|
||||||
SetScraperTokens();
|
SetScraperTokens(event, recording, stringTokens, intTokens, loopTokens);
|
||||||
SetRecordingImages(recording->FileName());
|
SetRecordingImages(recording->FileName());
|
||||||
} else if (text) {
|
} else if (text) {
|
||||||
stringTokens.insert(pair<string,string>("text", 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) {
|
void cDisplayMenuDetailView::InitTabs(void) {
|
||||||
tmplView->InitViewTabIterator();
|
tmplView->InitViewTabIterator();
|
||||||
cTemplateViewTab *tmplTab = NULL;
|
cTemplateViewTab *tmplTab = NULL;
|
||||||
|
@ -4,9 +4,10 @@
|
|||||||
#include <list>
|
#include <list>
|
||||||
#include "../libtemplate/template.h"
|
#include "../libtemplate/template.h"
|
||||||
#include "view.h"
|
#include "view.h"
|
||||||
|
#include "viewhelpers.h"
|
||||||
#include "displaymenutabview.h"
|
#include "displaymenutabview.h"
|
||||||
|
|
||||||
class cDisplayMenuDetailView : public cView {
|
class cDisplayMenuDetailView : public cView, public cViewHelpers {
|
||||||
private:
|
private:
|
||||||
bool detailViewInit;
|
bool detailViewInit;
|
||||||
bool isPluginTextView;
|
bool isPluginTextView;
|
||||||
@ -21,7 +22,6 @@ private:
|
|||||||
map < string, int > intTokens;
|
map < string, int > intTokens;
|
||||||
map < string, vector< map< string, string > > > loopTokens;
|
map < string, vector< map< string, string > > > loopTokens;
|
||||||
void SetTokens(void);
|
void SetTokens(void);
|
||||||
void SetScraperTokens(void);
|
|
||||||
void InitTabs(void);
|
void InitTabs(void);
|
||||||
bool LoadReruns(vector< map< string, string > > *reruns);
|
bool LoadReruns(vector< map< string, string > > *reruns);
|
||||||
void LoadRecordingInformation(void);
|
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"
|
#include "../libcore/helpers.h"
|
||||||
|
|
||||||
cDisplayReplayView::cDisplayReplayView(cTemplateView *tmplView) : cView(tmplView) {
|
cDisplayReplayView::cDisplayReplayView(cTemplateView *tmplView) : cView(tmplView) {
|
||||||
|
onPauseView = NULL;
|
||||||
lastDate = "";
|
lastDate = "";
|
||||||
numMarksLast = 0;
|
numMarksLast = 0;
|
||||||
lastMarks = NULL;
|
lastMarks = NULL;
|
||||||
@ -17,6 +18,9 @@ cDisplayReplayView::~cDisplayReplayView() {
|
|||||||
if (lastMarks) {
|
if (lastMarks) {
|
||||||
delete[] lastMarks;
|
delete[] lastMarks;
|
||||||
}
|
}
|
||||||
|
if (onPauseView) {
|
||||||
|
delete onPauseView;
|
||||||
|
}
|
||||||
CancelSave();
|
CancelSave();
|
||||||
FadeOut();
|
FadeOut();
|
||||||
}
|
}
|
||||||
@ -369,6 +373,22 @@ void cDisplayReplayView::DrawMessage(eMessageType type, const char *text) {
|
|||||||
DrawViewElement(veMessage, &stringTokens, &intTokens);
|
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
|
* Private Functions
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
|
@ -3,9 +3,11 @@
|
|||||||
|
|
||||||
#include "../libtemplate/template.h"
|
#include "../libtemplate/template.h"
|
||||||
#include "view.h"
|
#include "view.h"
|
||||||
|
#include "displayreplayonpauseview.h"
|
||||||
|
|
||||||
class cDisplayReplayView : public cView {
|
class cDisplayReplayView : public cView {
|
||||||
private:
|
private:
|
||||||
|
cDisplayReplayOnPauseView *onPauseView;
|
||||||
cString lastDate;
|
cString lastDate;
|
||||||
int numMarksLast;
|
int numMarksLast;
|
||||||
int *lastMarks;
|
int *lastMarks;
|
||||||
@ -29,6 +31,8 @@ public:
|
|||||||
void DrawControlIcons(bool play, bool forward, int speed, bool modeOnly);
|
void DrawControlIcons(bool play, bool forward, int speed, bool modeOnly);
|
||||||
void DrawJump(const char *jump);
|
void DrawJump(const char *jump);
|
||||||
void DrawMessage(eMessageType type, const char *text);
|
void DrawMessage(eMessageType type, const char *text);
|
||||||
|
void DrawOnPause(bool modeOnly);
|
||||||
|
void ClearOnPause(void);
|
||||||
void DoFadeIn(void) { Start(); };
|
void DoFadeIn(void) { Start(); };
|
||||||
void Flush(void) { DoFlush(); };
|
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) {
|
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
|
//setting correct ViewElement, depending which constructor was used
|
||||||
cTemplateViewElement *viewElement;
|
cTemplateViewElement *viewElement;
|
||||||
if (tmplItem && ve == veMenuCurrentItemDetail) {
|
if (tmplItem && (ve == veMenuCurrentItemDetail || ve == veOnPause)) {
|
||||||
viewElement = tmplItem;
|
viewElement = tmplItem;
|
||||||
} else if (tmplView) {
|
} else if (tmplView) {
|
||||||
viewElement = tmplView->GetViewElement(ve);
|
viewElement = tmplView->GetViewElement(ve);
|
||||||
@ -84,7 +84,6 @@ void cView::DrawViewElement(eViewElement ve, map <string,string> *stringTokens,
|
|||||||
if (viewElement->DebugTokens()) {
|
if (viewElement->DebugTokens()) {
|
||||||
DebugTokens(tmplView ? (tmplView->GetViewElementName(ve)) : "current view", stringTokens, intTokens, loopTokens);
|
DebugTokens(tmplView ? (tmplView->GetViewElementName(ve)) : "current view", stringTokens, intTokens, loopTokens);
|
||||||
}
|
}
|
||||||
|
|
||||||
//iterate through pixmaps of viewelement
|
//iterate through pixmaps of viewelement
|
||||||
int pixCurrent = viewElement->GetPixOffset();
|
int pixCurrent = viewElement->GetPixOffset();
|
||||||
if (pixCurrent < 0)
|
if (pixCurrent < 0)
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include <vdr/menu.h>
|
#include <vdr/menu.h>
|
||||||
|
#include "../services/scraper2vdr.h"
|
||||||
#include "../config.h"
|
#include "../config.h"
|
||||||
#include "../libcore/helpers.h"
|
#include "../libcore/helpers.h"
|
||||||
#include "viewhelpers.h"
|
#include "viewhelpers.h"
|
||||||
@ -168,3 +169,208 @@ bool cViewHelpers::CheckNewMails(void) {
|
|||||||
return false;
|
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);
|
void InitDevices(void);
|
||||||
bool SetDevices(bool initial, map<string,int> *intTokens, vector<map<string,string> > *devices);
|
bool SetDevices(bool initial, map<string,int> *intTokens, vector<map<string,string> > *devices);
|
||||||
bool CheckNewMails(void);
|
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:
|
public:
|
||||||
cViewHelpers(void);
|
cViewHelpers(void);
|
||||||
virtual ~cViewHelpers(void);
|
virtual ~cViewHelpers(void);
|
||||||
|
Loading…
Reference in New Issue
Block a user