mirror of
https://projects.vdr-developer.org/git/vdr-plugin-skindesigner.git
synced 2023-10-19 17:58:31 +02:00
compatibility to vdr 2.3.8
This commit is contained in:
parent
c8d54dbe25
commit
beeb82bbda
34
HISTORY
34
HISTORY
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user