本文整理汇总了C++中CPVRTimerInfoTag::StartAsUTC方法的典型用法代码示例。如果您正苦于以下问题:C++ CPVRTimerInfoTag::StartAsUTC方法的具体用法?C++ CPVRTimerInfoTag::StartAsUTC怎么用?C++ CPVRTimerInfoTag::StartAsUTC使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CPVRTimerInfoTag
的用法示例。
在下文中一共展示了CPVRTimerInfoTag::StartAsUTC方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UpdateFromClient
bool CPVRTimers::UpdateFromClient(const CPVRTimerInfoTag &timer)
{
CSingleLock lock(m_critSection);
CPVRTimerInfoTagPtr tag = GetByClient(timer.m_iClientId, timer.m_iClientIndex);
if (!tag)
{
tag = CPVRTimerInfoTagPtr(new CPVRTimerInfoTag());
VecTimerInfoTag* addEntry = NULL;
MapTags::iterator itr = m_tags.find(timer.StartAsUTC());
if (itr == m_tags.end())
{
addEntry = new VecTimerInfoTag;
m_tags.insert(std::make_pair(timer.StartAsUTC(), addEntry));
}
else
{
addEntry = itr->second;
}
tag->m_iTimerId = ++m_iLastId;
addEntry->push_back(tag);
}
UpdateEpgEvent(tag);
return tag->UpdateEntry(timer);
}
示例2: UpdateFromClient
bool CPVRTimers::UpdateFromClient(const CPVRTimerInfoTag &timer)
{
CSingleLock lock(m_critSection);
CPVRTimerInfoTagPtr tag = GetByClient(timer.m_iClientId, timer.m_iClientIndex);
if (!tag)
{
tag = CPVRTimerInfoTagPtr(new CPVRTimerInfoTag());
vector<CPVRTimerInfoTagPtr>* addEntry = NULL;
map<CDateTime, vector<CPVRTimerInfoTagPtr>* >::iterator itr = m_tags.find(timer.StartAsUTC());
if (itr == m_tags.end())
{
addEntry = new vector<CPVRTimerInfoTagPtr>;
m_tags.insert(make_pair(timer.StartAsUTC(), addEntry));
}
else
{
addEntry = itr->second;
}
addEntry->push_back(tag);
}
UpdateEpgEvent(tag);
return tag->UpdateEntry(timer);
}
示例3: Compare
int CPVRTimerInfoTag::Compare(const CPVRTimerInfoTag &timer) const
{
int iTimerDelta = 0;
if (StartAsUTC() != timer.StartAsUTC())
{
CDateTimeSpan timerDelta = StartAsUTC() - timer.StartAsUTC();
iTimerDelta = (timerDelta.GetSeconds() + timerDelta.GetMinutes() * 60 + timerDelta.GetHours() * 3600 + timerDelta.GetDays() * 86400);
}
/* if the start times are equal, compare the priority of the timers */
return iTimerDelta == 0 ?
timer.m_iPriority - m_iPriority :
iTimerDelta;
}
示例4: WriteClientTimerInfo
/*!
* @brief Copy over timer info from xbmcTimer to addonTimer.
* @param xbmcTimer The timer on XBMC's side.
* @param addonTimer The timer on the addon's side.
*/
void CPVRClient::WriteClientTimerInfo(const CPVRTimerInfoTag &xbmcTimer, PVR_TIMER &addonTimer)
{
time_t start, end, firstDay;
xbmcTimer.StartAsUTC().GetAsTime(start);
xbmcTimer.EndAsUTC().GetAsTime(end);
xbmcTimer.FirstDayAsUTC().GetAsTime(firstDay);
CEpgInfoTagPtr epgTag = xbmcTimer.GetEpgInfoTag();
memset(&addonTimer, 0, sizeof(addonTimer));
addonTimer.iClientIndex = xbmcTimer.m_iClientIndex;
addonTimer.state = xbmcTimer.m_state;
addonTimer.iClientIndex = xbmcTimer.m_iClientIndex;
addonTimer.iClientChannelUid = xbmcTimer.m_iClientChannelUid;
strncpy(addonTimer.strTitle, xbmcTimer.m_strTitle.c_str(), sizeof(addonTimer.strTitle) - 1);
strncpy(addonTimer.strDirectory, xbmcTimer.m_strDirectory.c_str(), sizeof(addonTimer.strDirectory) - 1);
addonTimer.iPriority = xbmcTimer.m_iPriority;
addonTimer.iLifetime = xbmcTimer.m_iLifetime;
addonTimer.bIsRepeating = xbmcTimer.m_bIsRepeating;
addonTimer.iWeekdays = xbmcTimer.m_iWeekdays;
addonTimer.startTime = start - g_advancedSettings.m_iPVRTimeCorrection;
addonTimer.endTime = end - g_advancedSettings.m_iPVRTimeCorrection;
addonTimer.firstDay = firstDay - g_advancedSettings.m_iPVRTimeCorrection;
addonTimer.iEpgUid = epgTag ? epgTag->UniqueBroadcastID() : -1;
strncpy(addonTimer.strSummary, xbmcTimer.m_strSummary.c_str(), sizeof(addonTimer.strSummary) - 1);
addonTimer.iMarginStart = xbmcTimer.m_iMarginStart;
addonTimer.iMarginEnd = xbmcTimer.m_iMarginEnd;
addonTimer.iGenreType = xbmcTimer.m_iGenreType;
addonTimer.iGenreSubType = xbmcTimer.m_iGenreSubType;
}
示例5: FilterTimers
int EpgSearchFilter::FilterTimers(CFileItemList &results)
{
int iRemoved(0);
if (!g_PVRManager.IsStarted())
return iRemoved;
vector<CPVRTimerInfoTag *> timers;
g_PVRTimers->GetActiveTimers(&timers);
// TODO not thread safe and inefficient!
for (unsigned int iTimerPtr = 0; iTimerPtr < timers.size(); iTimerPtr++)
{
CPVRTimerInfoTag *timer = timers.at(iTimerPtr);
if (!timer)
continue;
for (int iResultPtr = 0; iResultPtr < results.Size(); iResultPtr++)
{
const CEpgInfoTag *epgentry = results.Get(iResultPtr)->GetEPGInfoTag();
if (!epgentry ||
*epgentry->ChannelTag() != *timer->m_channel ||
epgentry->StartAsUTC() < timer->StartAsUTC() ||
epgentry->EndAsUTC() > timer->EndAsUTC())
continue;
results.Remove(iResultPtr);
iResultPtr--;
++iRemoved;
}
}
return iRemoved;
}
示例6: lock
CPVRTimerInfoTag *CPVRTimers::GetMatch(const CEpgInfoTag *Epg)
{
CPVRTimerInfoTag *returnTag = NULL;
CSingleLock lock(m_critSection);
for (unsigned int ptr = 0; ptr < size(); ptr++)
{
CPVRTimerInfoTag *timer = at(ptr);
if (!Epg || !Epg->GetTable() || !Epg->GetTable()->Channel())
continue;
const CPVRChannel *channel = Epg->GetTable()->Channel();
if (timer->ChannelNumber() != channel->ChannelNumber()
|| timer->m_bIsRadio != channel->IsRadio())
continue;
if (timer->StartAsUTC() > Epg->StartAsUTC() || timer->EndAsUTC() < Epg->EndAsUTC())
continue;
returnTag = timer;
break;
}
return returnTag;
}
示例7: GetMatch
CFileItemPtr CPVRTimers::GetMatch(const CEpgInfoTag *Epg)
{
CSingleLock lock(m_critSection);
for (map<CDateTime, vector<CPVRTimerInfoTag *>* >::iterator it = m_tags.begin(); it != m_tags.end(); it++)
{
for (unsigned int iTimerPtr = 0; iTimerPtr < it->second->size(); iTimerPtr++)
{
CPVRTimerInfoTag *timer = it->second->at(iTimerPtr);
CPVRChannelPtr channel;
if (Epg)
channel = Epg->ChannelTag();
if (!channel)
continue;
if (timer->ChannelNumber() != channel->ChannelNumber()
|| timer->m_bIsRadio != channel->IsRadio())
continue;
if (timer->StartAsUTC() > Epg->StartAsUTC() || timer->EndAsUTC() < Epg->EndAsUTC())
continue;
CFileItemPtr fileItem(new CFileItem(*timer));
return fileItem;
}
}
CFileItemPtr fileItem;
return fileItem;
}
示例8: FilterTimers
int EpgSearchFilter::FilterTimers(CFileItemList &results)
{
int iRemoved(0);
if (!g_PVRManager.IsStarted())
return iRemoved;
vector<CFileItemPtr> timers = g_PVRTimers->GetActiveTimers();
// TODO inefficient!
for (unsigned int iTimerPtr = 0; iTimerPtr < timers.size(); iTimerPtr++)
{
CFileItemPtr fileItem = timers.at(iTimerPtr);
if (!fileItem || !fileItem->HasPVRTimerInfoTag())
continue;
CPVRTimerInfoTag *timer = fileItem->GetPVRTimerInfoTag();
if (!timer)
continue;
for (int iResultPtr = 0; iResultPtr < results.Size(); iResultPtr++)
{
const CEpgInfoTagPtr epgentry(results.Get(iResultPtr)->GetEPGInfoTag());
if (!epgentry ||
*epgentry->ChannelTag() != *timer->ChannelTag() ||
epgentry->StartAsUTC() < timer->StartAsUTC() ||
epgentry->EndAsUTC() > timer->EndAsUTC())
continue;
results.Remove(iResultPtr);
iResultPtr--;
++iRemoved;
}
}
return iRemoved;
}
示例9: UpdateEntries
bool CPVRTimers::UpdateEntries(CPVRTimers *timers)
{
bool bChanged(false);
bool bAddedOrDeleted(false);
vector<CStdString> timerNotifications;
CSingleLock lock(m_critSection);
/* go through the timer list and check for updated or new timers */
for (map<CDateTime, vector<CPVRTimerInfoTag *>* >::iterator it = timers->m_tags.begin(); it != timers->m_tags.end(); it++)
{
vector<CPVRTimerInfoTag*> *entry = it->second;
for (unsigned int iTagPtr = 0; iTagPtr < entry->size(); iTagPtr++)
{
const CPVRTimerInfoTag *timer = entry->at(iTagPtr);
/* check if this timer is present in this container */
CPVRTimerInfoTag *existingTimer = (CPVRTimerInfoTag *) GetByClient(timer->m_iClientId, timer->m_iClientIndex);
if (existingTimer)
{
/* if it's present, update the current tag */
bool bStateChanged(existingTimer->m_state != timer->m_state);
if (existingTimer->UpdateEntry(*timer))
{
bChanged = true;
if (bStateChanged && g_PVRManager.IsStarted())
{
CStdString strMessage;
existingTimer->GetNotificationText(strMessage);
timerNotifications.push_back(strMessage);
}
CLog::Log(LOGDEBUG,"PVRTimers - %s - updated timer %d on client %d",
__FUNCTION__, timer->m_iClientIndex, timer->m_iClientId);
}
}
else
{
/* new timer */
CPVRTimerInfoTag *newTimer = new CPVRTimerInfoTag;
newTimer->UpdateEntry(*timer);
vector<CPVRTimerInfoTag *>* addEntry = NULL;
map<CDateTime, vector<CPVRTimerInfoTag *>* >::iterator itr = m_tags.find(newTimer->StartAsUTC());
if (itr == m_tags.end())
{
addEntry = new vector<CPVRTimerInfoTag *>;
m_tags.insert(make_pair(newTimer->StartAsUTC(), addEntry));
}
else
{
addEntry = itr->second;
}
addEntry->push_back(newTimer);
bChanged = true;
bAddedOrDeleted = true;
if (g_PVRManager.IsStarted())
{
CStdString strMessage;
newTimer->GetNotificationText(strMessage);
timerNotifications.push_back(strMessage);
}
CLog::Log(LOGDEBUG,"PVRTimers - %s - added timer %d on client %d",
__FUNCTION__, timer->m_iClientIndex, timer->m_iClientId);
}
}
}
/* to collect timer with changed starting time */
vector<CPVRTimerInfoTag *> timersToMove;
/* check for deleted timers */
for (map<CDateTime, vector<CPVRTimerInfoTag *>* >::iterator it = m_tags.begin(); it != m_tags.end();)
{
vector<CPVRTimerInfoTag*> *entry = it->second;
for (int iTagPtr = entry->size() - 1; iTagPtr >= 0; iTagPtr--)
{
CPVRTimerInfoTag *timer = entry->at(iTagPtr);
if (!timer)
continue;
if (timers->GetByClient(timer->m_iClientId, timer->m_iClientIndex) == NULL)
{
/* timer was not found */
CLog::Log(LOGDEBUG,"PVRTimers - %s - deleted timer %d on client %d",
__FUNCTION__, timer->m_iClientIndex, timer->m_iClientId);
if (g_PVRManager.IsStarted())
{
CStdString strMessage;
strMessage.Format("%s: '%s'", (timer->EndAsUTC() <= CDateTime::GetCurrentDateTime().GetAsUTCDateTime()) ? g_localizeStrings.Get(19227) : g_localizeStrings.Get(19228), timer->m_strTitle.c_str());
timerNotifications.push_back(strMessage);
}
delete entry->at(iTagPtr);
entry->erase(entry->begin() + iTagPtr);
//.........这里部分代码省略.........