summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Wieninger <cwieninger (at) gmx (dot) de>2008-06-09 22:02:49 +0200
committerChristian Wieninger <cwieninger (at) gmx (dot) de>2008-06-09 22:02:49 +0200
commit4c4b69044e35b11bf087098583ba7b04bfc4a513 (patch)
tree2b506ff4155274ea2540d7fbd0431a615ca64d70
parenta9a6f89e3a7f31159817794da79cf44a2f910f99 (diff)
downloadvdr-plugin-epgsearch-4c4b69044e35b11bf087098583ba7b04bfc4a513.tar.gz
vdr-plugin-epgsearch-4c4b69044e35b11bf087098583ba7b04bfc4a513.tar.bz2
additional user variables and bug fix with 0 length events and progressbar
-rw-r--r--HISTORY6
-rw-r--r--HISTORY.DE6
-rw-r--r--doc-src/en/epgsearch.4.txt3
-rw-r--r--menu_whatson.c3
-rw-r--r--uservars.h69
5 files changed, 86 insertions, 1 deletions
diff --git a/HISTORY b/HISTORY
index 16f7d85..9f12a92 100644
--- a/HISTORY
+++ b/HISTORY
@@ -3,10 +3,16 @@ VDR Plugin 'epgsearch' Revision History
2008-xx-xx; Version 0.9.25
new:
+- new internal variables:
+ * %day%, %month% and %year% which return the numeric day, month and year
+ (with century) of an event
+ * %chgrp% returns the VDR channel group name corresponding to an event
- french translation update, thanks to Patrice Staudt
fixes:
- fixed a crash when pressing 'Ok' in an empty timers done menu
+- fixed a crash when using the progressbar and events with 0 duration exist, thanks
+ to egal@vdrportal
2008-04-29: Version 0.9.24
new:
diff --git a/HISTORY.DE b/HISTORY.DE
index 8b040a3..98d0b37 100644
--- a/HISTORY.DE
+++ b/HISTORY.DE
@@ -3,10 +3,16 @@ VDR Plugin 'epgsearch' Revision History
2008-xx-xx; Version 0.9.25
neu:
+- neue interne Variablen:
+ * %day%, %month% und %year% liefern den numerische Tag, das Monat und das
+ Jahr (mit Jahrhundert) einer Sendung
+ * %chgrp% liefert die VDR Kanalgruppe einer Sendung
- Update der französischen Übersetzung, Danke an Patrice Staudt
fixes:
- Absturz beim Drücken von 'Ok' in leerem Menü erledigter Timer behoben
+- Absturz bei Verwendung des Fortschrittsbalkens in Verbindung mit Sendungen
+ der Länge 0 behoben. Danke an egal@vdrportal
2008-04-29: Version 0.9.24
diff --git a/doc-src/en/epgsearch.4.txt b/doc-src/en/epgsearch.4.txt
index 2b759d2..bcd7512 100644
--- a/doc-src/en/epgsearch.4.txt
+++ b/doc-src/en/epgsearch.4.txt
@@ -523,6 +523,9 @@ The following variables exist:
%timeend% - end time in format HH:MM
%date% - start date in format TT.MM.YY
%datesh% - start date in format TT.MM.
+ %year% - year with century
+ %month% - month (1-12)
+ %day% - day (1-31)
%time_w% - weekday name
%time_d% - start day in format TT
%time_lng% - start time in seconds since 1970-01-01 00:00
diff --git a/menu_whatson.c b/menu_whatson.c
index 41d3ae5..973d5cf 100644
--- a/menu_whatson.c
+++ b/menu_whatson.c
@@ -102,7 +102,8 @@ bool cMenuMyScheduleItem::Update(bool Force)
if (mode == showNow)
{
int dur = event->Duration();
- frac = ((now - startTime) * 8 + (dur >> 1)) / dur;
+ if (dur != 0)
+ frac = ((now - startTime) * 8 + (dur >> 1)) / dur;
}
if (mode == showNext)
frac = ( ( 30*60 - min((long int)30*60, startTime - now) ) * 8 + 15*60 ) / (30*60);
diff --git a/uservars.h b/uservars.h
index d47f5ea..5d6bcfe 100644
--- a/uservars.h
+++ b/uservars.h
@@ -303,6 +303,51 @@ public:
}
};
+class cYearVar : public cInternalVar {
+public:
+ cYearVar() : cInternalVar("%year%") {}
+ string Evaluate(const cEvent* e, bool escapeStrings = false)
+ {
+ if (!e) return "";
+ char year[5] = "";
+ struct tm tm_r;
+ const time_t t = e->StartTime();
+ tm *tm = localtime_r(&t, &tm_r);
+ strftime(year, sizeof(year), "%Y", tm);
+ if (escapeStrings) return "'" + EscapeString(year) + "'"; else return year;
+ }
+};
+
+class cMonthVar : public cInternalVar {
+public:
+ cMonthVar() : cInternalVar("%year%") {}
+ string Evaluate(const cEvent* e, bool escapeStrings = false)
+ {
+ if (!e) return "";
+ char month[3] = "";
+ struct tm tm_r;
+ const time_t t = e->StartTime();
+ tm *tm = localtime_r(&t, &tm_r);
+ strftime(month, sizeof(month), "%m", tm);
+ if (escapeStrings) return "'" + EscapeString(month) + "'"; else return month;
+ }
+};
+
+class cDayVar : public cInternalVar {
+public:
+ cDayVar() : cInternalVar("%day%") {}
+ string Evaluate(const cEvent* e, bool escapeStrings = false)
+ {
+ if (!e) return "";
+ char day[3] = "";
+ struct tm tm_r;
+ const time_t t = e->StartTime();
+ tm *tm = localtime_r(&t, &tm_r);
+ strftime(day, sizeof(day), "%d", tm);
+ if (escapeStrings) return "'" + EscapeString(day) + "'"; else return day;
+ }
+};
+
class cChannelNrVar : public cInternalVar {
public:
cChannelNrVar() : cInternalVar("%chnr%") {}
@@ -349,6 +394,22 @@ class cChannelDataVar : public cInternalVar {
}
};
+class cChannelGroupVar : public cInternalVar {
+public:
+ cChannelGroupVar() : cInternalVar("%chgrp%") {}
+ string Evaluate(const cEvent* e, bool escapeStrings = false)
+ {
+ if (!e) return "";
+ ostringstream os;
+ cChannel *channel = Channels.GetByChannelID(e->ChannelID(), true);
+ while(channel && !channel->GroupSep())
+ channel = Channels.Prev(channel);
+ if (!channel || !channel->Name()) return "";
+ string grpName = channel->Name();
+ if (escapeStrings) return "'" + EscapeString(grpName) + "'"; else return grpName;
+ }
+};
+
// independet variables
class cColonVar : public cInternalVar {
public:
@@ -565,10 +626,14 @@ class cUserVars : public cList<cUserVar> {
cLength_Var length_Var;
cDateVar dateVar;
cDateShortVar dateShortVar;
+ cYearVar yearVar;
+ cMonthVar monthVar;
+ cDayVar dayVar;
cChannelNrVar chnrVar;
cChannelShortVar chShortVar;
cChannelLongVar chLongVar;
cChannelDataVar chDataVar;
+ cChannelGroupVar chGroupVar;
cSearchQueryVar searchQueryVar;
cColonVar colonVar;
@@ -611,10 +676,14 @@ class cUserVars : public cList<cUserVar> {
internalVars[length_Var.Name()] = &length_Var;
internalVars[dateVar.Name()] = &dateVar;
internalVars[dateShortVar.Name()] = &dateShortVar;
+ internalVars[yearVar.Name()] = &yearVar;
+ internalVars[monthVar.Name()] = &monthVar;
+ internalVars[dayVar.Name()] = &dayVar;
internalVars[chnrVar.Name()] = &chnrVar;
internalVars[chShortVar.Name()] = &chShortVar;
internalVars[chLongVar.Name()] = &chLongVar;
internalVars[chDataVar.Name()] = &chDataVar;
+ internalVars[chGroupVar.Name()] = &chGroupVar;
internalVars[colonVar.Name()] = &colonVar;
internalVars[dateNowVar.Name()] = &dateNowVar;