本文整理汇总了C++中CPVRTimerInfoTag类的典型用法代码示例。如果您正苦于以下问题:C++ CPVRTimerInfoTag类的具体用法?C++ CPVRTimerInfoTag怎么用?C++ CPVRTimerInfoTag使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CPVRTimerInfoTag类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: at
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();
}
示例2: CreateSettings
void CGUIDialogPVRTimerSettings::CreateSettings()
{
CPVRTimerInfoTag* tag = m_timerItem->GetPVRTimerInfoTag();
// clear out any old settings
m_settings.clear();
// create our settings controls
AddBool(CONTROL_TMR_ACTIVE, 19074, &tag->m_bIsActive);
AddButton(CONTROL_TMR_NAME, 19075, &tag->m_strTitle, true);
AddBool(CONTROL_TMR_RADIO, 19077, &tag->m_bIsRadio);
/// Channel names
{
// For TV
CFileItemList channelslist_tv;
SETTINGSTRINGS channelstrings_tv;
CPVRManager::GetChannelGroups()->GetGroupAll(false)->GetMembers(&channelslist_tv);
channelstrings_tv.push_back("0 dummy");
for (int i = 0; i < channelslist_tv.Size(); i++)
{
CStdString string;
CFileItemPtr item = channelslist_tv[i];
string.Format("%i %s", item->GetPVRChannelInfoTag()->ChannelNumber(), item->GetPVRChannelInfoTag()->ChannelName().c_str());
channelstrings_tv.push_back(string);
}
AddSpin(CONTROL_TMR_CHNAME_TV, 19078, &tag->m_iChannelNumber, channelstrings_tv.size(), channelstrings_tv);
EnableSettings(CONTROL_TMR_CHNAME_TV, !tag->m_bIsRadio);
// For Radio
CFileItemList channelslist_radio;
SETTINGSTRINGS channelstrings_radio;
CPVRManager::GetChannelGroups()->GetGroupAll(true)->GetMembers(&channelslist_radio);
channelstrings_radio.push_back("0 dummy");
for (int i = 0; i < channelslist_radio.Size(); i++)
{
CStdString string;
CFileItemPtr item = channelslist_radio[i];
string.Format("%i %s", item->GetPVRChannelInfoTag()->ChannelNumber(), item->GetPVRChannelInfoTag()->ChannelName().c_str());
channelstrings_radio.push_back(string);
}
AddSpin(CONTROL_TMR_CHNAME_RADIO, 19078, &tag->m_iChannelNumber, channelstrings_radio.size(), channelstrings_radio);
EnableSettings(CONTROL_TMR_CHNAME_RADIO, tag->m_bIsRadio);
}
/// Day
{
SETTINGSTRINGS daystrings;
tm time_cur;
tm time_tmr;
daystrings.push_back(g_localizeStrings.Get(19086));
daystrings.push_back(g_localizeStrings.Get(19087));
daystrings.push_back(g_localizeStrings.Get(19088));
daystrings.push_back(g_localizeStrings.Get(19089));
daystrings.push_back(g_localizeStrings.Get(19090));
daystrings.push_back(g_localizeStrings.Get(19091));
daystrings.push_back(g_localizeStrings.Get(19092));
daystrings.push_back(g_localizeStrings.Get(19093));
daystrings.push_back(g_localizeStrings.Get(19094));
daystrings.push_back(g_localizeStrings.Get(19095));
daystrings.push_back(g_localizeStrings.Get(19096));
CDateTime time = CDateTime::GetCurrentDateTime();
CDateTime timestart = tag->StartAsLocalTime();
/* get diffence of timer in days between today and timer start date */
time.GetAsTm(time_cur);
timestart.GetAsTm(time_tmr);
if (time_tmr.tm_yday - time_cur.tm_yday >= 0)
m_tmp_day += time_tmr.tm_yday - time_cur.tm_yday;
else
m_tmp_day += time_tmr.tm_yday - time_cur.tm_yday + 365;
for (int i = 1; i < 365; ++i)
{
CStdString string = time.GetAsLocalizedDate();
daystrings.push_back(string);
time += CDateTimeSpan(1, 0, 0, 0);
}
if (tag->m_bIsRepeating)
{
if (tag->m_iWeekdays == 0x01)
m_tmp_day = 0;
else if (tag->m_iWeekdays == 0x02)
m_tmp_day = 1;
else if (tag->m_iWeekdays == 0x04)
m_tmp_day = 2;
else if (tag->m_iWeekdays == 0x08)
m_tmp_day = 3;
else if (tag->m_iWeekdays == 0x10)
m_tmp_day = 4;
else if (tag->m_iWeekdays == 0x20)
//.........这里部分代码省略.........
示例3: Timer
CEpgInfoTag::~CEpgInfoTag()
{
CPVRTimerInfoTag* tag = Timer();
if (tag)
tag->OnEpgTagDeleted();
}
示例4: OnSettingChanged
void CGUIDialogPVRTimerSettings::OnSettingChanged(SettingInfo &setting)
{
CPVRTimerInfoTag* tag = m_timerItem->GetPVRTimerInfoTag();
if (setting.id == CONTROL_TMR_NAME)
{
if (CGUIDialogKeyboard::ShowAndGetInput(tag->m_strTitle, g_localizeStrings.Get(19097), false))
{
UpdateSetting(CONTROL_TMR_NAME);
}
}
else if (setting.id == CONTROL_TMR_RADIO)
{
const CPVRChannel* channeltag = NULL;
if (!tag->m_bIsRadio)
{
EnableSettings(CONTROL_TMR_CHNAME_TV, true);
EnableSettings(CONTROL_TMR_CHNAME_RADIO, false);
channeltag = ((CPVRChannelGroup *) CPVRManager::GetChannelGroups()->GetGroupAll(false))->GetByChannelNumber(tag->m_iChannelNumber);
}
else
{
EnableSettings(CONTROL_TMR_CHNAME_TV, false);
EnableSettings(CONTROL_TMR_CHNAME_RADIO, true);
channeltag = ((CPVRChannelGroup *) CPVRManager::GetChannelGroups()->GetGroupAll(true))->GetByChannelNumber(tag->m_iChannelNumber);
}
if (channeltag)
{
tag->m_iClientChannelUid = channeltag->UniqueID();
tag->m_iClientId = channeltag->ClientID();
tag->m_bIsRadio = channeltag->IsRadio();
tag->m_iChannelNumber = channeltag->ChannelNumber();
}
}
else if (setting.id == CONTROL_TMR_CHNAME_TV || setting.id == CONTROL_TMR_CHNAME_RADIO)
{
const CPVRChannel* channeltag = ((CPVRChannelGroup *) CPVRManager::GetChannelGroups()->GetGroupAll(tag->m_bIsRadio))->GetByChannelNumber(tag->m_iChannelNumber);
if (channeltag)
{
tag->m_iClientChannelUid = channeltag->UniqueID();
tag->m_iClientId = channeltag->ClientID();
tag->m_bIsRadio = channeltag->IsRadio();
tag->m_iChannelNumber = channeltag->ChannelNumber();
}
}
else if (setting.id == CONTROL_TMR_DAY && m_tmp_day > 10)
{
CDateTime time = CDateTime::GetCurrentDateTime();
CDateTime timestart = timerStartTime;
CDateTime timestop = timerEndTime;
int m_tmp_diff;
tm time_cur;
tm time_tmr;
/* get diffence of timer in days between today and timer start date */
time.GetAsTm(time_cur);
timestart.GetAsTm(time_tmr);
if (time_tmr.tm_yday - time_cur.tm_yday >= 0)
m_tmp_diff = time_tmr.tm_yday - time_cur.tm_yday;
else
m_tmp_diff = time_tmr.tm_yday - time_cur.tm_yday + 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);
tag->SetStartFromLocalTime(newStart);
tag->SetEndFromLocalTime(newEnd);
EnableSettings(CONTROL_TMR_FIRST_DAY, false);
tag->m_bIsRepeating = false;
tag->m_iWeekdays = 0;
}
else if (setting.id == CONTROL_TMR_DAY && m_tmp_day <= 10)
{
EnableSettings(CONTROL_TMR_FIRST_DAY, true);
tag->m_bIsRepeating = true;
if (m_tmp_day == 0)
tag->m_iWeekdays = 0x01;
else if (m_tmp_day == 1)
tag->m_iWeekdays = 0x02;
else if (m_tmp_day == 2)
tag->m_iWeekdays = 0x04;
else if (m_tmp_day == 3)
tag->m_iWeekdays = 0x08;
else if (m_tmp_day == 4)
tag->m_iWeekdays = 0x10;
else if (m_tmp_day == 5)
tag->m_iWeekdays = 0x20;
else if (m_tmp_day == 6)
tag->m_iWeekdays = 0x40;
else if (m_tmp_day == 7)
tag->m_iWeekdays = 0x1F;
else if (m_tmp_day == 8)
tag->m_iWeekdays = 0x3F;
else if (m_tmp_day == 9)
tag->m_iWeekdays = 0x7F;
//.........这里部分代码省略.........
示例5: 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 */
CPVRChannelPtr channel = tag.ChannelTag();
if (!channel)
{
CLog::Log(LOGERROR, "%s - no channel set", __FUNCTION__);
delete newTag;
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__);
delete newTag;
return NULL;
}
/* set the timer data */
CDateTime newStart = tag.StartAsUTC();
CDateTime newEnd = tag.EndAsUTC();
newTag->m_iClientIndex = -1;
newTag->m_strTitle = tag.Title().empty() ? 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->m_iGenreType = tag.GenreType();
newTag->m_iGenreSubType = tag.GenreSubType();
newTag->m_channel = channel;
newTag->SetStartFromUTC(newStart);
newTag->SetEndFromUTC(newEnd);
if (tag.Plot().empty())
{
newTag->m_strSummary= StringUtils::Format("%s %s %s %s %s",
newTag->StartAsLocalTime().GetAsLocalizedDate().c_str(),
g_localizeStrings.Get(19159).c_str(),
newTag->StartAsLocalTime().GetAsLocalizedTime(StringUtils::EmptyString, false).c_str(),
g_localizeStrings.Get(19160).c_str(),
newTag->EndAsLocalTime().GetAsLocalizedTime(StringUtils::EmptyString, false).c_str());
}
else
{
newTag->m_strSummary = tag.Plot();
}
newTag->m_epgTag = g_EpgContainer.GetById(tag.EpgID())->GetTag(tag.StartAsUTC());
/* unused only for reference */
newTag->m_strFileNameAndPath = "pvr://timers/new";
return newTag;
}
示例6: 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();
//.........这里部分代码省略.........
示例7: AddCategory
void CGUIDialogPVRTimerSettings::InitializeSettings()
{
CGUIDialogSettingsManualBase::InitializeSettings();
CSettingCategory *category = AddCategory("pvrtimersettings", -1);
if (category == NULL)
{
CLog::Log(LOGERROR, "CGUIDialogPVRTimerSettings: unable to setup settings");
return;
}
CSettingGroup *group = AddGroup(category);
if (group == NULL)
{
CLog::Log(LOGERROR, "CGUIDialogPVRTimerSettings: unable to setup settings");
return;
}
// add a condition
m_settingsManager->AddCondition("IsTimerDayRepeating", IsTimerDayRepeating);
CPVRTimerInfoTag* tag = m_timerItem->GetPVRTimerInfoTag();
m_selectedChannelEntry = 0;
m_channelEntries.clear();
m_bTimerActive = tag->IsActive();
AddToggle(group, SETTING_TMR_ACTIVE, 19074, 0, m_bTimerActive);
AddEdit(group, SETTING_TMR_NAME, 19075, 0, tag->m_strTitle, false, false, 19097);
if (tag->SupportsFolders())
AddEdit(group, SETTING_TMR_DIR, 19076, 0, tag->m_strDirectory, true, false, 19104);
AddToggle(group, SETTING_TMR_RADIO, 19077, 0, tag->m_bIsRadio);
/// Channel names
{
// For TV
AddChannelNames(group, false);
// For Radio
AddChannelNames(group, true);
}
/// Day
{
// get diffence of timer in days between today and timer start date
tm time_cur; CDateTime::GetCurrentDateTime().GetAsTm(time_cur);
tm time_tmr; tag->StartAsLocalTime().GetAsTm(time_tmr);
m_tmp_day += time_tmr.tm_yday - time_cur.tm_yday;
if (time_tmr.tm_yday - time_cur.tm_yday < 0)
m_tmp_day += 365;
SetWeekdaySettingFromTimer(*tag);
AddSpinner(group, SETTING_TMR_DAY, 19079, 0, m_tmp_day, DaysOptionsFiller);
}
AddButton(group, SETTING_TMR_BEGIN, 19080, 0);
AddButton(group, SETTING_TMR_END, 19081, 0);
AddSpinner(group, SETTING_TMR_PRIORITY, 19082, 0, tag->m_iPriority, 0, 1, 99);
AddSpinner(group, SETTING_TMR_LIFETIME, 19083, 0, tag->m_iLifetime, 0, 1, 365);
/// First day
{
CDateTime time = CDateTime::GetCurrentDateTime();
CDateTime timestart = tag->FirstDayAsLocalTime();
// get diffence of timer in days between today and timer start date
if (time < timestart)
{
tm time_cur; time.GetAsTm(time_cur);
tm time_tmr; timestart.GetAsTm(time_tmr);
m_tmp_iFirstDay += time_tmr.tm_yday - time_cur.tm_yday + 1;
if (time_tmr.tm_yday - time_cur.tm_yday < 0)
m_tmp_iFirstDay += 365;
}
CSettingInt *settingFirstDay = AddSpinner(group, SETTING_TMR_FIRST_DAY, 19084, 0, m_tmp_iFirstDay, DaysOptionsFiller);
// define an enable dependency with m_tmp_day <= 10
CSettingDependency depdendencyFirstDay(SettingDependencyTypeEnable, m_settingsManager);
depdendencyFirstDay.And()
->Add(CSettingDependencyConditionPtr(new CSettingDependencyCondition("IsTimerDayRepeating", "true", SETTING_TMR_DAY, false, m_settingsManager)));
SettingDependencies deps;
deps.push_back(depdendencyFirstDay);
settingFirstDay->SetDependencies(deps);
}
}
示例8: OnSettingAction
void CGUIDialogPVRTimerSettings::OnSettingAction(const CSetting *setting)
{
if (setting == NULL)
return;
CGUIDialogSettingsManualBase::OnSettingAction(setting);
CPVRTimerInfoTag* tag = m_timerItem->GetPVRTimerInfoTag();
if (tag == NULL)
return;
const std::string &settingId = setting->GetId();
if (settingId == SETTING_TMR_BEGIN)
{
if (CGUIDialogNumeric::ShowAndGetTime(m_timerStartTime, g_localizeStrings.Get(14066)))
{
CDateTime timestart = m_timerStartTime;
int start_day = tag->StartAsLocalTime().GetDay();
int start_month = tag->StartAsLocalTime().GetMonth();
int start_year = tag->StartAsLocalTime().GetYear();
int start_hour = timestart.GetHour();
int start_minute = timestart.GetMinute();
CDateTime newStart(start_year, start_month, start_day, start_hour, start_minute, 0);
tag->SetStartFromLocalTime(newStart);
m_timerStartTimeStr = tag->StartAsLocalTime().GetAsLocalizedTime("", false);
setButtonLabels();
}
}
else if (settingId == SETTING_TMR_END)
{
if (CGUIDialogNumeric::ShowAndGetTime(m_timerEndTime, g_localizeStrings.Get(14066)))
{
CDateTime timestop = m_timerEndTime;
// TODO: add separate end date control to schedule a show with more then 24 hours
int start_day = tag->StartAsLocalTime().GetDay();
int start_month = tag->StartAsLocalTime().GetMonth();
int start_year = tag->StartAsLocalTime().GetYear();
int start_hour = timestop.GetHour();
int start_minute = timestop.GetMinute();
CDateTime newEnd(start_year, start_month, start_day, start_hour, start_minute, 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 < tag->StartAsLocalTime())
newEnd += CDateTimeSpan(1, 0, 0, 0);
tag->SetEndFromLocalTime(newEnd);
m_timerEndTimeStr = tag->EndAsLocalTime().GetAsLocalizedTime("", false);
setButtonLabels();
}
}
tag->UpdateSummary();
}