summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--epgsearch.c4
-rw-r--r--patches/README.patches7
-rw-r--r--patches/timercmd-0.1_1.6.0.diff160
-rw-r--r--patches/timercmd-0.1_1.7.17.diff109
-rw-r--r--patches/vdr-1.5.17-progressbar-support-0.0.1.diff106
-rw-r--r--patches/vdr.epgsearch-exttimeredit-0.0.2.diff110
-rw-r--r--patches/vdr.epgsearch-exttimeredit-2.3.1.diff114
-rw-r--r--patches/vdr.epgsearch-exttimeredit-2.3.3.diff125
-rw-r--r--patches/vdr.epgsearch-exttimeredit-2.3.5.diff113
9 files changed, 3 insertions, 845 deletions
diff --git a/epgsearch.c b/epgsearch.c
index 5ca425d..7f368c3 100644
--- a/epgsearch.c
+++ b/epgsearch.c
@@ -69,8 +69,8 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
#include "confdloader.h"
#include "pending_notifications.h"
-#if defined(APIVERSNUM) && APIVERSNUM < 20304
-#error "VDR-2.3.4 API version or greater is required!"
+#if defined(APIVERSNUM) && APIVERSNUM < 20306
+#error "VDR-2.3.6 API version or greater is required!"
#endif
static const char VERSION[] = "2.3.1";
diff --git a/patches/README.patches b/patches/README.patches
index 08a1950..d9bc223 100644
--- a/patches/README.patches
+++ b/patches/README.patches
@@ -6,10 +6,5 @@ Description of patches
patches vdr to allow plugins to replace main menu items like 'Schedule', 'Recordings',...
Use this one, if epgsearch shall replace the schedules menu. This patch is also used
by other plugins like the extrec-plugin.
-- timercmd-0.1_1.x.diff:
- this patch adds a timer commands menu to VDR's timer menu, that can be called with '0'.
- It can be used e.g. to search for repeats of a timer.
-- vdr-1.5.17-progressbar-support-0.0.1.diff:
- this patch adds progressbar support to VDR's skins 'classic' and 'st:tng'
-- vdr.epgsearch-exttimeredit.diff:
+- vdr.epgsearch-exttimeredit-2.3.6.diff
this patch against VDR integrates epgsearch's timer edit menu to VDR's timer menu.
diff --git a/patches/timercmd-0.1_1.6.0.diff b/patches/timercmd-0.1_1.6.0.diff
deleted file mode 100644
index bbab3f5..0000000
--- a/patches/timercmd-0.1_1.6.0.diff
+++ /dev/null
@@ -1,160 +0,0 @@
-diff -Nru vdr-1.6.0/config.c vdr-1.6.0-patched/config.c
---- vdr-1.6.0/config.c 2008-02-17 14:39:00.000000000 +0100
-+++ vdr-1.6.0-patched/config.c 2008-04-29 22:55:41.000000000 +0200
-@@ -125,6 +125,7 @@
-
- cCommands Commands;
- cCommands RecordingCommands;
-+cCommands TimerCommands;
-
- // --- cSVDRPhosts -----------------------------------------------------------
-
-diff -Nru vdr-1.6.0/config.h vdr-1.6.0-patched/config.h
---- vdr-1.6.0/config.h 2008-03-23 11:26:10.000000000 +0100
-+++ vdr-1.6.0-patched/config.h 2008-04-29 22:55:41.000000000 +0200
-@@ -168,6 +168,7 @@
-
- extern cCommands Commands;
- extern cCommands RecordingCommands;
-+extern cCommands TimerCommands;
- extern cSVDRPhosts SVDRPhosts;
-
- class cSetupLine : public cListObject {
-diff -Nru vdr-1.6.0/menu.c vdr-1.6.0-patched/menu.c
---- vdr-1.6.0/menu.c 2008-03-16 12:15:28.000000000 +0100
-+++ vdr-1.6.0-patched/menu.c 2008-04-29 22:55:41.000000000 +0200
-@@ -772,8 +772,20 @@
- return state;
- }
-
--// --- cMenuTimerItem --------------------------------------------------------
-+// --- cMenuCommands ---------------------------------------------------------
-+// declaration shifted so it can be used in cMenuTimers
-+class cMenuCommands : public cOsdMenu {
-+private:
-+ cCommands *commands;
-+ char *parameters;
-+ eOSState Execute(void);
-+public:
-+ cMenuCommands(const char *Title, cCommands *Commands, const char *Parameters = NULL);
-+ virtual ~cMenuCommands();
-+ virtual eOSState ProcessKey(eKeys Key);
-+ };
-
-+// --- cMenuTimerItem --------------------------------------------------------
- class cMenuTimerItem : public cOsdItem {
- private:
- cTimer *timer;
-@@ -836,6 +848,7 @@
- eOSState OnOff(void);
- eOSState Info(void);
- cTimer *CurrentTimer(void);
-+ eOSState Commands(eKeys Key = kNone);
- void SetHelpKeys(void);
- public:
- cMenuTimers(void);
-@@ -952,6 +965,53 @@
- return osContinue;
- }
-
-+#define CHECK_2PTR_NULL(x_,y_) ((x_)? ((y_)? y_:""):"")
-+
-+eOSState cMenuTimers::Commands(eKeys Key)
-+{
-+ if (HasSubMenu() || Count() == 0)
-+ return osContinue;
-+ cTimer *ti = CurrentTimer();
-+ if (ti) {
-+ char *parameter = NULL;
-+ const cEvent *pEvent = ti->Event();
-+ int iRecNumber=0;
-+
-+ if(!pEvent) {
-+ Timers.SetEvents();
-+ pEvent = ti->Event();
-+ }
-+ if(pEvent) {
-+// create a dummy recording to get the real filename
-+ cRecording *rc_dummy = new cRecording(ti, pEvent);
-+ Recordings.Load();
-+ cRecording *rc = Recordings.GetByName(rc_dummy->FileName());
-+
-+ delete rc_dummy;
-+ if(rc)
-+ iRecNumber=rc->Index() + 1;
-+ }
-+//Parameter format TimerNumber 'ChannelId' Start Stop 'Titel' 'Subtitel' 'file' RecNumer
-+// 1 2 3 4 5 6 7 8
-+ asprintf(&parameter, "%d '%s' %d %d '%s' '%s' '%s' %d", ti->Index(),
-+ *ti->Channel()->GetChannelID().ToString(),
-+ (int)ti->StartTime(),
-+ (int)ti->StopTime(),
-+ CHECK_2PTR_NULL(pEvent, pEvent->Title()),
-+ CHECK_2PTR_NULL(pEvent, pEvent->ShortText()),
-+ ti->File(),
-+ iRecNumber);
-+ isyslog("timercmd: %s", parameter);
-+ cMenuCommands *menu;
-+ eOSState state = AddSubMenu(menu = new cMenuCommands(tr("Timer commands"), &TimerCommands, parameter));
-+ free(parameter);
-+ if (Key != kNone)
-+ state = menu->ProcessKey(Key);
-+ return state;
-+ }
-+ return osContinue;
-+}
-+
- eOSState cMenuTimers::ProcessKey(eKeys Key)
- {
- int TimerNumber = HasSubMenu() ? Count() : -1;
-@@ -966,6 +1026,8 @@
- case kInfo:
- case kBlue: return Info();
- break;
-+ case k1...k9: return Commands(Key);
-+ case k0: return (TimerCommands.Count()? Commands():osContinue);
- default: break;
- }
- }
-@@ -1548,17 +1610,6 @@
-
- // --- cMenuCommands ---------------------------------------------------------
-
--class cMenuCommands : public cOsdMenu {
--private:
-- cCommands *commands;
-- char *parameters;
-- eOSState Execute(void);
--public:
-- cMenuCommands(const char *Title, cCommands *Commands, const char *Parameters = NULL);
-- virtual ~cMenuCommands();
-- virtual eOSState ProcessKey(eKeys Key);
-- };
--
- cMenuCommands::cMenuCommands(const char *Title, cCommands *Commands, const char *Parameters)
- :cOsdMenu(Title)
- {
-diff -Nru vdr-1.6.0/po/de_DE.po vdr-1.6.0-patched/po/de_DE.po
---- vdr-1.6.0/po/de_DE.po 2008-03-23 11:31:29.000000000 +0100
-+++ vdr-1.6.0-patched/po/de_DE.po 2008-04-29 22:55:41.000000000 +0200
-@@ -381,6 +381,9 @@
- msgid "Timer still recording - really delete?"
- msgstr "Timer zeichnet auf - trotzdem löschen?"
-
-+msgid "Timer commands"
-+msgstr "Befehle für Timer"
-+
- msgid "Event"
- msgstr "Sendung"
-
-diff -Nru vdr-1.6.0/vdr.c vdr-1.6.0-patched/vdr.c
---- vdr-1.6.0/vdr.c 2008-03-14 14:22:39.000000000 +0100
-+++ vdr-1.6.0-patched/vdr.c 2008-04-29 22:55:41.000000000 +0200
-@@ -569,6 +569,7 @@
- Timers.Load(AddDirectory(ConfigDirectory, "timers.conf")) &&
- Commands.Load(AddDirectory(ConfigDirectory, "commands.conf"), true) &&
- RecordingCommands.Load(AddDirectory(ConfigDirectory, "reccmds.conf"), true) &&
-+ TimerCommands.Load(AddDirectory(ConfigDirectory, "timercmds.conf"), true) &&
- SVDRPhosts.Load(AddDirectory(ConfigDirectory, "svdrphosts.conf"), true) &&
- Keys.Load(AddDirectory(ConfigDirectory, "remote.conf")) &&
- KeyMacros.Load(AddDirectory(ConfigDirectory, "keymacros.conf"), true)
diff --git a/patches/timercmd-0.1_1.7.17.diff b/patches/timercmd-0.1_1.7.17.diff
deleted file mode 100644
index 609cefb..0000000
--- a/patches/timercmd-0.1_1.7.17.diff
+++ /dev/null
@@ -1,109 +0,0 @@
-diff -Nru vdr-1.7.17/config.c vdr-1.7.17-patched/config.c
---- vdr-1.7.17/config.c 2010-06-06 12:06:43.000000000 +0200
-+++ vdr-1.7.17-patched/config.c 2011-03-16 18:48:43.000000000 +0100
-@@ -211,6 +211,7 @@
- cNestedItemList Folders;
- cNestedItemList Commands;
- cNestedItemList RecordingCommands;
-+cNestedItemList TimerCommands;
-
- // --- cSVDRPhosts -----------------------------------------------------------
-
-diff -Nru vdr-1.7.17/config.h vdr-1.7.17-patched/config.h
---- vdr-1.7.17/config.h 2010-10-24 13:22:35.000000000 +0200
-+++ vdr-1.7.17-patched/config.h 2011-03-16 18:49:17.000000000 +0100
-@@ -181,6 +181,7 @@
- extern cNestedItemList Folders;
- extern cNestedItemList Commands;
- extern cNestedItemList RecordingCommands;
-+extern cNestedItemList TimerCommands;
- extern cSVDRPhosts SVDRPhosts;
-
- class cSetupLine : public cListObject {
-diff -Nru vdr-1.7.17/menu.c vdr-1.7.17-patched/menu.c
---- vdr-1.7.17/menu.c 2011-02-27 13:37:48.000000000 +0100
-+++ vdr-1.7.17-patched/menu.c 2011-03-16 19:07:53.000000000 +0100
-@@ -1083,6 +1083,7 @@
- eOSState Info(void);
- cTimer *CurrentTimer(void);
- void SetHelpKeys(void);
-+ eOSState Commands(eKeys Key = kNone);
- public:
- cMenuTimers(void);
- virtual ~cMenuTimers();
-@@ -1198,6 +1199,53 @@
- return osContinue;
- }
-
-+#define CHECK_2PTR_NULL(x_,y_) ((x_)? ((y_)? y_:""):"")
-+
-+eOSState cMenuTimers::Commands(eKeys Key)
-+{
-+ if (HasSubMenu() || Count() == 0)
-+ return osContinue;
-+ cTimer *ti = CurrentTimer();
-+ if (ti) {
-+ char *parameter = NULL;
-+ const cEvent *pEvent = ti->Event();
-+ int iRecNumber=0;
-+
-+ if(!pEvent) {
-+ Timers.SetEvents();
-+ pEvent = ti->Event();
-+ }
-+ if(pEvent) {
-+// create a dummy recording to get the real filename
-+ cRecording *rc_dummy = new cRecording(ti, pEvent);
-+ Recordings.Load();
-+ cRecording *rc = Recordings.GetByName(rc_dummy->FileName());
-+
-+ delete rc_dummy;
-+ if(rc)
-+ iRecNumber=rc->Index() + 1;
-+ }
-+//Parameter format TimerNumber 'ChannelId' Start Stop 'Titel' 'Subtitel' 'file' RecNumer
-+// 1 2 3 4 5 6 7 8
-+ asprintf(&parameter, "%d '%s' %d %d '%s' '%s' '%s' %d", ti->Index(),
-+ *ti->Channel()->GetChannelID().ToString(),
-+ (int)ti->StartTime(),
-+ (int)ti->StopTime(),
-+ CHECK_2PTR_NULL(pEvent, pEvent->Title()),
-+ CHECK_2PTR_NULL(pEvent, pEvent->ShortText()),
-+ ti->File(),
-+ iRecNumber);
-+ isyslog("timercmd: %s", parameter);
-+ cMenuCommands *menu;
-+ eOSState state = AddSubMenu(menu = new cMenuCommands(tr("Timer commands"), &TimerCommands, parameter));
-+ free(parameter);
-+ if (Key != kNone)
-+ state = menu->ProcessKey(Key);
-+ return state;
-+ }
-+ return osContinue;
-+}
-+
- eOSState cMenuTimers::ProcessKey(eKeys Key)
- {
- int TimerNumber = HasSubMenu() ? Count() : -1;
-@@ -1212,6 +1260,9 @@
- case kInfo:
- case kBlue: return Info();
- break;
-+ case k1...k9: return Commands(Key);
-+ case k0: return (TimerCommands.Count()? Commands():osContinue);
-+
- default: break;
- }
- }
-
-diff -Nru vdr-1.7.17/vdr.c vdr-1.7.17-patched/vdr.c
---- vdr-1.7.17/vdr.c 2010-12-12 14:42:00.000000000 +0100
-+++ vdr-1.7.17-patched/vdr.c 2011-03-16 18:56:26.000000000 +0100
-@@ -585,6 +585,7 @@
- Timers.Load(AddDirectory(ConfigDirectory, "timers.conf"));
- Commands.Load(AddDirectory(ConfigDirectory, "commands.conf"));
- RecordingCommands.Load(AddDirectory(ConfigDirectory, "reccmds.conf"));
-+ TimerCommands.Load(AddDirectory(ConfigDirectory, "timercmds.conf"));
- SVDRPhosts.Load(AddDirectory(ConfigDirectory, "svdrphosts.conf"), true);
- Keys.Load(AddDirectory(ConfigDirectory, "remote.conf"));
- KeyMacros.Load(AddDirectory(ConfigDirectory, "keymacros.conf"), true);
diff --git a/patches/vdr-1.5.17-progressbar-support-0.0.1.diff b/patches/vdr-1.5.17-progressbar-support-0.0.1.diff
deleted file mode 100644
index 98b887d..0000000
--- a/patches/vdr-1.5.17-progressbar-support-0.0.1.diff
+++ /dev/null
@@ -1,106 +0,0 @@
-diff -Nru vdr-1.5.17-orig/skinclassic.c vdr-1.5.17-progressbar/skinclassic.c
---- vdr-1.5.17-orig/skinclassic.c
-+++ vdr-1.5.17-progressbar/skinclassic.c
-@@ -314,8 +314,47 @@
- for (int i = 0; i < MaxTabs; i++) {
- const char *s = GetTabbedText(Text, i);
- if (s) {
-- int xt = x0 + Tab(i);
-- osd->DrawText(xt, y, s, ColorFg, ColorBg, font, x2 - xt);
-+ bool isprogressbar = false;
-+ int now = 0, total = 0;
-+ // check if progress bar: "[||||||| ]"
-+ if ((strlen(s) > 5 && s[0] == '[' && s[strlen(s) - 1] == ']')) {
-+ const char *p = s + 1;
-+ // update status
-+ isprogressbar = true;
-+ for (; *p != ']'; ++p) {
-+ // check if progressbar characters
-+ if (*p == ' ' || *p == '|') {
-+ // update counters
-+ ++total;
-+ if (*p == '|')
-+ ++now;
-+ }
-+ else {
-+ // wrong character detected; not a progressbar
-+ isprogressbar = false;
-+ break;
-+ }
-+ }
-+ }
-+ int xt = x0 + Tab(i);
-+ if (isprogressbar) {
-+ // define x coordinates of progressbar
-+ int px0 = xt;
-+ int px1 = (Tab(i + 1)?Tab(i+1):x1) - 5;
-+ int px = px0 + max((int)((float) now * (float) (px1 - px0) / (float) total), 1);
-+ // define y coordinates of progressbar
-+ int py0 = y + 4;
-+ int py1 = y + lineHeight - 4;
-+ // draw background
-+ osd->DrawRectangle(px0, y, (Tab(i + 1)?Tab(i+1):x1) - 1, y + lineHeight - 1, ColorBg);
-+ // draw progressbar
-+ osd->DrawRectangle(px0, py0, px, py1, ColorFg);
-+ osd->DrawRectangle(px + 1, py0, px1, py0 + 1, ColorFg);
-+ osd->DrawRectangle(px + 1, py1 - 1, px1, py1, ColorFg);
-+ osd->DrawRectangle(px1 - 1, py0, px1, py1, ColorFg);
-+ }
-+ else
-+ osd->DrawText(xt, y, s, ColorFg, ColorBg, font, x2 - xt);
- }
- if (!Tab(i + 1))
- break;
-diff -Nru vdr-1.5.17-orig/skinsttng.c vdr-1.5.17-progressbar/skinsttng.c
---- vdr-1.5.17-orig/skinsttng.c
-+++ vdr-1.5.17-progressbar/skinsttng.c
-@@ -558,8 +558,47 @@
- for (int i = 0; i < MaxTabs; i++) {
- const char *s = GetTabbedText(Text, i);
- if (s) {
-- int xt = x3 + 5 + Tab(i);
-- osd->DrawText(xt, y, s, ColorFg, ColorBg, font, x4 - xt);
-+ bool isprogressbar = false;
-+ int now = 0, total = 0;
-+ // check if progress bar: "[||||||| ]"
-+ if ((strlen(s) > 5 && s[0] == '[' && s[strlen(s) - 1] == ']')) {
-+ const char *p = s + 1;
-+ // update status
-+ isprogressbar = true;
-+ for (; *p != ']'; ++p) {
-+ // check if progressbar characters
-+ if (*p == ' ' || *p == '|') {
-+ // update counters
-+ ++total;
-+ if (*p == '|')
-+ ++now;
-+ }
-+ else {
-+ // wrong character detected; not a progressbar
-+ isprogressbar = false;
-+ break;
-+ }
-+ }
-+ }
-+ int xt = x3 + 5 + Tab(i);
-+ if (isprogressbar) {
-+ // define x coordinates of progressbar
-+ int px0 = xt;
-+ int px1 = x3 + (Tab(i + 1)?Tab(i + 1):x4-x3-5) - 1;
-+ int px = px0 + max((int)((float) now * (float) (px1 - px0) / (float) total), 1);
-+ // define y coordinates of progressbar
-+ int py0 = y + 4;
-+ int py1 = y + lineHeight - 4;
-+ // draw background
-+ osd->DrawRectangle(px0, y, (Tab(i + 1)?Tab(i + 1):x4-x3-5) - 1, y + lineHeight - 1, ColorBg);
-+ // draw progressbar
-+ osd->DrawRectangle(px0, py0, px, py1, ColorFg);
-+ osd->DrawRectangle(px + 1, py0, px1, py0 + 1, ColorFg);
-+ osd->DrawRectangle(px + 1, py1 - 1, px1, py1, ColorFg);
-+ osd->DrawRectangle(px1 - 1, py0, px1, py1, ColorFg);
-+ }
-+ else
-+ osd->DrawText(xt, y, s, ColorFg, ColorBg, font, x4 - xt);
- }
- if (!Tab(i + 1))
- break;
diff --git a/patches/vdr.epgsearch-exttimeredit-0.0.2.diff b/patches/vdr.epgsearch-exttimeredit-0.0.2.diff
deleted file mode 100644
index c92ff8c..0000000
--- a/patches/vdr.epgsearch-exttimeredit-0.0.2.diff
+++ /dev/null
@@ -1,110 +0,0 @@
---- menu.c.orig 2009-04-11 14:47:08.000000000 +0200
-+++ menu.c 2009-04-17 13:53:05.000000000 +0200
-@@ -853,6 +853,7 @@ eOSState cMenuEditTimer::ProcessKey(eKey
- class cMenuTimerItem : public cOsdItem {
- private:
- cTimer *timer;
-+ void DoSet(void);
- public:
- cMenuTimerItem(cTimer *Timer);
- virtual int Compare(const cListObject &ListObject) const;
-@@ -863,7 +864,7 @@ public:
- cMenuTimerItem::cMenuTimerItem(cTimer *Timer)
- {
- timer = Timer;
-- Set();
-+ DoSet();
- }
-
- int cMenuTimerItem::Compare(const cListObject &ListObject) const
-@@ -873,6 +874,18 @@ int cMenuTimerItem::Compare(const cListO
-
- void cMenuTimerItem::Set(void)
- {
-+ // check for deleted timer
-+ for (cTimer *t = Timers.First(); ; t = Timers.Next(t)) {
-+ if (t == timer)
-+ break; // timer still there
-+ if (t == NULL)
-+ return; // no matching timer found
-+ }
-+ DoSet();
-+}
-+
-+void cMenuTimerItem::DoSet(void)
-+{
- cString day, name("");
- if (timer->WeekDays())
- day = timer->PrintDay(0, timer->WeekDays(), false);
-@@ -906,8 +919,7 @@ void cMenuTimerItem::Set(void)
- class cMenuTimers : public cOsdMenu {
- private:
- int helpKeys;
-- eOSState Edit(void);
-- eOSState New(void);
-+ eOSState Edit(bool New = false);
- eOSState Delete(void);
- eOSState OnOff(void);
- eOSState Info(void);
-@@ -980,19 +992,30 @@ eOSState cMenuTimers::OnOff(void)
- return osContinue;
- }
-
--eOSState cMenuTimers::Edit(void)
-+eOSState cMenuTimers::Edit(bool New)
- {
-- if (HasSubMenu() || Count() == 0)
-+ if (HasSubMenu() || (Count() == 0 && !New))
- return osContinue;
-- isyslog("editing timer %s", *CurrentTimer()->ToDescr());
-- return AddSubMenu(new cMenuEditTimer(CurrentTimer()));
--}
-+ if (!New)
-+ isyslog("editing timer %s", *CurrentTimer()->ToDescr());
-
--eOSState cMenuTimers::New(void)
--{
-- if (HasSubMenu())
-- return osContinue;
-- return AddSubMenu(new cMenuEditTimer(new cTimer, true));
-+ // Data structure for service "Epgsearch-exttimeredit-v1.0"
-+ struct Epgsearch_exttimeredit_v1_0
-+ {
-+ // in
-+ cTimer* timer; // pointer to the timer to edit
-+ bool bNew; // flag that indicates, if this is a new timer or an existing one
-+ const cEvent* event; // pointer to the event corresponding to this timer (may be NULL)
-+ // out
-+ cOsdMenu* pTimerMenu; // pointer to the menu of results
-+ } exttimeredit;
-+ exttimeredit.timer = New ? (new cTimer) : CurrentTimer();
-+ exttimeredit.bNew = New;
-+ exttimeredit.event = exttimeredit.timer->Event();
-+ if (cPluginManager::CallFirstService("Epgsearch-exttimeredit-v1.0", &exttimeredit))
-+ return AddSubMenu(exttimeredit.pTimerMenu);
-+
-+ return AddSubMenu(new cMenuEditTimer(exttimeredit.timer, New));
- }
-
- eOSState cMenuTimers::Delete(void)
-@@ -1038,7 +1061,7 @@ eOSState cMenuTimers::ProcessKey(eKeys K
- switch (Key) {
- case kOk: return Edit();
- case kRed: state = OnOff(); break; // must go through SetHelpKeys()!
-- case kGreen: return New();
-+ case kGreen: return Edit(true);
- case kYellow: state = Delete(); break;
- case kInfo:
- case kBlue: return Info();
-@@ -1051,6 +1074,11 @@ eOSState cMenuTimers::ProcessKey(eKeys K
- Add(new cMenuTimerItem(Timers.Get(TimerNumber)), true);
- Display();
- }
-+ if (!HasSubMenu() && Timers.Count()<Count()) {
-+ // timer was deleted
-+ cOsdMenu::Del(Current());
-+ Display();
-+ }
- if (Key != kNone)
- SetHelpKeys();
- return state;
diff --git a/patches/vdr.epgsearch-exttimeredit-2.3.1.diff b/patches/vdr.epgsearch-exttimeredit-2.3.1.diff
deleted file mode 100644
index 4de62a8..0000000
--- a/patches/vdr.epgsearch-exttimeredit-2.3.1.diff
+++ /dev/null
@@ -1,114 +0,0 @@
-Index: current/menu.c
-===================================================================
---- menu.c.orig 2015-11-02 11:54:55.310709767 +0100
-+++ menu.c 2015-11-02 11:54:55.310709767 +0100
-@@ -1190,6 +1190,7 @@
- class cMenuTimerItem : public cOsdItem {
- private:
- const cTimer *timer;
-+ void DoSet(void);
- public:
- cMenuTimerItem(const cTimer *Timer);
- virtual int Compare(const cListObject &ListObject) const;
-@@ -1201,7 +1202,7 @@
- cMenuTimerItem::cMenuTimerItem(const cTimer *Timer)
- {
- timer = Timer;
-- Set();
-+ DoSet();
- }
-
- int cMenuTimerItem::Compare(const cListObject &ListObject) const
-@@ -1211,6 +1212,19 @@
-
- void cMenuTimerItem::Set(void)
- {
-+ // check for deleted timer
-+ LOCK_TIMERS_READ;
-+ for (const cTimer *t = Timers->First(); ; t = Timers->Next(t)) {
-+ if (t == timer)
-+ break; // timer still there
-+ if (t == NULL)
-+ return; // no matching timer found
-+ }
-+ DoSet();
-+}
-+
-+void cMenuTimerItem::DoSet(void)
-+{
- cString day, name("");
- if (timer->WeekDays())
- day = timer->PrintDay(0, timer->WeekDays(), false);
-@@ -1258,8 +1273,7 @@
- cStateKey timersStateKey;
- int helpKeys;
- void Set(void);
-- eOSState Edit(void);
-- eOSState New(void);
-+ eOSState Edit(bool New = false);
- eOSState Delete(void);
- eOSState OnOff(void);
- eOSState Info(void);
-@@ -1351,20 +1365,29 @@
- return osContinue;
- }
-
--eOSState cMenuTimers::Edit(void)
--{
-- if (HasSubMenu() || Count() == 0)
-- return osContinue;
-- return AddSubMenu(new cMenuEditTimer(GetTimer()));
--}
--
--eOSState cMenuTimers::New(void)
-+eOSState cMenuTimers::Edit(bool New)
- {
-- if (HasSubMenu())
-+ if (HasSubMenu() || Count() == 0 && !New)
- return osContinue;
- cTimer *Timer = new cTimer;
- if (*Setup.SVDRPDefaultHost)
- Timer->SetRemote(Setup.SVDRPDefaultHost);
-+ // Data structure for service "Epgsearch-exttimeredit-v1.0"
-+ struct Epgsearch_exttimeredit_v1_0
-+ {
-+ // in
-+ cTimer* timer; // pointer to the timer to edit
-+ bool bNew; // flag that indicates, if this is a new timer or an existing one
-+ const cEvent* event; // pointer to the event corresponding to this timer (may be NULL)
-+ // out
-+ cOsdMenu* pTimerMenu; // pointer to the menu of results
-+ } exttimeredit;
-+ exttimeredit.timer = New ? (new cTimer) : GetTimer();
-+ exttimeredit.bNew = New;
-+ exttimeredit.event = exttimeredit.timer->Event();
-+ if (cPluginManager::CallFirstService("Epgsearch-exttimeredit-v1.0", &exttimeredit))
-+ return AddSubMenu(exttimeredit.pTimerMenu);
-+
- return AddSubMenu(new cMenuEditTimer(Timer, true));
- }
-
-@@ -1423,7 +1446,7 @@
- switch (Key) {
- case kOk: return Edit();
- case kRed: state = OnOff(); break; // must go through SetHelpKeys()!
-- case kGreen: return New();
-+ case kGreen: return Edit(true);
- case kYellow: state = Delete(); break;
- case kInfo:
- case kBlue: return Info();
-@@ -1437,6 +1460,14 @@
- Add(new cMenuTimerItem(Timer), true);
- Display();
- }
-+ if (!HasSubMenu()) {
-+ LOCK_TIMERS_READ;
-+ if (Timers->Count()<Count()) {
-+ // timer was deleted
-+ cOsdMenu::Del(Current());
-+ Display();
-+ }
-+ }
- if (Key != kNone)
- SetHelpKeys();
- return state;
diff --git a/patches/vdr.epgsearch-exttimeredit-2.3.3.diff b/patches/vdr.epgsearch-exttimeredit-2.3.3.diff
deleted file mode 100644
index 25c3ef7..0000000
--- a/patches/vdr.epgsearch-exttimeredit-2.3.3.diff
+++ /dev/null
@@ -1,125 +0,0 @@
-From 5f30c7cbac03c534df40aa437399f45747d9e7ae Mon Sep 17 00:00:00 2001
-From: Jasmin Jessich <jasmin@anw.at>
-Date: Mon, 3 Apr 2017 21:33:33 +0200
-Subject: [PATCH] Patched with vdr.epgsearch-exttimeredit-2.3.1.diff
-
----
- menu.c | 56 +++++++++++++++++++++++++++++++++++++++++++-------------
- 1 file changed, 43 insertions(+), 13 deletions(-)
-
-diff --git a/menu.c b/menu.c
-index 02aa7a9..561860c 100644
---- a/menu.c
-+++ b/menu.c
-@@ -1151,6 +1151,7 @@ eOSState cMenuEditTimer::ProcessKey(eKeys Key)
- class cMenuTimerItem : public cOsdItem {
- private:
- const cTimer *timer;
-+ void DoSet(void);
- public:
- cMenuTimerItem(const cTimer *Timer);
- virtual int Compare(const cListObject &ListObject) const;
-@@ -1162,7 +1163,7 @@ public:
- cMenuTimerItem::cMenuTimerItem(const cTimer *Timer)
- {
- timer = Timer;
-- Set();
-+ DoSet();
- }
-
- int cMenuTimerItem::Compare(const cListObject &ListObject) const
-@@ -1172,6 +1173,19 @@ int cMenuTimerItem::Compare(const cListObject &ListObject) const
-
- void cMenuTimerItem::Set(void)
- {
-+ // check for deleted timer
-+ LOCK_TIMERS_READ;
-+ for (const cTimer *t = Timers->First(); ; t = Timers->Next(t)) {
-+ if (t == timer)
-+ break; // timer still there
-+ if (t == NULL)
-+ return; // no matching timer found
-+ }
-+ DoSet();
-+}
-+
-+void cMenuTimerItem::DoSet(void)
-+{
- cString day, name("");
- if (timer->WeekDays())
- day = timer->PrintDay(0, timer->WeekDays(), false);
-@@ -1219,8 +1233,7 @@ private:
- cStateKey timersStateKey;
- int helpKeys;
- void Set(void);
-- eOSState Edit(void);
-- eOSState New(void);
-+ eOSState Edit(bool New = false);
- eOSState Delete(void);
- eOSState OnOff(void);
- eOSState Info(void);
-@@ -1312,20 +1325,29 @@ eOSState cMenuTimers::OnOff(void)
- return osContinue;
- }
-
--eOSState cMenuTimers::Edit(void)
-+eOSState cMenuTimers::Edit(bool New)
- {
-- if (HasSubMenu() || Count() == 0)
-- return osContinue;
-- return AddSubMenu(new cMenuEditTimer(GetTimer()));
--}
--
--eOSState cMenuTimers::New(void)
--{
-- if (HasSubMenu())
-+ if (HasSubMenu() || Count() == 0 && !New)
- return osContinue;
- cTimer *Timer = new cTimer;
- if (*Setup.SVDRPDefaultHost)
- Timer->SetRemote(Setup.SVDRPDefaultHost);
-+ // Data structure for service "Epgsearch-exttimeredit-v1.0"
-+ struct Epgsearch_exttimeredit_v1_0
-+ {
-+ // in
-+ cTimer* timer; // pointer to the timer to edit
-+ bool bNew; // flag that indicates, if this is a new timer or an existing one
-+ const cEvent* event; // pointer to the event corresponding to this timer (may be NULL)
-+ // out
-+ cOsdMenu* pTimerMenu; // pointer to the menu of results
-+ } exttimeredit;
-+ exttimeredit.timer = New ? (new cTimer) : GetTimer();
-+ exttimeredit.bNew = New;
-+ exttimeredit.event = exttimeredit.timer->Event();
-+ if (cPluginManager::CallFirstService("Epgsearch-exttimeredit-v1.0", &exttimeredit))
-+ return AddSubMenu(exttimeredit.pTimerMenu);
-+
- return AddSubMenu(new cMenuEditTimer(Timer, true));
- }
-
-@@ -1382,7 +1404,7 @@ eOSState cMenuTimers::ProcessKey(eKeys Key)
- switch (Key) {
- case kOk: return Edit();
- case kRed: state = OnOff(); break; // must go through SetHelpKeys()!
-- case kGreen: return New();
-+ case kGreen: return Edit(true);
- case kYellow: state = Delete(); break;
- case kInfo:
- case kBlue: return Info();
-@@ -1396,6 +1418,14 @@ eOSState cMenuTimers::ProcessKey(eKeys Key)
- Add(new cMenuTimerItem(Timer), true);
- Display();
- }
-+ if (!HasSubMenu()) {
-+ LOCK_TIMERS_READ;
-+ if (Timers->Count()<Count()) {
-+ // timer was deleted
-+ cOsdMenu::Del(Current());
-+ Display();
-+ }
-+ }
- if (Key != kNone)
- SetHelpKeys();
- return state;
---
-2.7.4
diff --git a/patches/vdr.epgsearch-exttimeredit-2.3.5.diff b/patches/vdr.epgsearch-exttimeredit-2.3.5.diff
deleted file mode 100644
index d74eb44..0000000
--- a/patches/vdr.epgsearch-exttimeredit-2.3.5.diff
+++ /dev/null
@@ -1,113 +0,0 @@
-diff -Naur vdr-2.3.5.orig/menu.c vdr-2.3.5/menu.c
---- vdr-2.3.5.orig/menu.c 2017-05-25 12:38:36.926338810 +0200
-+++ vdr-2.3.5/menu.c 2017-05-25 13:01:51.773814628 +0200
-@@ -1155,6 +1155,7 @@
- class cMenuTimerItem : public cOsdItem {
- private:
- const cTimer *timer;
-+ void DoSet(void);
- public:
- cMenuTimerItem(const cTimer *Timer);
- virtual int Compare(const cListObject &ListObject) const;
-@@ -1166,7 +1167,7 @@
- cMenuTimerItem::cMenuTimerItem(const cTimer *Timer)
- {
- timer = Timer;
-- Set();
-+ DoSet();
- }
-
- int cMenuTimerItem::Compare(const cListObject &ListObject) const
-@@ -1176,6 +1177,19 @@
-
- void cMenuTimerItem::Set(void)
- {
-+ // check for deleted timer
-+ LOCK_TIMERS_READ;
-+ for (const cTimer *t = Timers->First(); ; t = Timers->Next(t)) {
-+ if (t == timer)
-+ break; // timer still there
-+ if (t == NULL)
-+ return; // no matching timer found
-+ }
-+ DoSet();
-+}
-+
-+void cMenuTimerItem::DoSet(void)
-+{
- cString day, name("");
- if (timer->WeekDays())
- day = timer->PrintDay(0, timer->WeekDays(), false);
-@@ -1223,8 +1237,7 @@
- cStateKey timersStateKey;
- int helpKeys;
- void Set(void);
-- eOSState Edit(void);
-- eOSState New(void);
-+ eOSState Edit(bool New = false);
- eOSState Delete(void);
- eOSState OnOff(void);
- eOSState Info(void);
-@@ -1316,20 +1329,29 @@
- return osContinue;
- }
-
--eOSState cMenuTimers::Edit(void)
--{
-- if (HasSubMenu() || Count() == 0)
-- return osContinue;
-- return AddSubMenu(new cMenuEditTimer(GetTimer()));
--}
--
--eOSState cMenuTimers::New(void)
-+eOSState cMenuTimers::Edit(bool New)
- {
-- if (HasSubMenu())
-+ if (HasSubMenu() || Count() == 0 && !New)
- return osContinue;
- cTimer *Timer = new cTimer;
- if (Setup.SVDRPPeering && *Setup.SVDRPDefaultHost)
- Timer->SetRemote(Setup.SVDRPDefaultHost);
-+ // Data structure for service "Epgsearch-exttimeredit-v1.0"
-+ struct Epgsearch_exttimeredit_v1_0
-+ {
-+ // in
-+ cTimer* timer; // pointer to the timer to edit
-+ bool bNew; // flag that indicates, if this is a new timer or an existing one
-+ const cEvent* event; // pointer to the event corresponding to this timer (may be NULL)
-+ // out
-+ cOsdMenu* pTimerMenu; // pointer to the menu of results
-+ } exttimeredit;
-+ exttimeredit.timer = New ? (new cTimer) : GetTimer();
-+ exttimeredit.bNew = New;
-+ exttimeredit.event = exttimeredit.timer->Event();
-+ if (cPluginManager::CallFirstService("Epgsearch-exttimeredit-v1.0", &exttimeredit))
-+ return AddSubMenu(exttimeredit.pTimerMenu);
-+
- return AddSubMenu(new cMenuEditTimer(Timer, true));
- }
-
-@@ -1386,7 +1408,7 @@
- switch (Key) {
- case kOk: return Edit();
- case kRed: state = OnOff(); break; // must go through SetHelpKeys()!
-- case kGreen: return New();
-+ case kGreen: return Edit(true);
- case kYellow: state = Delete(); break;
- case kInfo:
- case kBlue: return Info();
-@@ -1400,6 +1422,14 @@
- Add(new cMenuTimerItem(Timer), true);
- Display();
- }
-+ if (!HasSubMenu()) {
-+ LOCK_TIMERS_READ;
-+ if (Timers->Count()<Count()) {
-+ // timer was deleted
-+ cOsdMenu::Del(Current());
-+ Display();
-+ }
-+ }
- if (Key != kNone)
- SetHelpKeys();
- return state;