int CPVRChannel::GetEPG(CFileItemList *results) { CPVREpg *epg = GetEPG(); if (!epg) { CLog::Log(LOGERROR, "PVR - %s - cannot get EPG for channel '%s'", __FUNCTION__, m_strChannelName.c_str()); return -1; } return epg->Get(results); }
int CPVREpgs::GetEPGAll(CFileItemList* results, bool bRadio /* = false */) { int iInitialSize = results->Size(); for (unsigned int iEpgPtr = 0; iEpgPtr < size(); iEpgPtr++) { CPVREpg *epg = at(iEpgPtr); CPVRChannel *channel = at(iEpgPtr)->Channel(); if (!channel || channel->IsRadio() != bRadio) continue; epg->Get(results); } return results->Size() - iInitialSize; }
int CPVREpgs::GetEPGSearch(CFileItemList* results, const PVREpgSearchFilter &filter) { for (unsigned int iEpgPtr = 0; iEpgPtr < size(); iEpgPtr++) { CPVREpg *epg = at(iEpgPtr); epg->Get(results, filter); } /* filter recordings */ if (filter.m_bIgnorePresentRecordings && PVRRecordings.size() > 0) { for (unsigned int iRecordingPtr = 0; iRecordingPtr < PVRRecordings.size(); iRecordingPtr++) { for (int iResultPtr = 0; iResultPtr < results->Size(); iResultPtr++) { const CPVREpgInfoTag *epgentry = results->Get(iResultPtr)->GetEPGInfoTag(); CPVRRecordingInfoTag *recording = &PVRRecordings[iRecordingPtr]; if (epgentry) { if (epgentry->Title() != recording->Title() || epgentry->PlotOutline() != recording->PlotOutline() || epgentry->Plot() != recording->Plot()) continue; results->Remove(iResultPtr); iResultPtr--; } } } } /* filter timers */ if (filter.m_bIgnorePresentTimers && PVRTimers.size() > 0) { for (unsigned int iTimerPtr = 0; iTimerPtr < PVRTimers.size(); iTimerPtr++) { for (int iResultPtr = 0; iResultPtr < results->Size(); iResultPtr++) { const CPVREpgInfoTag *epgentry = results->Get(iResultPtr)->GetEPGInfoTag(); CPVRTimerInfoTag *timer = &PVRTimers[iTimerPtr]; if (epgentry) { if (epgentry->ChannelTag()->ChannelNumber() != timer->ChannelNumber() || epgentry->Start() < timer->Start() || epgentry->End() > timer->Stop()) continue; results->Remove(iResultPtr); iResultPtr--; } } } } /* remove duplicate entries */ if (filter.m_bPreventRepeats) { unsigned int iSize = results->Size(); for (unsigned int iResultPtr = 0; iResultPtr < iSize; iResultPtr++) { const CPVREpgInfoTag *epgentry_1 = results->Get(iResultPtr)->GetEPGInfoTag(); for (unsigned int iTagPtr = 0; iTagPtr < iSize; iTagPtr++) { const CPVREpgInfoTag *epgentry_2 = results->Get(iTagPtr)->GetEPGInfoTag(); if (iResultPtr == iTagPtr) continue; if (epgentry_1->Title() != epgentry_2->Title() || epgentry_1->Plot() != epgentry_2->Plot() || epgentry_1->PlotOutline() != epgentry_2->PlotOutline()) continue; results->Remove(iTagPtr); iSize = results->Size(); iResultPtr--; iTagPtr--; } } } return results->Size(); }