diff options
Diffstat (limited to 'menu_timersdone.c')
-rw-r--r-- | menu_timersdone.c | 269 |
1 files changed, 132 insertions, 137 deletions
diff --git a/menu_timersdone.c b/menu_timersdone.c index 5120bad..8f41bb7 100644 --- a/menu_timersdone.c +++ b/menu_timersdone.c @@ -29,194 +29,189 @@ int sortModeTimerDone = 0; cMenuTimerDoneItem::cMenuTimerDoneItem(cTimerDone* TimerDone) { - timerDone = TimerDone; - Set(); + timerDone = TimerDone; + Set(); } void cMenuTimerDoneItem::Set(void) { - if (!timerDone) - return; - char *buffer = NULL; - - char buf[32]; - struct tm tm_r; - tm *tm = localtime_r(&timerDone->start, &tm_r); - strftime(buf, sizeof(buf), "%d.%m.%y %H:%M", tm); - - LOCK_CHANNELS_READ; - const cChannel* ch = Channels->GetByChannelID(timerDone->channelID, true, true); - msprintf(&buffer, "%d\t%s\t%s~%s", ch?ch->Number():0, buf, timerDone->title.c_str(), timerDone->shorttext.c_str()); - SetText(buffer, false); + if (!timerDone) + return; + char *buffer = NULL; + + char buf[32]; + struct tm tm_r; + tm *tm = localtime_r(&timerDone->start, &tm_r); + strftime(buf, sizeof(buf), "%d.%m.%y %H:%M", tm); + + LOCK_CHANNELS_READ; + const cChannel* ch = Channels->GetByChannelID(timerDone->channelID, true, true); + msprintf(&buffer, "%d\t%s\t%s~%s", ch ? ch->Number() : 0, buf, timerDone->title.c_str(), timerDone->shorttext.c_str()); + SetText(buffer, false); } int cMenuTimerDoneItem::Compare(const cListObject &ListObject) const { - cMenuTimerDoneItem *p = (cMenuTimerDoneItem *)&ListObject; - if (sortModeTimerDone == 0) // sort by Date - if (timerDone->start > p->timerDone->start) return 1; else return -1; - else - { - cString s1 = cString::sprintf("%s~%s", timerDone->title.c_str(), timerDone->shorttext.c_str()); - cString s2 = cString::sprintf("%s~%s", p->timerDone->title.c_str(), p->timerDone->shorttext.c_str()); - int res = strcasecmp(s1, s2); - return res; - } + cMenuTimerDoneItem *p = (cMenuTimerDoneItem *)&ListObject; + if (sortModeTimerDone == 0) // sort by Date + if (timerDone->start > p->timerDone->start) return 1; + else return -1; + else { + cString s1 = cString::sprintf("%s~%s", timerDone->title.c_str(), timerDone->shorttext.c_str()); + cString s2 = cString::sprintf("%s~%s", p->timerDone->title.c_str(), p->timerDone->shorttext.c_str()); + int res = strcasecmp(s1, s2); + return res; + } } // --- cMenuTimersDone ---------------------------------------------------------- cMenuTimersDone::cMenuTimersDone(cSearchExt* Search) -:cOsdMenu("", 4, 15) + : cOsdMenu("", 4, 15) { - SetMenuCategory(mcTimer); - - search = Search; - showAll = true; - sortModeTimerDone = 0; - if (search) showAll = false; - Set(); - Display(); + SetMenuCategory(mcTimer); + + search = Search; + showAll = true; + sortModeTimerDone = 0; + if (search) showAll = false; + Set(); + Display(); } void cMenuTimersDone::Set() { - Clear(); - eventObjects.Clear(); - cMutexLock TimersDoneLock(&TimersDone); - cTimerDone* timerDone = TimersDone.First(); - while (timerDone) { - if (showAll || (!showAll && search && timerDone->searchID == search->ID)) - Add(new cMenuTimerDoneItem(timerDone)); - timerDone = TimersDone.Next(timerDone); - } - UpdateTitle(); - SetHelp(sortModeTimerDone==0?tr("Button$by name"):tr("Button$by date"), tr("Button$Delete all"), trVDR("Button$Delete"), showAll?search->search:tr("Button$Show all")); - Sort(); - - cMenuTimerDoneItem* item = (cMenuTimerDoneItem*)First(); - while(item) - { - if (item->timerDone) - { - const cEvent* Event = item->timerDone->GetEvent(); - if (Event) eventObjects.Add(Event); - } - item = (cMenuTimerDoneItem*)Next(item); - } + Clear(); + eventObjects.Clear(); + cMutexLock TimersDoneLock(&TimersDone); + cTimerDone* timerDone = TimersDone.First(); + while (timerDone) { + if (showAll || (!showAll && search && timerDone->searchID == search->ID)) + Add(new cMenuTimerDoneItem(timerDone)); + timerDone = TimersDone.Next(timerDone); + } + UpdateTitle(); + SetHelp(sortModeTimerDone == 0 ? tr("Button$by name") : tr("Button$by date"), tr("Button$Delete all"), trVDR("Button$Delete"), showAll ? search->search : tr("Button$Show all")); + Sort(); + + cMenuTimerDoneItem* item = (cMenuTimerDoneItem*)First(); + while (item) { + if (item->timerDone) { + const cEvent* Event = item->timerDone->GetEvent(); + if (Event) eventObjects.Add(Event); + } + item = (cMenuTimerDoneItem*)Next(item); + } } void cMenuTimersDone::UpdateCurrent() { - // navigation in summary could have changed current item, so update it - cEventObj* cureventObj = eventObjects.GetCurrent(); - if (cureventObj && cureventObj->Event()) - for (cMenuTimerDoneItem *item = (cMenuTimerDoneItem *)First(); item; item = (cMenuTimerDoneItem *)Next(item)) - if (item->Selectable() && item->timerDone->GetEvent() == cureventObj->Event()) - { - cureventObj->Select(false); - SetCurrent(item); - Display(); - break; - } + // navigation in summary could have changed current item, so update it + cEventObj* cureventObj = eventObjects.GetCurrent(); + if (cureventObj && cureventObj->Event()) + for (cMenuTimerDoneItem *item = (cMenuTimerDoneItem *)First(); item; item = (cMenuTimerDoneItem *)Next(item)) + if (item->Selectable() && item->timerDone->GetEvent() == cureventObj->Event()) { + cureventObj->Select(false); + SetCurrent(item); + Display(); + break; + } } cTimerDone *cMenuTimersDone::CurrentTimerDone(void) { - cMenuTimerDoneItem *item = (cMenuTimerDoneItem *)Get(Current()); - return item ? item->timerDone : NULL; + cMenuTimerDoneItem *item = (cMenuTimerDoneItem *)Get(Current()); + return item ? item->timerDone : NULL; } void cMenuTimersDone::UpdateTitle() { - cString buffer = cString::sprintf("%d %s%s%s", Count(), tr("Timers"), showAll?"":" ", showAll?"":search->search); - SetTitle(buffer); - Display(); + cString buffer = cString::sprintf("%d %s%s%s", Count(), tr("Timers"), showAll ? "" : " ", showAll ? "" : search->search); + SetTitle(buffer); + Display(); } eOSState cMenuTimersDone::Delete(void) { - cTimerDone *curTimerDone = CurrentTimerDone(); - if (curTimerDone) { - if (Interface->Confirm(tr("Edit$Delete entry?"))) { - LogFile.Log(1,"deleted timer done: '%s~%s'", curTimerDone->title!=""?curTimerDone->title.c_str():"unknown title", curTimerDone->shorttext!=""?curTimerDone->shorttext.c_str():"unknown subtitle"); - cMutexLock TimersDoneLock(&TimersDone); - TimersDone.Del(curTimerDone); - TimersDone.Save(); - cOsdMenu::Del(Current()); - Display(); - UpdateTitle(); - } - } - return osContinue; + cTimerDone *curTimerDone = CurrentTimerDone(); + if (curTimerDone) { + if (Interface->Confirm(tr("Edit$Delete entry?"))) { + LogFile.Log(1, "deleted timer done: '%s~%s'", curTimerDone->title != "" ? curTimerDone->title.c_str() : "unknown title", curTimerDone->shorttext != "" ? curTimerDone->shorttext.c_str() : "unknown subtitle"); + cMutexLock TimersDoneLock(&TimersDone); + TimersDone.Del(curTimerDone); + TimersDone.Save(); + cOsdMenu::Del(Current()); + Display(); + UpdateTitle(); + } + } + return osContinue; } eOSState cMenuTimersDone::DeleteAll(void) { - if (Interface->Confirm(tr("Edit$Delete all entries?"))) { - cMutexLock TimersDoneLock(&TimersDone); - while(Count()>0) - { - cMenuTimerDoneItem *item = (cMenuTimerDoneItem *)Get(0); - if (!item) break; - cTimerDone *curTimerDone = item->timerDone; - TimersDone.Del(curTimerDone); - cOsdMenu::Del(0); - } - TimersDone.Save(); - Display(); - UpdateTitle(); - } - - return osContinue; + if (Interface->Confirm(tr("Edit$Delete all entries?"))) { + cMutexLock TimersDoneLock(&TimersDone); + while (Count() > 0) { + cMenuTimerDoneItem *item = (cMenuTimerDoneItem *)Get(0); + if (!item) break; + cTimerDone *curTimerDone = item->timerDone; + TimersDone.Del(curTimerDone); + cOsdMenu::Del(0); + } + TimersDone.Save(); + Display(); + UpdateTitle(); + } + + return osContinue; } eOSState cMenuTimersDone::ProcessKey(eKeys Key) { - bool HadSubMenu = HasSubMenu(); - eOSState state = cOsdMenu::ProcessKey(Key); - if (!HasSubMenu() && HadSubMenu) - UpdateCurrent(); - - if (state == osUnknown) { - switch (Key) { - case kGreen: + bool HadSubMenu = HasSubMenu(); + eOSState state = cOsdMenu::ProcessKey(Key); + if (!HasSubMenu() && HadSubMenu) + UpdateCurrent(); + + if (state == osUnknown) { + switch (Key) { + case kGreen: state = DeleteAll(); break; - case kYellow: + case kYellow: state = Delete(); break; - case kBlue: - if(!HasSubMenu()) { - showAll = !showAll; - Set(); - Display(); + case kBlue: + if (!HasSubMenu()) { + showAll = !showAll; + Set(); + Display(); } break; - case k0: - case kRed: - if(!HasSubMenu()) { - sortModeTimerDone = 1-sortModeTimerDone; - Set(); - Display(); + case k0: + case kRed: + if (!HasSubMenu()) { + sortModeTimerDone = 1 - sortModeTimerDone; + Set(); + Display(); } break; - case k8: + case k8: return osContinue; - case kOk: - { + case kOk: { cTimerDone *TimerDone = CurrentTimerDone(); - if (TimerDone) - { - const cEvent* Event = TimerDone->GetEvent(); - if (!Event) break; - return AddSubMenu(new cMenuEventSearchSimple(Event, eventObjects)); - } - } - default: break; - } - } - - return state; + if (TimerDone) { + const cEvent* Event = TimerDone->GetEvent(); + if (!Event) break; + return AddSubMenu(new cMenuEventSearchSimple(Event, eventObjects)); + } + } + default: + break; + } + } + + return state; } |