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(); }
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) m_tmp_day = 5; else if (tag->m_iWeekdays == 0x40) m_tmp_day = 6; else if (tag->m_iWeekdays == 0x1F) m_tmp_day = 7; else if (tag->m_iWeekdays == 0x3F) m_tmp_day = 8; else if (tag->m_iWeekdays == 0x7F) m_tmp_day = 9; else if (tag->m_iWeekdays == 0x60) m_tmp_day = 10; } AddSpin(CONTROL_TMR_DAY, 19079, &m_tmp_day, daystrings.size(), daystrings); } AddButton(CONTROL_TMR_BEGIN, 19080, &timerStartTimeStr, true); AddButton(CONTROL_TMR_END, 19081, &timerEndTimeStr, true); AddSpin(CONTROL_TMR_PRIORITY, 19082, &tag->m_iPriority, 0, 99); AddSpin(CONTROL_TMR_LIFETIME, 19083, &tag->m_iLifetime, 0, 365); /// First day { SETTINGSTRINGS daystrings; tm time_cur; tm time_tmr; CDateTime time = CDateTime::GetCurrentDateTime(); CDateTime timestart = tag->FirstDayAsLocalTime(); /* get diffence of timer in days between today and timer start date */ if (time < timestart) { time.GetAsTm(time_cur); timestart.GetAsTm(time_tmr); if (time_tmr.tm_yday - time_cur.tm_yday >= 0) { m_tmp_iFirstDay += time_tmr.tm_yday - time_cur.tm_yday + 1; } else { m_tmp_iFirstDay += time_tmr.tm_yday - time_cur.tm_yday + 365 + 1; } } daystrings.push_back(g_localizeStrings.Get(19030)); for (int i = 1; i < 365; ++i) { CStdString string = time.GetAsLocalizedDate(); daystrings.push_back(string); time += CDateTimeSpan(1, 0, 0, 0); } AddSpin(CONTROL_TMR_FIRST_DAY, 19084, &m_tmp_iFirstDay, daystrings.size(), daystrings); if (tag->m_bIsRepeating) EnableSettings(CONTROL_TMR_FIRST_DAY, true); else EnableSettings(CONTROL_TMR_FIRST_DAY, false); } }
CEpgInfoTag::~CEpgInfoTag() { CPVRTimerInfoTag* tag = Timer(); if (tag) tag->OnEpgTagDeleted(); }
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; else if (m_tmp_day == 10) tag->m_iWeekdays = 0x60; else tag->m_iWeekdays = 0; } else if (setting.id == CONTROL_TMR_BEGIN) { if (CGUIDialogNumeric::ShowAndGetTime(timerStartTime, g_localizeStrings.Get(14066))) { CDateTime timestart = 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); timerStartTimeStr = tag->StartAsLocalTime().GetAsLocalizedTime("", false); UpdateSetting(CONTROL_TMR_BEGIN); } } else if (setting.id == CONTROL_TMR_END) { if (CGUIDialogNumeric::ShowAndGetTime(timerEndTime, g_localizeStrings.Get(14066))) { CDateTime timestop = timerEndTime; int start_day = tag->EndAsLocalTime().GetDay(); int start_month = tag->EndAsLocalTime().GetMonth(); int start_year = tag->EndAsLocalTime().GetYear(); int start_hour = timestop.GetHour(); int start_minute = timestop.GetMinute(); CDateTime newEnd(start_year, start_month, start_day, start_hour, start_minute, 0); tag->SetEndFromLocalTime(newEnd); timerEndTimeStr = tag->EndAsLocalTime().GetAsLocalizedTime("", false); UpdateSetting(CONTROL_TMR_END); } } else if (setting.id == CONTROL_TMR_FIRST_DAY && m_tmp_day <= 10) { CDateTime newFirstDay; if (m_tmp_iFirstDay > 0) newFirstDay = CDateTime::GetCurrentDateTime() + CDateTimeSpan(m_tmp_iFirstDay-1, 0, 0, 0); tag->SetFirstDayFromLocalTime(newFirstDay); } tag->UpdateSummary(); }
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; }
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(); tag->UpdateSummary(); }
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); } }
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(); }