本文整理汇总了C++中CPVRChannel::GetEPG方法的典型用法代码示例。如果您正苦于以下问题:C++ CPVRChannel::GetEPG方法的具体用法?C++ CPVRChannel::GetEPG怎么用?C++ CPVRChannel::GetEPG使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CPVRChannel
的用法示例。
在下文中一共展示了CPVRChannel::GetEPG方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UpdateEpgEvent
void CPVRTimerInfoTag::UpdateEpgEvent(bool bClear /* = false */)
{
if (bClear)
{
if (m_epgInfo)
{
m_epgInfo->SetTimer(NULL);
m_epgInfo = NULL;
}
}
else
{
/* already got an epg event set */
if (m_epgInfo)
return;
/* try to get the channel */
CPVRChannel *channel = (CPVRChannel *) g_PVRChannelGroups->GetByUniqueID(m_iClientChannelUid, m_iClientId);
if (!channel)
return;
/* try to get the EPG table */
CEpg *epg = channel->GetEPG();
if (!epg)
return;
/* try to set the timer on the epg tag that matches with a 2 minute margin */
m_epgInfo = (CEpgInfoTag *) epg->GetTagBetween(StartAsLocalTime() - CDateTimeSpan(0, 0, 2, 0), EndAsLocalTime() + CDateTimeSpan(0, 0, 2, 0));
if (!m_epgInfo)
m_epgInfo = (CEpgInfoTag *) epg->GetTagAround(StartAsLocalTime());
if (m_epgInfo)
m_epgInfo->SetTimer(this);
}
}
示例2: GetEPGNext
int CPVRChannelGroup::GetEPGNext(CFileItemList &results)
{
int iInitialSize = results.Size();
CSingleLock lock(m_critSection);
for (unsigned int iChannelPtr = 0; iChannelPtr < size(); iChannelPtr++)
{
CPVRChannel *channel = at(iChannelPtr).channel;
CEpg *epg = channel->GetEPG();
if (!epg || !epg->HasValidEntries() || at(iChannelPtr).channel->IsHidden())
continue;
CEpgInfoTag epgNow;
if (!epg->InfoTagNext(epgNow))
continue;
CFileItemPtr entry(new CFileItem(epgNow));
entry->SetLabel2(epgNow.StartAsLocalTime().GetAsLocalizedTime(StringUtils::EmptyString, false));
entry->SetPath(channel->ChannelName());
entry->SetThumbnailImage(channel->IconPath());
results.Add(entry);
}
return results.Size() - iInitialSize;
}
示例3: CPVRTimerInfoTag
CPVRTimerInfoTag *CPVRTimerInfoTag::CreateFromEpg(const CEpgInfoTag &tag)
{
/* create a new timer */
CPVRTimerInfoTag *newTag = new CPVRTimerInfoTag();
if (!newTag)
{
CLog::Log(LOGERROR, "%s - couldn't create new timer", __FUNCTION__);
return NULL;
}
/* check if a valid channel is set */
CPVRChannel *channel = (CPVRChannel *) tag.ChannelTag();
if (channel == NULL)
{
CLog::Log(LOGERROR, "%s - no channel set", __FUNCTION__);
return NULL;
}
/* check if the epg end date is in the future */
if (tag.EndAsLocalTime() < CDateTime::GetCurrentDateTime())
{
CLog::Log(LOGERROR, "%s - end time is in the past", __FUNCTION__);
return NULL;
}
/* set the timer data */
CDateTime newStart = tag.StartAsUTC();
CDateTime newEnd = tag.EndAsUTC();
newTag->m_iClientIndex = -1;
newTag->m_strTitle = tag.Title().IsEmpty() ? channel->ChannelName() : tag.Title();
newTag->m_iChannelNumber = channel->ChannelNumber();
newTag->m_iClientChannelUid = channel->UniqueID();
newTag->m_iClientId = channel->ClientID();
newTag->m_bIsRadio = channel->IsRadio();
newTag->SetStartFromUTC(newStart);
newTag->SetEndFromUTC(newEnd);
if (tag.Plot().IsEmpty())
{
newTag->m_strSummary.Format("%s %s %s %s %s",
newTag->StartAsLocalTime().GetAsLocalizedDate(),
g_localizeStrings.Get(19159),
newTag->StartAsLocalTime().GetAsLocalizedTime("", false),
g_localizeStrings.Get(19160),
newTag->EndAsLocalTime().GetAsLocalizedTime("", false));
}
else
{
newTag->m_strSummary = tag.Plot();
}
/* we might have a copy of the tag here, so get the real one from the pvrmanager */
const CEpg *epgTable = channel->GetEPG();
newTag->m_epgInfo = epgTable ? epgTable->GetTag(tag.UniqueBroadcastID(), tag.StartAsUTC()) : NULL;
/* unused only for reference */
newTag->m_strFileNameAndPath = "pvr://timers/new";
return newTag;
}
示例4: GetEPGNext
int CPVREpgContainer::GetEPGNext(CFileItemList* results, bool bRadio)
{
CPVRChannelGroup *channels = (CPVRChannelGroup *) CPVRManager::GetChannelGroups()->GetGroupAll(bRadio);
CSingleLock lock(m_critSection);
int iInitialSize = results->Size();
for (unsigned int iChannelPtr = 0; iChannelPtr < channels->Size(); iChannelPtr++)
{
CPVRChannel *channel = (CPVRChannel *) channels->GetByIndex(iChannelPtr);
CPVREpg *epg = channel->GetEPG();
if (!epg->HasValidEntries())
continue;
const CPVREpgInfoTag *epgNext = (CPVREpgInfoTag *) epg->InfoTagNext();
if (!epgNext)
continue;
CFileItemPtr entry(new CFileItem(*epgNext));
entry->SetLabel2(epgNext->Start().GetAsLocalizedTime("", false));
entry->m_strPath = channel->ChannelName();
entry->SetThumbnailImage(channel->IconPath());
results->Add(entry);
}
return results->Size() - iInitialSize;
}
示例5: GetEPGNext
int CPVREpgs::GetEPGNext(CFileItemList* results, bool bRadio)
{
CPVRChannels *channels = bRadio ? &PVRChannelsRadio : &PVRChannelsTV;
int iInitialSize = results->Size();
for (unsigned int iChannelPtr = 0; iChannelPtr < channels->size(); iChannelPtr++)
{
CPVRChannel *channel = channels->GetByIndex(iChannelPtr);
CPVREpg *epg = channel->GetEPG();
if (!epg->HasValidEntries() || epg->IsUpdateRunning())
continue;
const CPVREpgInfoTag *epgNext = epg->InfoTagNext();
if (!epgNext)
{
continue;
}
CFileItemPtr entry(new CFileItem(*epgNext));
entry->SetLabel2(epgNext->Start().GetAsLocalizedTime("", false));
entry->m_strPath = channel->ChannelName();
entry->SetThumbnailImage(channel->IconPath());
results->Add(entry);
}
return results->Size() - iInitialSize;
}
示例6: UpdateEpgForChannel
bool CGUIWindowPVRCommon::UpdateEpgForChannel(CFileItem *item)
{
CPVRChannel *channel = item->GetPVRChannelInfoTag();
CEpg *epg = channel->GetEPG();
if (!epg)
return false;
epg->ForceUpdate();
return true;
}
示例7: GetCurrentEpg
int CPVRManager::GetCurrentEpg(CFileItemList &results) const
{
int iReturn = -1;
CPVRChannel channel;
if (m_addons->GetPlayingChannel(channel))
iReturn = channel.GetEPG(results);
else
CLog::Log(LOGDEBUG,"PVRManager - %s - no current channel set", __FUNCTION__);
return iReturn;
}
示例8: Update
void CGUIDialogPVRGuideOSD::Update()
{
// lock our display, as this window is rendered from the player thread
g_graphicsContext.Lock();
m_viewControl.SetCurrentView(DEFAULT_VIEW_LIST);
// empty the list ready for population
Clear();
CPVRChannel CurrentChannel;
if (g_PVRManager.GetCurrentChannel(&CurrentChannel))
CurrentChannel.GetEPG(m_vecItems);
m_viewControl.SetItems(*m_vecItems);
g_graphicsContext.Unlock();
}
示例9: GetEPGAll
int CPVREpgContainer::GetEPGAll(CFileItemList* results, bool bRadio /* = false */)
{
int iInitialSize = results->Size();
const CPVRChannelGroup *group = CPVRManager::GetChannelGroups()->GetGroupAll(bRadio);
if (!group)
return -1;
CSingleLock lock(m_critSection);
for (unsigned int iChannelPtr = 0; iChannelPtr < group->Size(); iChannelPtr++)
{
CPVRChannel *channel = (CPVRChannel *) group->GetByIndex(iChannelPtr);
if (!channel)
continue;
channel->GetEPG(results);
}
return results->Size() - iInitialSize;
}
示例10: UpdateEpgEvent
void CPVRTimerInfoTag::UpdateEpgEvent(bool bClear /* = false */)
{
/* try to get the channel */
CPVRChannel *channel = (CPVRChannel *) CPVRManager::GetChannelGroups()->GetByUniqueID(m_iClientChannelUid, m_iClientID);
if (!channel)
return;
/* try to get the EPG table */
CPVREpg *epg = channel->GetEPG();
if (!epg)
return;
/* try to set the timer on the epg tag that matches */
m_EpgInfo = (CPVREpgInfoTag *) epg->InfoTagBetween(m_StartTime, m_StopTime);
if (!m_EpgInfo)
m_EpgInfo = (CPVREpgInfoTag *) epg->InfoTagAround(m_StartTime);
if (m_EpgInfo)
m_EpgInfo->SetTimer(bClear ? NULL : this);
}
示例11: UpdateEpgEvent
void CPVRTimerInfoTag::UpdateEpgEvent(bool bClear /* = false */)
{
CSingleLock lock(m_critSection);
if (bClear)
{
CEpgInfoTag *epgTag = GetEpgInfoTag();
if (epgTag)
epgTag->OnTimerDeleted();
}
else
{
/* already got an epg event set */
if (m_iEpgId != -1)
return;
/* try to get the channel */
CPVRChannel *channel = (CPVRChannel *) g_PVRChannelGroups->GetByUniqueID(m_iClientChannelUid, m_iClientId);
if (!channel)
return;
/* try to get the EPG table */
CEpg *epg = channel->GetEPG();
if (!epg)
return;
/* try to set the timer on the epg tag that matches with a 2 minute margin */
CEpgInfoTag *epgTag = (CEpgInfoTag *) epg->GetTagBetween(StartAsUTC() - CDateTimeSpan(0, 0, 2, 0), EndAsUTC() + CDateTimeSpan(0, 0, 2, 0));
if (!epgTag)
epgTag = (CEpgInfoTag *) epg->GetTagAround(StartAsUTC());
if (epgTag)
{
m_iEpgId = epgTag->m_iEpgId;
m_epgStart = epgTag->StartAsUTC();
m_genre = epgTag->Genre();
m_iGenreType = epgTag->GenreType();
m_iGenreSubType = epgTag->GenreSubType();
epgTag->SetTimer(this);
}
}
}
示例12: CreateChannelEpgs
bool CPVREpgContainer::CreateChannelEpgs(void)
{
for (int radio = 0; radio <= 1; radio++)
{
const CPVRChannelGroup *channels = CPVRManager::GetChannelGroups()->GetGroupAll(radio == 1);
for (unsigned int iChannelPtr = 0; iChannelPtr < channels->Size(); iChannelPtr++)
{
CPVRChannel *channel = (CPVRChannel *) channels->GetByIndex(iChannelPtr);
CEpg *epg = GetById(channel->ChannelID());
if (!epg)
channel->GetEPG();
else
{
channel->m_EPG = (CPVREpg *) epg;
epg->m_Channel = channel;
epg->m_bHasChannel = true;
}
}
}
return true;
}
示例13: UpdateData
void CGUIWindowPVRGuide::UpdateData(void)
{
CPVRChannel CurrentChannel;
CPVRManager::Get()->GetCurrentChannel(&CurrentChannel);
m_bUpdateRequired = false;
m_parent->m_vecItems->Clear();
if (m_iGuideView == GUIDE_VIEW_CHANNEL)
{
m_parent->m_guideGrid = NULL;
m_parent->m_viewControl.SetCurrentView(CONTROL_LIST_GUIDE_CHANNEL);
m_parent->SetLabel(m_iControlButton, g_localizeStrings.Get(19029));
m_parent->SetLabel(CONTROL_LABELGROUP, CurrentChannel.ChannelName().c_str());
if (CurrentChannel.GetEPG(m_parent->m_vecItems) == 0)
{
CFileItemPtr item;
item.reset(new CFileItem("pvr://guide/" + CurrentChannel.ChannelName() + "/empty.epg", false));
item->SetLabel(g_localizeStrings.Get(19028));
item->SetLabelPreformated(true);
m_parent->m_vecItems->Add(item);
}
m_parent->m_viewControl.SetItems(*m_parent->m_vecItems);
}
else if (m_iGuideView == GUIDE_VIEW_NOW)
{
m_parent->m_guideGrid = NULL;
m_parent->m_viewControl.SetCurrentView(CONTROL_LIST_GUIDE_NOW_NEXT);
m_parent->SetLabel(m_iControlButton, g_localizeStrings.Get(19029) + ": " + g_localizeStrings.Get(19030));
m_parent->SetLabel(CONTROL_LABELGROUP, g_localizeStrings.Get(19030));
if (CPVRManager::GetEpg()->GetEPGNow(m_parent->m_vecItems, CurrentChannel.IsRadio()) == 0)
{
CFileItemPtr item;
item.reset(new CFileItem("pvr://guide/now/empty.epg", false));
item->SetLabel(g_localizeStrings.Get(19028));
item->SetLabelPreformated(true);
m_parent->m_vecItems->Add(item);
}
m_parent->m_viewControl.SetItems(*m_parent->m_vecItems);
}
else if (m_iGuideView == GUIDE_VIEW_NEXT)
{
m_parent->m_guideGrid = NULL;
m_parent->m_viewControl.SetCurrentView(CONTROL_LIST_GUIDE_NOW_NEXT);
m_parent->SetLabel(m_iControlButton, g_localizeStrings.Get(19029) + ": " + g_localizeStrings.Get(19031));
m_parent->SetLabel(CONTROL_LABELGROUP, g_localizeStrings.Get(19031));
if (CPVRManager::GetEpg()->GetEPGNext(m_parent->m_vecItems, CurrentChannel.IsRadio()) == 0)
{
CFileItemPtr item;
item.reset(new CFileItem("pvr://guide/next/empty.epg", false));
item->SetLabel(g_localizeStrings.Get(19028));
item->SetLabelPreformated(true);
m_parent->m_vecItems->Add(item);
}
m_parent->m_viewControl.SetItems(*m_parent->m_vecItems);
}
else if (m_iGuideView == GUIDE_VIEW_TIMELINE)
{
m_parent->SetLabel(m_iControlButton, g_localizeStrings.Get(19029) + ": " + g_localizeStrings.Get(19032));
m_parent->SetLabel(CONTROL_LABELGROUP, g_localizeStrings.Get(19032));
if (CPVRManager::GetEpg()->GetEPGAll(m_parent->m_vecItems, CurrentChannel.IsRadio()) > 0)
{
CDateTime now = CDateTime::GetCurrentDateTime();
CDateTime m_gridStart = now - CDateTimeSpan(0, 0, 0, (now.GetMinute() % 30) * 60 + now.GetSecond()) - CDateTimeSpan(0, g_guiSettings.GetInt("epg.lingertime") / 60, g_guiSettings.GetInt("epg.lingertime") % 60, 0);
CDateTime m_gridEnd = m_gridStart + CDateTimeSpan(g_guiSettings.GetInt("epg.daystodisplay"), 0, 0, 0);
m_parent->m_guideGrid = (CGUIEPGGridContainer*) m_parent->GetControl(CONTROL_LIST_TIMELINE);
if (m_parent->m_guideGrid)
{
m_parent->m_guideGrid->SetStartEnd(m_gridStart, m_gridEnd);
m_parent->m_viewControl.SetCurrentView(CONTROL_LIST_TIMELINE);
}
// m_viewControl.SetSelectedItem(m_iSelected_GUIDE);
}
}
m_parent->SetLabel(CONTROL_LABELHEADER, g_localizeStrings.Get(19029));
UpdateButtons();
}
示例14: Update
int CPVRTimers::Update()
{
CSingleLock lock(m_critSection);
CLog::Log(LOGDEBUG, "PVRTimers - %s - updating timers",
__FUNCTION__);
int iCurSize = size();
/* clear channel timers */
for (unsigned int iTimerPtr = 0; iTimerPtr < size(); iTimerPtr++)
{
CPVRTimerInfoTag *timerTag = &at(iTimerPtr);
if (!timerTag || !timerTag->Active())
continue;
CPVREpgInfoTag *epgTag = (CPVREpgInfoTag *)timerTag->EpgInfoTag();
if (!epgTag)
continue;
epgTag->SetTimer(NULL);
}
/* clear timers */
clear();
/* get all timers from the clients */
CLIENTMAP *clients = g_PVRManager.Clients();
CLIENTMAPITR itr = clients->begin();
while (itr != clients->end())
{
if (g_PVRManager.GetClientProps((*itr).second->GetID())->SupportTimers)
{
if ((*itr).second->GetNumTimers() > 0)
{
(*itr).second->GetAllTimers(this);
}
}
itr++;
}
//XXX
g_PVRManager.UpdateRecordingsCache();
/* set channel timers */
for (unsigned int ptr = 0; ptr < size(); ptr++)
{
/* get the timer tag */
CPVRTimerInfoTag *timerTag = &at(ptr);
if (!timerTag || !timerTag->Active())
continue;
/* try to get the channel */
CPVRChannel *channel = CPVRChannels::GetByClientFromAll(timerTag->Number(), timerTag->ClientID());
if (!channel)
continue;
/* try to get the EPG */
CPVREpg *epg = channel->GetEPG();
if (!epg)
continue;
/* try to set the timer on the epg tag that matches */
CPVREpgInfoTag *epgTag = (CPVREpgInfoTag *) epg->InfoTagBetween(timerTag->Start(), timerTag->Stop());
if (epgTag)
epgTag->SetTimer(timerTag);
}
return size() - iCurSize;
}