compatibility to vdr 2.3.8

This commit is contained in:
horchi 2018-02-16 18:12:48 +01:00
parent c8d54dbe25
commit beeb82bbda
5 changed files with 56 additions and 51 deletions

34
HISTORY
View File

@ -67,9 +67,9 @@ Version 0.0.3
- fixed Bug that displaychannel was not shown after closing displaymenu with
"backspace" (with active menuorg plugin)
- fixed Bug with menuselection Patch
- added tokens {month}, {monthname} and {year} in displaymenutimers listitem and
- added tokens {month}, {monthname} and {year} in displaymenutimers listitem and
currentitem
- added dedicated tokens for posters and banners in <srapercontent> in
- added dedicated tokens for posters and banners in <srapercontent> in
displaychannel and displayreplay
- added Plugin Interface
- fixed crash when clearing a message in displaychannel and displayreplay
@ -81,7 +81,7 @@ Version 0.0.4
Version 0.0.5
- added {channelnumber} and {channelname} Tokens in displaymenudetailepg
- added {channelnumber} and {channelname} Tokens in displaymenudetailepg
detailheader
- fixed {hasicon} Token in displaymenu header
- added {newmails} Token in displaychannel statusinfo, mailbox plugin
@ -111,7 +111,7 @@ Version 0.0.8
Version 0.1.0
- fixed display of color buttons in detailed views
- fixed possible Nullpointer access in displaymenurootview
- fixed possible Nullpointer access in displaymenurootview
- added currentschedule viewelement in displaymenumain
- fixed bug that wrong channel was shown in header of whatson
if entering from whatsonnow
@ -180,7 +180,7 @@ Version 0.1.6
adds its vakues and potentially overrides valués from globals.xml
- check icons, menuicons and skinparts additionally directly in skin folder
to allow default images which can be used for all skins
- fixed bug that setup variables are sometimes not identified in case two
- fixed bug that setup variables are sometimes not identified in case two
or more skin names start identically
Version 0.2.0
@ -195,7 +195,7 @@ Version 0.2.1
- some more nopacity optimizations - thanx@utility
- added possibiliy to use submenus in the skin setup menus
- reloading active skin directly after closing setup menu so that
changes of setup parameters are immediately in use
changes of setup parameters are immediately in use
Version 0.2.2
@ -260,7 +260,7 @@ Version 0.3.3
no signal information will be fetched to improve performance.
Version 0.3.4
- fixed backward compatibility to VDR version < 2.1.1 where
cRecording::IsInUse() was introduced
- automatically detect type of image if no file extension is available
@ -270,7 +270,7 @@ Version 0.4.0
- fixed bug that time was not correctly drawn if a submenu implements
its own time display
- fixed bug that date was drawn every flush in displayreplay
- fixed bug that date was drawn every flush in displayreplay
- fixed bug in metrixhd timers menu
- fixed bug that datetime was not correctly drawn if a submenu implements
its own datetime display
@ -290,7 +290,7 @@ Version 0.4.2
- fixed bug that string tokens are not evaluated in area conditions
- added possibility to draw a debug grid in views
- added more info if debugImage is activted in config
- added possibility for blinking images, texts, rectangles, ellipses
- added possibility for blinking images, texts, rectangles, ellipses
and slopes
- adapted libskindesignerapi makefile for LCLBLD
@ -376,7 +376,7 @@ Version 0.5.3
- added SVG Template parsing
- fixed memory leak when creating fonts
- fixed crash using animated images in plugins
- added banner to displaymenuschedulescurrentview and
- added banner to displaymenuschedulescurrentview and
displaymenureplaycurrentview
- immplemented areacontainers to group areas
- fixed bug displaying pixmaps with transparency
@ -406,10 +406,10 @@ Version 0.6.2
Version 0.6.3
- implemented horizontal menus
For displaying horizontal menus with VDR <= 2.2.x a VDR
patch is required (see /patches/vdr-2.2.0_horizontal_menu.patch
in the plugin source directory). Without this patch the keys
left/right and up/down are not toggled in horizontal menus.
For displaying horizontal menus with VDR <= 2.2.x a VDR
patch is required (see /patches/vdr-2.2.0_horizontal_menu.patch
in the plugin source directory). Without this patch the keys
left/right and up/down are not toggled in horizontal menus.
With VDR >= 2.3.1 this patch is not needed anymore.
- added possibility to add conditions to <menuitems> elements
- added possibility to define a viewelement several times with
@ -418,7 +418,7 @@ Version 0.6.3
- added "valign" option in <drawtextbox>. If the box height is set
and the text does not need the complete height, with valign="center"
the text can be placed horizontally centered inside the box borders.
- implemented optional horizontal main-, recordings- and
- implemented optional horizontal main-, recordings- and
weatherforecast menu in metrixhd
Version 0.7.0
@ -431,3 +431,7 @@ Version 0.7.1
- added possibility to define help texts for skin setup parameters
Version 0.7.2
Version 1.2.4 (horchi)
- added compatibility to vdr 2.3.8

View File

@ -83,13 +83,13 @@ cCond::cCond(const cCond &other) {
compareStrValue = strdup(other.compareStrValue);
}
cCond::~cCond(void) {
free(expr);
cCond::~cCond(void) {
free(expr);
free(compareStrValue);
}
void cCond::Debug(void) {
esyslog("skindesigner: cond %s, operation %s, type %d", expr,
esyslog("skindesigner: cond %s, operation %s, type %d", expr,
(operation == eCondOp::tAnd) ? "++" : "||",
(int)type);
if (constant)
@ -138,15 +138,15 @@ bool cCondition::True(void) {
for (cCond *c = conds.First(); c; c = conds.Next(c)) {
bool condTrue = true;
//evaluate condition
if (c->constant)
if (c->constant)
{
condTrue = c->isTrue;
}
else if (c->type == eCondType::token)
}
else if (c->type == eCondType::token)
{
if (c->tokenType == eCondTokenType::inttoken) {
int tokenVal = tokenContainer->IntToken(c->tokenIndex);
condTrue = (tokenVal > 0) ? true : false;
condTrue = (tokenVal > 0) ? true : false;
} else if (c->tokenType == eCondTokenType::stringtoken) {
char *tokenVal = tokenContainer->StringToken(c->tokenIndex);
if (tokenVal)
@ -159,8 +159,8 @@ bool cCondition::True(void) {
}
}
}
else if (c->type == eCondType::negtoken)
}
else if (c->type == eCondType::negtoken)
{
if (c->tokenType == eCondTokenType::inttoken) {
int tokenVal = tokenContainer->IntToken(c->tokenIndex);
@ -177,7 +177,7 @@ bool cCondition::True(void) {
}
}
}
else if (c->type == eCondType::lowerInt || c->type == eCondType::equalInt || c->type == eCondType::notequalInt || c->type == eCondType::greaterInt)
else if (c->type == eCondType::lowerInt || c->type == eCondType::equalInt || c->type == eCondType::notequalInt || c->type == eCondType::greaterInt)
{
if (c->tokenType == eCondTokenType::inttoken) {
int tokenVal = tokenContainer->IntToken(c->tokenIndex);
@ -219,7 +219,7 @@ bool cCondition::True(void) {
}
}
}
else if (c->type == eCondType::isset || c->type == eCondType::empty)
else if (c->type == eCondType::isset || c->type == eCondType::empty)
{
if (c->tokenType == eCondTokenType::stringtoken) {
char *tokenVal = tokenContainer->StringToken(c->tokenIndex);
@ -251,7 +251,7 @@ bool cCondition::True(void) {
}
}
}
else if (c->type == eCondType::equalString || c->type == eCondType::notEqualString || c->type == eCondType::contains || c->type == eCondType::notContains)
else if (c->type == eCondType::equalString || c->type == eCondType::notEqualString || c->type == eCondType::contains || c->type == eCondType::notContains)
{
if (c->tokenType == eCondTokenType::stringtoken) {
char *tokenVal = tokenContainer->StringToken(c->tokenIndex);
@ -284,7 +284,7 @@ bool cCondition::True(void) {
if (c->operation == eCondOp::tAnd) {
ok = ok && condTrue;
} else if (c->operation == eCondOp::tOr) {
ok = ok || condTrue;
ok = ok || condTrue;
}
}
return ok;
@ -470,8 +470,8 @@ void cCondition::SetTokenIndex(cCond *c, const char *token) {
/******************************************************************
* cSummand
******************************************************************/
cSummand::cSummand(const char *summand) {
this->summand = strdup(summand);
cSummand::cSummand(const char *summand) {
this->summand = strdup(summand);
}
cSummand::cSummand(const cSummand &other) {
@ -485,7 +485,7 @@ cSummand::cSummand(const cSummand &other) {
}
cSummand::~cSummand(void) {
free(summand);
free(summand);
}
void cSummand::Debug(void) {
@ -564,7 +564,7 @@ bool cNumericExpr::CacheStatic(void) {
value = atoi(expr);
return true;
}
//check if expression is a percent expression
if (PercentValue(expr)) {
return true;
@ -676,7 +676,7 @@ int cNumericExpr::Calculate(void) {
if (f->multiplication)
factor *= fac;
else if (fac)
factor /= fac;
factor /= fac;
}
if (s->positive)
result += factor;
@ -722,7 +722,7 @@ bool cNumericExpr::IsNumericExpression(const char *e) {
else
return false;
}
return true;
return true;
}
bool cNumericExpr::PercentValue(const char *e) {
@ -762,7 +762,7 @@ char *cNumericExpr::ReplacePercentValue(char *e) {
if (horizontal) {
sprintf(replacement, "%.5f*{areawidth}", percentVal);
} else {
sprintf(replacement, "%.5f*{areaheight}", percentVal);
sprintf(replacement, "%.5f*{areaheight}", percentVal);
}
int len = strlen(replacement) + 1;
@ -888,7 +888,7 @@ void cNumericExpr::CreateFactors(void) {
f->constValue = EvaluateExpressionDouble(sum);
s->factors.Add(f);
free(sum);
continue;
continue;
}
bool multiplication = true;
char *fac = strtok(sum, delimiterFac);
@ -906,7 +906,7 @@ void cNumericExpr::CreateFactors(void) {
} else if (SetReferenceFactor(f, fac)) {
f->multiplication = multiplication;
s->factors.Add(f);
} else if (SetGeometryFactor(f, fac)) {
} else if (SetGeometryFactor(f, fac)) {
f->multiplication = multiplication;
s->factors.Add(f);
} else {
@ -961,7 +961,7 @@ bool cNumericExpr::SetReferenceFactor(cFactor *f, char *tokenName) {
f->type = eFactorType::widthref;
} else if (startswith(tokenName, "{height(") && endswith(tokenName, ")}")) {
start = 8;
f->type = eFactorType::heightref;
f->type = eFactorType::heightref;
}
if (start == 0)
@ -986,7 +986,7 @@ bool cNumericExpr::SetGeometryFactor(cFactor *f, char *tokenName) {
f->type = eFactorType::columnwidth;
ok = true;
} else if (!strcmp(tokenName, "{rowheight}")) {
f->type = eFactorType::rowheight;
f->type = eFactorType::rowheight;
ok = true;
}
return ok;
@ -1007,7 +1007,7 @@ void cNumericExpr::ConsolidateSummand(void) {
s = constSummand;
}
}
}
}
}
void cNumericExpr::ConsolidateFactors(void) {
@ -1020,7 +1020,7 @@ void cNumericExpr::ConsolidateFactors(void) {
} else {
if (f->multiplication)
constFactor->constValue *= f->constValue;
else
else
constFactor->constValue /= f->constValue;
s->factors.Del(f);
f = constFactor;
@ -1042,7 +1042,7 @@ cColor::cColor(const char *expression) {
cColor::cColor(const cColor &other) {
globals = other.globals;
expr = strdup(other.expr);
value = other.value;
value = other.value;
}
cColor::~cColor(void) {
@ -1442,7 +1442,7 @@ bool cTextExpr::ParsePrintfToken(cTextToken *t) {
strncpy(buffer, startExpr+1, expLen);
buffer[expLen] = '\0';
t->printfExpr = strdup(buffer);
//find variables
char *startVar = strchr(t->constValue, ',');
if (!startVar)
@ -1525,7 +1525,7 @@ void cTextExpr::DeterminatePrintfToken(cTextToken *t) {
}
} else if (t->printfVarIndices[i].type == ePrintfVarType::looptoken && loopInfo && loopInfo->row >= 0) {
if (tokenContainer->LoopToken(loopInfo->index, loopInfo->row, t->printfVarIndices[i].index)) {
results.push_back(atoi(tokenContainer->LoopToken(loopInfo->index, loopInfo->row, t->printfVarIndices[i].index)));
results.push_back(atoi(tokenContainer->LoopToken(loopInfo->index, loopInfo->row, t->printfVarIndices[i].index)));
}
}
}
@ -1611,8 +1611,8 @@ char *cTextExpr::CopyTextPart(char *start, char *stop, bool incLastChar) {
} else {
//search end of text
char *p = start;
while (*p)
len++; p++;
while (*p) {
len++; p++; }
len++;
}
val = (char*)malloc(len+1);

View File

@ -69,7 +69,7 @@ void cSDDisplayMenu::SetMessage(eMessageType Type, const char *Text) {
view->SetMessage(Type, Text);
}
bool cSDDisplayMenu::SetItemEvent(const cEvent *Event, int Index, bool Current, bool Selectable, const cChannel *Channel, bool WithDate, eTimerMatch TimerMatch) {
bool cSDDisplayMenu::SetItemEvent(const cEvent *Event, int Index, bool Current, bool Selectable, const cChannel *Channel, bool WithDate, eTimerMatch TimerMatch, bool TimerActive) {
if (!view)
return false;
if (Index == 0) {

View File

@ -23,7 +23,8 @@ public:
virtual void SetTitle(const char *Title);
virtual void SetButtons(const char *Red, const char *Green = NULL, const char *Yellow = NULL, const char *Blue = NULL);
virtual void SetMessage(eMessageType Type, const char *Text);
virtual bool SetItemEvent(const cEvent *Event, int Index, bool Current, bool Selectable, const cChannel *Channel, bool WithDate, eTimerMatch TimerMatch);
virtual bool SetItemEvent(const cEvent *Event, int Index, bool Current, bool Selectable, const cChannel *Channel, bool WithDate, eTimerMatch TimerMatch, bool TimerActive);
virtual bool SetItemEvent(const cEvent *Event, int Index, bool Current, bool Selectable, const cChannel *Channel, bool WithDate, eTimerMatch TimerMatch) { return SetItemEvent(Event, Index, Current, Selectable, Channel, WithDate, TimerMatch, true); }
virtual bool SetItemTimer(const cTimer *Timer, int Index, bool Current, bool Selectable);
virtual bool SetItemChannel(const cChannel *Channel, int Index, bool Current, bool Selectable, bool WithProvider);
virtual bool SetItemRecording(const cRecording *Recording, int Index, bool Current, bool Selectable, int Level, int Total, int New);

View File

@ -20,7 +20,7 @@
#endif
static const char *VERSION = "1.2.3";
static const char *VERSION = "1.2.4";
static const char *DESCRIPTION = trNOOP("Skin Designer");
class cPluginSkinDesigner : public cPlugin, public skindesignerapi::SkindesignerAPI {
@ -114,7 +114,7 @@ bool cPluginSkinDesigner::Start(void) {
cImageImporterSVG::InitLibRSVG();
cGlobalTimers::StartRefreshThread();
bool trueColorAvailable = true;
if (!cOsdProvider::SupportsTrueColor()) {
esyslog("skindesigner: No TrueColor OSD found! Using default Skin LCARS!");
trueColorAvailable = false;
@ -221,7 +221,7 @@ const char **cPluginSkinDesigner::SVDRPHelpPages(void) {
}
cString cPluginSkinDesigner::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode) {
cSkinDesigner *activeSkin = NULL;
cSkinDesigner *availableSkin = NULL;
config.InitSkinRefsIterator();