diff options
Diffstat (limited to 'menu_blacklists.c')
-rw-r--r-- | menu_blacklists.c | 201 |
1 files changed, 100 insertions, 101 deletions
diff --git a/menu_blacklists.c b/menu_blacklists.c index 5290484..b0567a9 100644 --- a/menu_blacklists.c +++ b/menu_blacklists.c @@ -35,14 +35,15 @@ The project's page is at http://winni.vdr-developer.org/epgsearch using namespace std; // --- cMenuBlacklistsItem ---------------------------------------------------------- -class cMenuBlacklistsItem : public cOsdItem { - private: +class cMenuBlacklistsItem : public cOsdItem +{ +private: public: - cBlacklist* blacklist; - cMenuBlacklistsItem(cBlacklist* Blacklist); - int Compare(const cListObject &ListObject) const; - void Set(void); - }; + cBlacklist* blacklist; + cMenuBlacklistsItem(cBlacklist* Blacklist); + int Compare(const cListObject &ListObject) const; + void Set(void); +}; cMenuBlacklistsItem::cMenuBlacklistsItem(cBlacklist* Blacklist) { @@ -52,59 +53,55 @@ cMenuBlacklistsItem::cMenuBlacklistsItem(cBlacklist* Blacklist) void cMenuBlacklistsItem::Set(void) { - ostringstream line; - - if (blacklist->isGlobal != 0) - line << setiosflags(ios::left) << "G"; - line << "\t"; - - if (blacklist->search && strlen(blacklist->search) > 0) - line << setiosflags(ios::left) << string(blacklist->search); - else - line << setiosflags(ios::left) << "*"; - - line << "\t"; - if (blacklist->useChannel == 1) - { - if (blacklist->channelMin != blacklist->channelMax) - line << setiosflags(ios::left) << blacklist->channelMin->Number() << " - " << blacklist->channelMax->Number(); - else - line << setiosflags(ios::left) << setw(11) << (blacklist->useChannel?CHANNELNAME(blacklist->channelMin):""); - } - else if (blacklist->useChannel == 2) - line << setiosflags(ios::left) << setw(11) << blacklist->channelGroup; - - line << "\t"; - if (blacklist->useTime) - { - ostringstream timeline; - timeline << setfill('0') << setw(2) << blacklist->startTime / 100 << ":" << setw(2) << blacklist->startTime % 100; - timeline << "\t"; - timeline << setfill('0') << setw(2) << blacklist->stopTime / 100 << ":" << setw(2) << blacklist->stopTime % 100; - line << timeline.str(); - } - else - line << "--:--\t--:--"; - - SetText(strdup(line.str().c_str()), false); + ostringstream line; + + if (blacklist->isGlobal != 0) + line << setiosflags(ios::left) << "G"; + line << "\t"; + + if (blacklist->search && strlen(blacklist->search) > 0) + line << setiosflags(ios::left) << string(blacklist->search); + else + line << setiosflags(ios::left) << "*"; + + line << "\t"; + if (blacklist->useChannel == 1) { + if (blacklist->channelMin != blacklist->channelMax) + line << setiosflags(ios::left) << blacklist->channelMin->Number() << " - " << blacklist->channelMax->Number(); + else + line << setiosflags(ios::left) << setw(11) << (blacklist->useChannel ? CHANNELNAME(blacklist->channelMin) : ""); + } else if (blacklist->useChannel == 2) + line << setiosflags(ios::left) << setw(11) << blacklist->channelGroup; + + line << "\t"; + if (blacklist->useTime) { + ostringstream timeline; + timeline << setfill('0') << setw(2) << blacklist->startTime / 100 << ":" << setw(2) << blacklist->startTime % 100; + timeline << "\t"; + timeline << setfill('0') << setw(2) << blacklist->stopTime / 100 << ":" << setw(2) << blacklist->stopTime % 100; + line << timeline.str(); + } else + line << "--:--\t--:--"; + + SetText(strdup(line.str().c_str()), false); } int cMenuBlacklistsItem::Compare(const cListObject &ListObject) const { - cMenuBlacklistsItem *p = (cMenuBlacklistsItem *)&ListObject; - return strcasecmp(blacklist->search, p->blacklist->search); + cMenuBlacklistsItem *p = (cMenuBlacklistsItem *)&ListObject; + return strcasecmp(blacklist->search, p->blacklist->search); } // --- cMenuBlacklists ---------------------------------------------------------- cMenuBlacklists::cMenuBlacklists() -:cOsdMenu(tr("Blacklists"), 3, 20, 11, 6, 5) + : cOsdMenu(tr("Blacklists"), 3, 20, 11, 6, 5) { - SetMenuCategory(mcSetupPlugins); + SetMenuCategory(mcSetupPlugins); cMutexLock BlacklistLock(&Blacklists); cBlacklist *Blacklist = Blacklists.First(); while (Blacklist) { - Add(new cMenuBlacklistsItem(Blacklist)); - Blacklist = Blacklists.Next(Blacklist); + Add(new cMenuBlacklistsItem(Blacklist)); + Blacklist = Blacklists.Next(Blacklist); } SetHelp(trVDR("Button$Edit"), trVDR("Button$New"), trVDR("Button$Delete"), NULL); Sort(); @@ -116,14 +113,14 @@ cBlacklist *cMenuBlacklists::CurrentBlacklist(void) { cMenuBlacklistsItem *item = (cMenuBlacklistsItem *)Get(Current()); if (item && Blacklists.Exists(item->blacklist)) - return item->blacklist; + return item->blacklist; return NULL; } eOSState cMenuBlacklists::New(void) { if (HasSubMenu()) - return osContinue; + return osContinue; return AddSubMenu(new cMenuBlacklistEdit(new cBlacklist, true)); } @@ -131,61 +128,63 @@ eOSState cMenuBlacklists::Delete(void) { cBlacklist *curBlacklist = CurrentBlacklist(); if (curBlacklist) { - if (Interface->Confirm(tr("Edit$Delete blacklist?"))) { - LogFile.Log(1,"blacklist %s (%d) deleted", curBlacklist->search, curBlacklist->ID); - SearchExts.RemoveBlacklistID(curBlacklist->ID); - cMutexLock BlacklistLock(&Blacklists); - Blacklists.Del(curBlacklist); - Blacklists.Save(); - cOsdMenu::Del(Current()); - Display(); - } + if (Interface->Confirm(tr("Edit$Delete blacklist?"))) { + LogFile.Log(1, "blacklist %s (%d) deleted", curBlacklist->search, curBlacklist->ID); + SearchExts.RemoveBlacklistID(curBlacklist->ID); + cMutexLock BlacklistLock(&Blacklists); + Blacklists.Del(curBlacklist); + Blacklists.Save(); + cOsdMenu::Del(Current()); + Display(); + } } return osContinue; } eOSState cMenuBlacklists::ProcessKey(eKeys Key) { - int BlacklistNumber = HasSubMenu() ? Count() : -1; - eOSState state = cOsdMenu::ProcessKey(Key); - if (state == osUnknown) { - if (HasSubMenu()) - return osContinue; - switch (Key) { - case kOk: - return AddSubMenu(new cMenuSearchResultsForBlacklist(CurrentBlacklist())); - break; - case kRed: - if (CurrentBlacklist()) - state = AddSubMenu(new cMenuBlacklistEdit(CurrentBlacklist())); - else - state = osContinue; - break; - case kGreen: state = New(); break; - case kYellow: state = Delete(); break; - default: break; - } - } - if (BlacklistNumber >= 0 && !HasSubMenu()) - { - cMutexLock BlacklistLock(&Blacklists); - cBlacklist* Blacklist = Blacklists.Get(BlacklistNumber); - if (Blacklist) // a newly created search was confirmed with Ok - Add(new cMenuBlacklistsItem(Blacklist)); - // always update all entries, since channel group names may have changed and affect other searches - Sort(); - for(int i=0; i<Count(); i++) - { - cMenuBlacklistsItem *item = (cMenuBlacklistsItem *)Get(i); - if (item) - { - item->Set(); - if (item->blacklist == Blacklist) - SetCurrent(item); - } - } - Display(); - } - - return state; + int BlacklistNumber = HasSubMenu() ? Count() : -1; + eOSState state = cOsdMenu::ProcessKey(Key); + if (state == osUnknown) { + if (HasSubMenu()) + return osContinue; + switch (Key) { + case kOk: + return AddSubMenu(new cMenuSearchResultsForBlacklist(CurrentBlacklist())); + break; + case kRed: + if (CurrentBlacklist()) + state = AddSubMenu(new cMenuBlacklistEdit(CurrentBlacklist())); + else + state = osContinue; + break; + case kGreen: + state = New(); + break; + case kYellow: + state = Delete(); + break; + default: + break; + } + } + if (BlacklistNumber >= 0 && !HasSubMenu()) { + cMutexLock BlacklistLock(&Blacklists); + cBlacklist* Blacklist = Blacklists.Get(BlacklistNumber); + if (Blacklist) // a newly created search was confirmed with Ok + Add(new cMenuBlacklistsItem(Blacklist)); + // always update all entries, since channel group names may have changed and affect other searches + Sort(); + for (int i = 0; i < Count(); i++) { + cMenuBlacklistsItem *item = (cMenuBlacklistsItem *)Get(i); + if (item) { + item->Set(); + if (item->blacklist == Blacklist) + SetCurrent(item); + } + } + Display(); + } + + return state; } |