diff options
-rw-r--r-- | epgsearch.c | 2 | ||||
-rw-r--r-- | menu_myedittimer.c | 82 | ||||
-rw-r--r-- | patches/vdr.epgsearch-exttimeredit-0.0.2.diff | 110 | ||||
-rw-r--r-- | patches/vdr.epgsearch-exttimeredit.diff | 26 |
4 files changed, 145 insertions, 75 deletions
diff --git a/epgsearch.c b/epgsearch.c index 3afa1c1..90d7e41 100644 --- a/epgsearch.c +++ b/epgsearch.c @@ -245,7 +245,7 @@ bool cPluginEpgsearch::Service(const char *Id, void *Data) return true; } - if (strcmp(Id, "Epgsearch-exttimeredit-v1.0") == 0) { + if (strcmp(Id, "Epgsearch-exttimeredit-v1.0") == 0 && !EPGSearchConfig.useVDRTimerEditMenu) { if (Data == NULL) return true; diff --git a/menu_myedittimer.c b/menu_myedittimer.c index 0d1b8e8..6445ab5 100644 --- a/menu_myedittimer.c +++ b/menu_myedittimer.c @@ -73,6 +73,7 @@ cMenuMyEditTimer::cMenuMyEditTimer(cTimer *Timer, bool New, const cEvent* Event, Set(); SetHelp(addIfConfirmed?NULL:trVDR("Button$Delete"), NULL, NULL, NULL); } + Timers.IncBeingEdited(); } void cMenuMyEditTimer::SplitFile() @@ -192,6 +193,7 @@ cMenuMyEditTimer::~cMenuMyEditTimer() { if (timer && addIfConfirmed) delete timer; // apparently it wasn't confirmed + Timers.DecBeingEdited(); } void cMenuMyEditTimer::HandleSubtitle() @@ -228,7 +230,7 @@ bool cMenuMyEditTimer::IsSingleEvent(void) const eOSState cMenuMyEditTimer::DeleteTimer() { // Check if this timer is active: - if (timer) { + if (timer && !addIfConfirmed) { if (Interface->Confirm(trVDR("Delete timer?"))) { if (timer->Recording()) { if (Interface->Confirm(trVDR("Timer still recording - really delete?"))) { @@ -240,10 +242,8 @@ eOSState cMenuMyEditTimer::DeleteTimer() } LogFile.iSysLog("deleting timer %s", *timer->ToDescr()); Timers.Del(timer); - gl_timerStatusMonitor->SetConflictCheckAdvised(); - cOsdMenu::Del(Current()); + gl_timerStatusMonitor->SetConflictCheckAdvised(); Timers.SetModified(); - Display(); return osBack; } } @@ -373,53 +373,39 @@ eOSState cMenuMyEditTimer::ProcessKey(eKeys Key) if (strlen(tmpFile) == 0) tmpFile = strdup(CHANNELNAME(ch)); - if (timer) - { - cString cmdbuf; - if (addIfConfirmed) - cmdbuf = cString::sprintf("NEWT %d:%d:%s:%04d:%04d:%d:%d:%s%s%s:%s", - flags, - ch->Number(), -#if VDRVERSNUM < 10503 - PRINTDAY(day, weekdays), -#else - PRINTDAY(day, weekdays, true), -#endif - start, - stop, - priority, - lifetime, - strlen(tmpDir)>0?tmpDir:"", - (strlen(tmpDir)>0 && strlen(tmpFile)>0)?"~":"", - tmpFile, - fullaux.c_str()); - else - cmdbuf = cString::sprintf("MODT %d %d:%d:%s:%04d:%04d:%d:%d:%s%s%s:%s", - timer->Index()+1, - flags, - ch->Number(), + if (timer) + { + cString cmdbuf; + cmdbuf = cString::sprintf("%d:%d:%s:%04d:%04d:%d:%d:%s%s%s:%s", + flags, + ch->Number(), #if VDRVERSNUM < 10503 - PRINTDAY(day, weekdays), + PRINTDAY(day, weekdays), #else - PRINTDAY(day, weekdays, true), + PRINTDAY(day, weekdays, true), #endif - start, - stop, - priority, - lifetime, - strlen(tmpDir)>0?tmpDir:"", - (strlen(tmpDir)>0 && strlen(tmpFile)>0)?"~":"", - tmpFile, - fullaux.c_str()); - - cTimerThread timerThread; - timerThread.Init(cmdbuf); - - free(tmpFile); - free(tmpDir); - - addIfConfirmed = false; - } + start, + stop, + priority, + lifetime, + strlen(tmpDir)>0?tmpDir:"", + (strlen(tmpDir)>0 && strlen(tmpFile)>0)?"~":"", + tmpFile, + fullaux.c_str()); + + timer->Parse(cmdbuf); + + free(tmpFile); + free(tmpDir); + + if (addIfConfirmed) + Timers.Add(timer); + timer->SetEventFromSchedule(); + timer->Matches(); + gl_timerStatusMonitor->SetConflictCheckAdvised(); + Timers.SetModified(); + addIfConfirmed = false; + } } return osBack; case kRed: diff --git a/patches/vdr.epgsearch-exttimeredit-0.0.2.diff b/patches/vdr.epgsearch-exttimeredit-0.0.2.diff new file mode 100644 index 0000000..c92ff8c --- /dev/null +++ b/patches/vdr.epgsearch-exttimeredit-0.0.2.diff @@ -0,0 +1,110 @@ +--- 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.diff b/patches/vdr.epgsearch-exttimeredit.diff deleted file mode 100644 index 36e3554..0000000 --- a/patches/vdr.epgsearch-exttimeredit.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- menu.c.orig 2009-04-11 14:47:08.000000000 +0200 -+++ menu.c 2009-04-11 15:13:30.000000000 +0200 -@@ -985,6 +985,23 @@ eOSState cMenuTimers::Edit(void) - if (HasSubMenu() || Count() == 0) - return osContinue; - isyslog("editing timer %s", *CurrentTimer()->ToDescr()); -+ -+ // 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 = CurrentTimer(); -+ exttimeredit.bNew = false; -+ exttimeredit.event = NULL; -+ if (cPluginManager::CallFirstService("Epgsearch-exttimeredit-v1.0", &exttimeredit)) -+ return AddSubMenu(exttimeredit.pTimerMenu); -+ - return AddSubMenu(new cMenuEditTimer(CurrentTimer())); - } - |