本文整理汇总了C++中CPVRTimerInfoTag::UpdateChannel方法的典型用法代码示例。如果您正苦于以下问题:C++ CPVRTimerInfoTag::UpdateChannel方法的具体用法?C++ CPVRTimerInfoTag::UpdateChannel怎么用?C++ CPVRTimerInfoTag::UpdateChannel使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CPVRTimerInfoTag
的用法示例。
在下文中一共展示了CPVRTimerInfoTag::UpdateChannel方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnSettingChanged
void CGUIDialogPVRTimerSettings::OnSettingChanged(const CSetting *setting)
{
if (setting == NULL)
return;
CGUIDialogSettingsManualBase::OnSettingChanged(setting);
CPVRTimerInfoTag* tag = m_timerItem->GetPVRTimerInfoTag();
if (tag == NULL)
return;
const std::string &settingId = setting->GetId();
if (settingId == SETTING_TMR_ACTIVE)
m_bTimerActive = static_cast<const CSettingBool*>(setting)->GetValue();
if (settingId == SETTING_TMR_RADIO || settingId == SETTING_TMR_CHNAME_TV || settingId == SETTING_TMR_CHNAME_RADIO)
{
if (settingId == SETTING_TMR_RADIO)
{
tag->m_bIsRadio = static_cast<const CSettingBool*>(setting)->GetValue();
m_selectedChannelEntry = 0;
}
else
m_selectedChannelEntry = static_cast<const CSettingInt*>(setting)->GetValue();
std::map<std::pair<bool, int>, int>::iterator itc = m_channelEntries.find(std::make_pair(tag->m_bIsRadio, m_selectedChannelEntry));
if (itc != m_channelEntries.end())
{
CPVRChannelPtr channel = g_PVRChannelGroups->GetChannelById(itc->second);
if (channel)
{
tag->m_iClientChannelUid = channel->UniqueID();
tag->m_iClientId = channel->ClientID();
tag->m_bIsRadio = channel->IsRadio();
tag->m_iChannelNumber = channel->ChannelNumber();
}
else
{
tag->m_iClientChannelUid = PVR_VIRTUAL_CHANNEL_UID;
tag->m_iClientId = PVR_VIRTUAL_CLIENT_ID;
tag->m_iChannelNumber = 0;
}
// Update channel pointer from above values
tag->UpdateChannel();
}
}
else if (settingId == SETTING_TMR_DAY)
{
m_tmp_day = static_cast<const CSettingInt*>(setting)->GetValue();
if (m_tmp_day <= 10)
SetTimerFromWeekdaySetting(*tag);
else
{
CDateTime time = CDateTime::GetCurrentDateTime();
CDateTime timestart = m_timerStartTime;
CDateTime timestop = m_timerEndTime;
int m_tmp_diff;
// get diffence of timer in days between today and timer start date
tm time_cur; time.GetAsTm(time_cur);
tm time_tmr; timestart.GetAsTm(time_tmr);
m_tmp_diff = time_tmr.tm_yday - time_cur.tm_yday;
if (time_tmr.tm_yday - time_cur.tm_yday < 0)
m_tmp_diff = 365;
CDateTime newStart = timestart + CDateTimeSpan(m_tmp_day - 11 - m_tmp_diff, 0, 0, 0);
CDateTime newEnd = timestop + CDateTimeSpan(m_tmp_day - 11 - m_tmp_diff, 0, 0, 0);
// add a day to end time if end time is before start time
// TODO: this should be removed after separate end date control was added
if (newEnd < newStart)
newEnd += CDateTimeSpan(1, 0, 0, 0);
tag->SetStartFromLocalTime(newStart);
tag->SetEndFromLocalTime(newEnd);
tag->m_bIsRepeating = false;
tag->m_iWeekdays = 0;
}
}
else if (settingId == SETTING_TMR_PRIORITY)
tag->m_iPriority = static_cast<const CSettingInt*>(setting)->GetValue();
else if (settingId == SETTING_TMR_LIFETIME)
tag->m_iLifetime = static_cast<const CSettingInt*>(setting)->GetValue();
else if (settingId == SETTING_TMR_FIRST_DAY)
{
m_tmp_iFirstDay = static_cast<const CSettingInt*>(setting)->GetValue();
CDateTime newFirstDay;
if (m_tmp_iFirstDay > 0)
newFirstDay = CDateTime::GetCurrentDateTime() + CDateTimeSpan(m_tmp_iFirstDay - 1, 0, 0, 0);
tag->SetFirstDayFromLocalTime(newFirstDay);
}
else if (settingId == SETTING_TMR_NAME)
tag->m_strTitle = static_cast<const CSettingString*>(setting)->GetValue();
else if (settingId == SETTING_TMR_DIR)
tag->m_strDirectory = static_cast<const CSettingString*>(setting)->GetValue();
//.........这里部分代码省略.........