本文整理汇总了C++中CEpgPtr::GetTagBetween方法的典型用法代码示例。如果您正苦于以下问题:C++ CEpgPtr::GetTagBetween方法的具体用法?C++ CEpgPtr::GetTagBetween怎么用?C++ CEpgPtr::GetTagBetween使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CEpgPtr
的用法示例。
在下文中一共展示了CEpgPtr::GetTagBetween方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetEpgInfoTag
CEpgInfoTagPtr CPVRTimerInfoTag::GetEpgInfoTag(bool bCreate /* = true */) const
{
if (!m_epgTag && bCreate)
{
CPVRChannelPtr channel(g_PVRChannelGroups->GetByUniqueID(m_iClientChannelUid, m_iClientId));
if (channel)
{
const CEpgPtr epg(channel->GetEPG());
if (epg)
{
CSingleLock lock(m_critSection);
if (!m_epgTag)
{
if (m_iEpgUid != EPG_TAG_INVALID_UID)
{
m_epgTag = epg->GetTagByBroadcastId(m_iEpgUid);
}
else if (!m_bStartAnyTime && !m_bEndAnyTime)
{
// if no epg uid present, try to find a tag according to timer's start/end time
m_epgTag = epg->GetTagBetween(StartAsUTC() - CDateTimeSpan(0, 0, 2, 0), EndAsUTC() + CDateTimeSpan(0, 0, 2, 0));
}
if (m_epgTag)
m_epgTag->SetTimer(g_PVRTimers->GetById(m_iTimerId));
}
}
}
}
return m_epgTag;
}
示例2: UpdateEpgEvent
void CPVRTimers::UpdateEpgEvent(CPVRTimerInfoTagPtr timer)
{
CSingleLock lock(timer->m_critSection);
/* repeating timers have no epg event */
if (timer->IsRepeating())
return;
/* already got an epg event set */
if (timer->m_epgTag)
return;
/* try to get the channel */
CPVRChannelPtr channel = g_PVRChannelGroups->GetByUniqueID(timer->m_iClientChannelUid, timer->m_iClientId);
if (!channel)
return;
/* try to get the EPG table */
CEpgPtr epg = channel->GetEPG();
if (!epg)
return;
/* try to set the timer on the epg tag that matches with a 2 minute margin */
CEpgInfoTagPtr epgTag = epg->GetTagBetween(timer->StartAsUTC() - CDateTimeSpan(0, 0, 2, 0), timer->EndAsUTC() + CDateTimeSpan(0, 0, 2, 0));
if (!epgTag)
epgTag = epg->GetTagAround(timer->StartAsUTC());
if (epgTag)
{
timer->m_epgTag = epgTag;
timer->m_genre = epgTag->Genre();
timer->m_iGenreType = epgTag->GenreType();
timer->m_iGenreSubType = epgTag->GenreSubType();
epgTag->SetTimer(timer);
}
}