diff options
Diffstat (limited to 'menu_favorites.c')
-rw-r--r-- | menu_favorites.c | 245 |
1 files changed, 116 insertions, 129 deletions
diff --git a/menu_favorites.c b/menu_favorites.c index a4115c9..4cb42b5 100644 --- a/menu_favorites.c +++ b/menu_favorites.c @@ -32,181 +32,168 @@ extern const char* ButtonBlue[3]; extern int exitToMainMenu; cMenuFavorites::cMenuFavorites() - : cMenuSearchResults(cTemplFile::GetTemplateByName("MenuFavorites")) + : cMenuSearchResults(cTemplFile::GetTemplateByName("MenuFavorites")) { - BuildList(); + BuildList(); } #ifdef USE_GRAPHTFT const char* cMenuFavorites::MenuKind() { - return "MenuEpgsFavorites"; + return "MenuEpgsFavorites"; } void cMenuFavorites::Display(void) { - cOsdMenu::Display(); + cOsdMenu::Display(); - if (Count() > 0) - { - int i = 0; + if (Count() > 0) { + int i = 0; - for (cOsdItem *item = First(); item; item = Next(item)) - cStatus::MsgOsdEventItem(!item->Selectable() ? 0 : - ((cMenuSearchResultsItem*)item)->event, - item->Text(), i++, Count()); - } + for (cOsdItem *item = First(); item; item = Next(item)) + cStatus::MsgOsdEventItem(!item->Selectable() ? 0 : + ((cMenuSearchResultsItem*)item)->event, + item->Text(), i++, Count()); + } } #endif /* GRAPHTFT */ bool cMenuFavorites::BuildList() { - Clear(); - eventObjects.Clear(); - - cSearchResults* pCompleteSearchResults = NULL; - cMutexLock SearchExtsLock(&SearchExts); - cSearchExt *SearchExt = SearchExts.First(); - int timespan = EPGSearchConfig.FavoritesMenuTimespan*60; - - while (SearchExt) - { - if (SearchExt->useInFavorites) - pCompleteSearchResults = SearchExt->Run(modeBlue == showNoPayTV?1:0, false, timespan, pCompleteSearchResults, true); - SearchExt = SearchExts.Next(SearchExt); - } - - if (pCompleteSearchResults) - { - set<const cEvent*> foundEvents; - pCompleteSearchResults->SortBy(CompareEventTime); - - for (cSearchResult* pResultObj = pCompleteSearchResults->First(); - pResultObj; - pResultObj = pCompleteSearchResults->Next(pResultObj)) - { - if (foundEvents.find(pResultObj->event) == foundEvents.end()) - { - foundEvents.insert(pResultObj->event); - Add(new cMenuSearchResultsItem(pResultObj->event, modeYellow == showEpisode, false, menuTemplate)); - eventObjects.Add(pResultObj->event); + Clear(); + eventObjects.Clear(); + + cSearchResults* pCompleteSearchResults = NULL; + cMutexLock SearchExtsLock(&SearchExts); + cSearchExt *SearchExt = SearchExts.First(); + int timespan = EPGSearchConfig.FavoritesMenuTimespan * 60; + + while (SearchExt) { + if (SearchExt->useInFavorites) + pCompleteSearchResults = SearchExt->Run(modeBlue == showNoPayTV ? 1 : 0, false, timespan, pCompleteSearchResults, true); + SearchExt = SearchExts.Next(SearchExt); + } + + if (pCompleteSearchResults) { + set<const cEvent*> foundEvents; + pCompleteSearchResults->SortBy(CompareEventTime); + + for (cSearchResult* pResultObj = pCompleteSearchResults->First(); + pResultObj; + pResultObj = pCompleteSearchResults->Next(pResultObj)) { + if (foundEvents.find(pResultObj->event) == foundEvents.end()) { + foundEvents.insert(pResultObj->event); + Add(new cMenuSearchResultsItem(pResultObj->event, modeYellow == showEpisode, false, menuTemplate)); + eventObjects.Add(pResultObj->event); + } } - } - delete pCompleteSearchResults; - } - SetHelpKeys(); - cString szTitle = cString::sprintf("%s: %d %s", tr("Favorites"), Count(), tr("Search results")); - SetTitle(szTitle); - Display(); - - return true; + delete pCompleteSearchResults; + } + SetHelpKeys(); + cString szTitle = cString::sprintf("%s: %d %s", tr("Favorites"), Count(), tr("Search results")); + SetTitle(szTitle); + Display(); + + return true; } eOSState cMenuFavorites::OnGreen() { - eOSState state = osUnknown; - if(!HasSubMenu()) - { - toggleKeys = 0; - cMenuWhatsOnSearch::currentShowMode = cMenuWhatsOnSearch::GetNextMode(); - return osUnknown; - } - return state; + eOSState state = osUnknown; + if (!HasSubMenu()) { + toggleKeys = 0; + cMenuWhatsOnSearch::currentShowMode = cMenuWhatsOnSearch::GetNextMode(); + return osUnknown; + } + return state; } eOSState cMenuFavorites::OnYellow() { - eOSState state = osUnknown; - if(!HasSubMenu()) - { - cMenuSearchResultsItem *item = (cMenuSearchResultsItem *)Get(Current()); - if (item && item->event) - { - LOCK_CHANNELS_READ; - const cChannel *channel = Channels->GetByChannelID(item->event->ChannelID(), true, true); - cMenuWhatsOnSearch::scheduleChannel = channel; - cMenuWhatsOnSearch::currentShowMode = showNow; - } - toggleKeys = 0; - return osBack; - } - return state; + eOSState state = osUnknown; + if (!HasSubMenu()) { + cMenuSearchResultsItem *item = (cMenuSearchResultsItem *)Get(Current()); + if (item && item->event) { + LOCK_CHANNELS_READ; + const cChannel *channel = Channels->GetByChannelID(item->event->ChannelID(), true, true); + cMenuWhatsOnSearch::scheduleChannel = channel; + cMenuWhatsOnSearch::currentShowMode = showNow; + } + toggleKeys = 0; + return osBack; + } + return state; } eOSState cMenuFavorites::ProcessKey(eKeys Key) { - exitToMainMenu = 0; - if (!HasSubMenu() && Key == kBack) - { - exitToMainMenu = 1; - return osBack; - } - - eOSState state = cMenuSearchResults::ProcessKey(Key); - if (state == osUnknown) - { - switch (Key) { - case kRecord: - case kRed: + exitToMainMenu = 0; + if (!HasSubMenu() && Key == kBack) { + exitToMainMenu = 1; + return osBack; + } + + eOSState state = cMenuSearchResults::ProcessKey(Key); + if (state == osUnknown) { + switch (Key) { + case kRecord: + case kRed: state = OnRed(); break; - case k0: - if(!HasSubMenu()) - { - toggleKeys = 1 - toggleKeys; - SetHelpKeys(true); + case k0: + if (!HasSubMenu()) { + toggleKeys = 1 - toggleKeys; + SetHelpKeys(true); } state = osContinue; break; - case k1...k9: - state = HasSubMenu()?osContinue:Commands(Key); + case k1...k9: + state = HasSubMenu() ? osContinue : Commands(Key); break; - case kBlue: - return EPGSearchConfig.useOkForSwitch?ShowSummary():Switch(); + case kBlue: + return EPGSearchConfig.useOkForSwitch ? ShowSummary() : Switch(); break; - case kOk: - if(HasSubMenu()) - { - state = cOsdMenu::ProcessKey(Key); - break; + case kOk: + if (HasSubMenu()) { + state = cOsdMenu::ProcessKey(Key); + break; } if (Count()) - state = EPGSearchConfig.useOkForSwitch?Switch():ShowSummary(); + state = EPGSearchConfig.useOkForSwitch ? Switch() : ShowSummary(); else - state = osBack; + state = osBack; break; - default: + default: break; - } - } - return state; + } + } + return state; } void cMenuFavorites::SetHelpKeys(bool Force) { - cMenuSearchResultsItem *item = (cMenuSearchResultsItem *)Get(Current()); - int NewHelpKeys = 0; - if (item) { - if (item->Selectable() && item->timerMatch == tmFull) - NewHelpKeys = 2; - else - NewHelpKeys = 1; - } - - bool hasTimer = (NewHelpKeys == 2); - if (NewHelpKeys != helpKeys || Force) - { - showMode nextShowMode = cMenuWhatsOnSearch::GetNextMode(); - cShowMode* mode = cMenuWhatsOnSearch::GetShowMode(nextShowMode); - const char* szButtonGreen = NULL; - if (mode) - szButtonGreen = mode->GetDescription(); - - if (toggleKeys==0) - SetHelp((EPGSearchConfig.redkeymode==0?(hasTimer?trVDR("Button$Timer"):trVDR("Button$Record")):tr("Button$Commands")), szButtonGreen,trVDR("Button$Schedule"), EPGSearchConfig.useOkForSwitch?trVDR("Button$Info"):trVDR("Button$Switch")); - else - SetHelp((EPGSearchConfig.redkeymode==1?(hasTimer?trVDR("Button$Timer"):trVDR("Button$Record")):tr("Button$Commands")), szButtonGreen,trVDR("Button$Schedule"), EPGSearchConfig.useOkForSwitch?trVDR("Button$Info"):trVDR("Button$Switch")); - helpKeys = NewHelpKeys; + cMenuSearchResultsItem *item = (cMenuSearchResultsItem *)Get(Current()); + int NewHelpKeys = 0; + if (item) { + if (item->Selectable() && item->timerMatch == tmFull) + NewHelpKeys = 2; + else + NewHelpKeys = 1; + } + + bool hasTimer = (NewHelpKeys == 2); + if (NewHelpKeys != helpKeys || Force) { + showMode nextShowMode = cMenuWhatsOnSearch::GetNextMode(); + cShowMode* mode = cMenuWhatsOnSearch::GetShowMode(nextShowMode); + const char* szButtonGreen = NULL; + if (mode) + szButtonGreen = mode->GetDescription(); + + if (toggleKeys == 0) + SetHelp((EPGSearchConfig.redkeymode == 0 ? (hasTimer ? trVDR("Button$Timer") : trVDR("Button$Record")) : tr("Button$Commands")), szButtonGreen, trVDR("Button$Schedule"), EPGSearchConfig.useOkForSwitch ? trVDR("Button$Info") : trVDR("Button$Switch")); + else + SetHelp((EPGSearchConfig.redkeymode == 1 ? (hasTimer ? trVDR("Button$Timer") : trVDR("Button$Record")) : tr("Button$Commands")), szButtonGreen, trVDR("Button$Schedule"), EPGSearchConfig.useOkForSwitch ? trVDR("Button$Info") : trVDR("Button$Switch")); + helpKeys = NewHelpKeys; } } |