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(); }
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::OnSettingChanged(SettingInfo &setting) { CPVRTimerInfoTag* tag = m_timerItem->GetPVRTimerInfoTag(); if (setting.id == CONTROL_TMR_NAME) { if (CGUIKeyboardFactory::ShowAndGetInput(tag->m_strTitle, g_localizeStrings.Get(19097), false)) { UpdateSetting(CONTROL_TMR_NAME); } } if (setting.id == CONTROL_TMR_DIR && CGUIKeyboardFactory::ShowAndGetInput(tag->m_strDirectory, g_localizeStrings.Get(19104), false)) UpdateSetting(CONTROL_TMR_DIR); else if (setting.id == CONTROL_TMR_RADIO || setting.id == CONTROL_TMR_CHNAME_TV || setting.id == CONTROL_TMR_CHNAME_RADIO) { if (setting.id == CONTROL_TMR_RADIO) { EnableSettings(CONTROL_TMR_CHNAME_TV, !tag->m_bIsRadio); EnableSettings(CONTROL_TMR_CHNAME_RADIO, tag->m_bIsRadio); } CFileItemPtr channel = g_PVRChannelGroups->GetGroupAll(tag->m_bIsRadio)->GetByChannelNumber(tag->m_iChannelNumber); if (channel && channel->HasPVRChannelInfoTag()) { tag->m_iClientChannelUid = channel->GetPVRChannelInfoTag()->UniqueID(); tag->m_iClientId = channel->GetPVRChannelInfoTag()->ClientID(); tag->m_bIsRadio = channel->GetPVRChannelInfoTag()->IsRadio(); tag->m_iChannelNumber = channel->GetPVRChannelInfoTag()->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); 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); 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); SetTimerFromWeekdaySetting(*tag); } 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(); }
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(); }