diff options
Diffstat (limited to 'menu_search.c')
-rw-r--r-- | menu_search.c | 302 |
1 files changed, 150 insertions, 152 deletions
diff --git a/menu_search.c b/menu_search.c index 5aef353..f5bfe6f 100644 --- a/menu_search.c +++ b/menu_search.c @@ -37,99 +37,95 @@ The project's page is at http://winni.vdr-developer.org/epgsearch using namespace std; // --- cMenuSearchExtItem ---------------------------------------------------------- -class cMenuSearchExtItem : public cOsdItem { - private: +class cMenuSearchExtItem : public cOsdItem +{ +private: public: - cSearchExt* searchExt; - cMenuSearchExtItem(cSearchExt* SearchExt); - int Compare(const cListObject &ListObject) const; - void Set(void); - }; + cSearchExt* searchExt; + cMenuSearchExtItem(cSearchExt* SearchExt); + int Compare(const cListObject &ListObject) const; + void Set(void); +}; cMenuSearchExtItem::cMenuSearchExtItem(cSearchExt* SearchExt) { - searchExt = SearchExt; - Set(); + searchExt = SearchExt; + Set(); } void cMenuSearchExtItem::Set(void) { - ostringstream line; - - if (searchExt->useAsSearchTimer) - { - if (searchExt->IsActiveAt(time(NULL))) - line << ">"; - else - line << "!"; + ostringstream line; + + if (searchExt->useAsSearchTimer) { + if (searchExt->IsActiveAt(time(NULL))) + line << ">"; + else + line << "!"; } - line << "\t"; - if (searchExt->search && strlen(searchExt->search) > 0) - line << setiosflags(ios::left) << string(searchExt->search); - else - line << setiosflags(ios::left) << "*"; - - line << "\t"; - if (searchExt->useChannel == 1) - { - if (searchExt->channelMin != searchExt->channelMax) - line << setiosflags(ios::left) << searchExt->channelMin->Number() << " - " << searchExt->channelMax->Number(); - else - line << setiosflags(ios::left) << setw(11) << (searchExt->useChannel?CHANNELNAME(searchExt->channelMin):""); - } - else if (searchExt->useChannel == 2) - line << setiosflags(ios::left) << setw(11) << searchExt->channelGroup; - else - line << " "; - - line << "\t"; - if (searchExt->useTime) - { - ostringstream timeline; - timeline << setfill('0') << setw(2) << searchExt->startTime / 100 << ":" << setw(2) << searchExt->startTime % 100; - timeline << "\t"; - timeline << setfill('0') << setw(2) << searchExt->stopTime / 100 << ":" << setw(2) << searchExt->stopTime % 100; - line << timeline.str(); - } - else - line << "--:--\t--:--"; - - SetText(strdup(line.str().c_str()), false); + line << "\t"; + if (searchExt->search && strlen(searchExt->search) > 0) + line << setiosflags(ios::left) << string(searchExt->search); + else + line << setiosflags(ios::left) << "*"; + + line << "\t"; + if (searchExt->useChannel == 1) { + if (searchExt->channelMin != searchExt->channelMax) + line << setiosflags(ios::left) << searchExt->channelMin->Number() << " - " << searchExt->channelMax->Number(); + else + line << setiosflags(ios::left) << setw(11) << (searchExt->useChannel ? CHANNELNAME(searchExt->channelMin) : ""); + } else if (searchExt->useChannel == 2) + line << setiosflags(ios::left) << setw(11) << searchExt->channelGroup; + else + line << " "; + + line << "\t"; + if (searchExt->useTime) { + ostringstream timeline; + timeline << setfill('0') << setw(2) << searchExt->startTime / 100 << ":" << setw(2) << searchExt->startTime % 100; + timeline << "\t"; + timeline << setfill('0') << setw(2) << searchExt->stopTime / 100 << ":" << setw(2) << searchExt->stopTime % 100; + line << timeline.str(); + } else + line << "--:--\t--:--"; + + SetText(strdup(line.str().c_str()), false); } int cMenuSearchExtItem::Compare(const cListObject &ListObject) const { - cMenuSearchExtItem *p = (cMenuSearchExtItem *)&ListObject; - return strcasecmp(searchExt->search, p->searchExt->search); + cMenuSearchExtItem *p = (cMenuSearchExtItem *)&ListObject; + return strcasecmp(searchExt->search, p->searchExt->search); } // --- cMenuEPGSearchExt ---------------------------------------------------------- cMenuEPGSearchExt::cMenuEPGSearchExt() -:cOsdMenu("", 2, 20, 11, 6, 5) + : cOsdMenu("", 2, 20, 11, 6, 5) { - SetMenuCategory(mcPlugin); - cMutexLock SearchExtsLock(&SearchExts); - cSearchExt *SearchExt = SearchExts.First(); - while (SearchExt) { - Add(new cMenuSearchExtItem(SearchExt)); - SearchExt = SearchExts.Next(SearchExt); - } - - UpdateTitle(); - SetHelp(trVDR("Button$Edit"), trVDR("Button$New"), trVDR("Button$Delete"), tr("Button$Actions")); - Sort(); + SetMenuCategory(mcPlugin); + cMutexLock SearchExtsLock(&SearchExts); + cSearchExt *SearchExt = SearchExts.First(); + while (SearchExt) { + Add(new cMenuSearchExtItem(SearchExt)); + SearchExt = SearchExts.Next(SearchExt); + } + + UpdateTitle(); + SetHelp(trVDR("Button$Edit"), trVDR("Button$New"), trVDR("Button$Delete"), tr("Button$Actions")); + Sort(); } void cMenuEPGSearchExt::UpdateTitle() { - int total=0, active=0; + int total = 0, active = 0; cMutexLock SearchExtsLock(&SearchExts); cSearchExt *SearchExt = SearchExts.First(); while (SearchExt) { - if (SearchExt->useAsSearchTimer) active++; - SearchExt = SearchExts.Next(SearchExt); - total++; + if (SearchExt->useAsSearchTimer) active++; + SearchExt = SearchExts.Next(SearchExt); + total++; } cString buffer = cString::sprintf("%s (%d/%d %s)", tr("Search entries"), active, total, tr("active")); @@ -141,113 +137,115 @@ cSearchExt *cMenuEPGSearchExt::CurrentSearchExt(void) { cMenuSearchExtItem *item = (cMenuSearchExtItem *)Get(Current()); if (item && SearchExts.Exists(item->searchExt)) - return item->searchExt; + return item->searchExt; return NULL; } eOSState cMenuEPGSearchExt::New(void) { - if (HasSubMenu()) - return osContinue; - return AddSubMenu(new cMenuEditSearchExt(new cSearchExt, true)); + if (HasSubMenu()) + return osContinue; + return AddSubMenu(new cMenuEditSearchExt(new cSearchExt, true)); } eOSState cMenuEPGSearchExt::Delete(void) { cSearchExt *curSearchExt = CurrentSearchExt(); if (curSearchExt) { - if (Interface->Confirm(tr("Edit$Delete search?"))) { - int DelID = curSearchExt->ID; - if (Interface->Confirm(tr("Delete all timers created from this search?"))) - curSearchExt->DeleteAllTimers(); - LogFile.Log(1,"search timer %s (%d) deleted", curSearchExt->search, curSearchExt->ID); - cMutexLock SearchExtsLock(&SearchExts); - SearchExts.Del(curSearchExt); - SearchExts.Save(); - RecsDone.RemoveSearchID(DelID); - TimersDone.RemoveEntriesOfSearch(DelID); - cOsdMenu::Del(Current()); - Display(); - UpdateTitle(); - } + if (Interface->Confirm(tr("Edit$Delete search?"))) { + int DelID = curSearchExt->ID; + if (Interface->Confirm(tr("Delete all timers created from this search?"))) + curSearchExt->DeleteAllTimers(); + LogFile.Log(1, "search timer %s (%d) deleted", curSearchExt->search, curSearchExt->ID); + cMutexLock SearchExtsLock(&SearchExts); + SearchExts.Del(curSearchExt); + SearchExts.Save(); + RecsDone.RemoveSearchID(DelID); + TimersDone.RemoveEntriesOfSearch(DelID); + cOsdMenu::Del(Current()); + Display(); + UpdateTitle(); + } } return osContinue; } eOSState cMenuEPGSearchExt::Actions(eKeys Key) { - if (HasSubMenu() || Count() == 0) - return osContinue; - cSearchExt* search = CurrentSearchExt(); - - cMenuSearchActions *menu; - eOSState state = AddSubMenu(menu = new cMenuSearchActions(search, true)); - if (Key != kNone) - state = menu->ProcessKey(Key); - return state; + if (HasSubMenu() || Count() == 0) + return osContinue; + cSearchExt* search = CurrentSearchExt(); + + cMenuSearchActions *menu; + eOSState state = AddSubMenu(menu = new cMenuSearchActions(search, true)); + if (Key != kNone) + state = menu->ProcessKey(Key); + return state; } eOSState cMenuEPGSearchExt::ProcessKey(eKeys Key) { - int SearchNumber = HasSubMenu() ? Count() : -1; - eOSState state = cOsdMenu::ProcessKey(Key); - if (state == osUnknown) { - switch (Key) { - case k0: - if (HasSubMenu()) - return osContinue; - if (CurrentSearchExt()) - state = AddSubMenu(new cMenuSearchActions(CurrentSearchExt())); - else - state = osContinue; - break; - case k1...k9: - return Actions(Key); - case kOk: - state = Actions(k1); - case kBlue: - if (HasSubMenu()) - return osContinue; - state = AddSubMenu(new cMenuSearchActions(CurrentSearchExt())); - break; - case kRed: - if (HasSubMenu()) - return osContinue; - if (CurrentSearchExt()) - state = AddSubMenu(new cMenuEditSearchExt(CurrentSearchExt())); - else - state = osContinue; - break; - case kGreen: state = New(); break; - case kYellow: state = Delete(); break; - default: break; + int SearchNumber = HasSubMenu() ? Count() : -1; + eOSState state = cOsdMenu::ProcessKey(Key); + if (state == osUnknown) { + switch (Key) { + case k0: + if (HasSubMenu()) + return osContinue; + if (CurrentSearchExt()) + state = AddSubMenu(new cMenuSearchActions(CurrentSearchExt())); + else + state = osContinue; + break; + case k1...k9: + return Actions(Key); + case kOk: + state = Actions(k1); + case kBlue: + if (HasSubMenu()) + return osContinue; + state = AddSubMenu(new cMenuSearchActions(CurrentSearchExt())); + break; + case kRed: + if (HasSubMenu()) + return osContinue; + if (CurrentSearchExt()) + state = AddSubMenu(new cMenuEditSearchExt(CurrentSearchExt())); + else + state = osContinue; + break; + case kGreen: + state = New(); + break; + case kYellow: + state = Delete(); + break; + default: + break; + } } - } - if (SearchNumber >= 0 && !HasSubMenu()) - { - cMutexLock SearchExtsLock(&SearchExts); - cSearchExt* search = SearchExts.Get(SearchNumber); - if (search) // a newly created search was confirmed with Ok - Add(new cMenuSearchExtItem(search)); - else - search = CurrentSearchExt(); - // always update all entries, since channel group names may have changed and affect other searches - Sort(); - for(int i=0; i<Count(); i++) - { - cMenuSearchExtItem *item = (cMenuSearchExtItem *)Get(i); - if (item) - { - item->Set(); - if (item->searchExt == search) - SetCurrent(item); - } - } - Display(); - UpdateTitle(); - } - - return state; + if (SearchNumber >= 0 && !HasSubMenu()) { + cMutexLock SearchExtsLock(&SearchExts); + cSearchExt* search = SearchExts.Get(SearchNumber); + if (search) // a newly created search was confirmed with Ok + Add(new cMenuSearchExtItem(search)); + else + search = CurrentSearchExt(); + // always update all entries, since channel group names may have changed and affect other searches + Sort(); + for (int i = 0; i < Count(); i++) { + cMenuSearchExtItem *item = (cMenuSearchExtItem *)Get(i); + if (item) { + item->Set(); + if (item->searchExt == search) + SetCurrent(item); + } + } + Display(); + UpdateTitle(); + } + + return state; } |