CGUIControl* ControlRadioButton_Create(ControlRadioButton* pControl) { CLabelInfo label; label.font = g_fontManager.GetFont(pControl->strFont); label.textColor = pControl->dwTextColor; label.disabledColor = pControl->dwDisabledColor; label.shadowColor = pControl->dwShadowColor; label.focusedColor = pControl->dwFocusedColor; label.align = pControl->dwAlign; label.offsetX = (float)pControl->dwTextXOffset; label.offsetY = (float)pControl->dwTextYOffset; label.angle = (float)-pControl->iAngle; pControl->pGUIControl = new CGUIRadioButtonControl( pControl->iParentId, pControl->iControlId, (float)pControl->dwPosX, (float)pControl->dwPosY, (float)pControl->dwWidth, (float)pControl->dwHeight, (CStdString)pControl->strTextureFocus, (CStdString)pControl->strTextureNoFocus, label, (CStdString)pControl->strTextureRadioFocus, (CStdString)pControl->strTextureRadioNoFocus); CGUIRadioButtonControl* pGuiButtonControl = (CGUIRadioButtonControl*)pControl->pGUIControl; pGuiButtonControl->SetLabel(pControl->strText); return pControl->pGUIControl; }
bool CGUIDialogPVRChannelManager::OnClickButtonRadioParentalLocked(CGUIMessage &message) { CGUIRadioButtonControl *pRadioButton = (CGUIRadioButtonControl *)GetControl(RADIOBUTTON_PARENTAL_LOCK); // ask for PIN first if (!g_PVRManager.CheckParentalPIN(g_localizeStrings.Get(19262).c_str())) { pRadioButton->SetSelected(!pRadioButton->IsSelected()); return false; } if (pRadioButton) { CFileItemPtr pItem = m_channelItems->Get(m_iSelected); if (pItem) { pItem->SetProperty("Changed", true); pItem->SetProperty("ParentalLocked", pRadioButton->IsSelected()); m_bContainsChanges = true; Renumber(); return true; } } return false; }
void CGUIDialogPVRChannelManager::SetData(int iItem) { CGUIEditControl *pEdit; CGUIRadioButtonControl *pRadioButton; /* Check file item is in list range and get his pointer */ if (iItem < 0 || iItem >= (int)m_channelItems->Size()) return; CFileItemPtr pItem = m_channelItems->Get(iItem); if (!pItem) return; pEdit = (CGUIEditControl *)GetControl(EDIT_NAME); if (pEdit) { pEdit->SetLabel2(pItem->GetProperty("Name").asString()); pEdit->SetInputType(CGUIEditControl::INPUT_TYPE_TEXT, 19208); } pRadioButton = (CGUIRadioButtonControl *)GetControl(RADIOBUTTON_ACTIVE); if (pRadioButton) pRadioButton->SetSelected(pItem->GetProperty("ActiveChannel").asBoolean()); pRadioButton = (CGUIRadioButtonControl *)GetControl(RADIOBUTTON_USEEPG); if (pRadioButton) pRadioButton->SetSelected(pItem->GetProperty("UseEPG").asBoolean()); pRadioButton = (CGUIRadioButtonControl *)GetControl(RADIOBUTTON_PARENTAL_LOCK); if (pRadioButton) pRadioButton->SetSelected(pItem->GetProperty("ParentalLocked").asBoolean()); }
void CGUIWindowPVRRecordings::UpdateButtons(void) { int iWatchMode = CMediaSettings::GetInstance().GetWatchedMode("recordings"); int iStringId = 257; // "Error" if (iWatchMode == WatchedModeAll) iStringId = 22015; // "All recordings" else if (iWatchMode == WatchedModeUnwatched) iStringId = 16101; // "Unwatched" else if (iWatchMode == WatchedModeWatched) iStringId = 16102; // "Watched" SET_CONTROL_LABEL(CONTROL_BTNSHOWMODE, g_localizeStrings.Get(iStringId)); bool bGroupRecordings = m_settings.GetBoolValue(CSettings::SETTING_PVRRECORD_GROUPRECORDINGS); SET_CONTROL_SELECTED(GetID(), CONTROL_BTNGROUPITEMS, bGroupRecordings); CGUIRadioButtonControl *btnShowDeleted = (CGUIRadioButtonControl*) GetControl(CONTROL_BTNSHOWDELETED); if (btnShowDeleted) { btnShowDeleted->SetVisible(m_bRadio ? CServiceBroker::GetPVRManager().Recordings()->HasDeletedRadioRecordings() : CServiceBroker::GetPVRManager().Recordings()->HasDeletedTVRecordings()); btnShowDeleted->SetSelected(m_bShowDeletedRecordings); } CGUIWindowPVRBase::UpdateButtons(); SET_CONTROL_LABEL(CONTROL_LABEL_HEADER1, m_bShowDeletedRecordings ? g_localizeStrings.Get(19179) : ""); /* Deleted recordings trash */ const CPVRRecordingsPath path(m_vecItems->GetPath()); SET_CONTROL_LABEL(CONTROL_LABEL_HEADER2, bGroupRecordings && path.IsValid() ? path.GetUnescapedDirectoryPath() : ""); }
CGUIControl* ControlRadioButton::Create() { CLabelInfo label; label.font = g_fontManager.GetFont(strFont); label.textColor = textColor; label.disabledColor = disabledColor; label.shadowColor = shadowColor; label.focusedColor = focusedColor; label.align = align; label.offsetX = (float)textOffsetX; label.offsetY = (float)textOffsetY; label.angle = (float)-iAngle; pGUIControl = new CGUIRadioButtonControl( iParentId, iControlId, (float)dwPosX, (float)dwPosY, (float)dwWidth, (float)dwHeight, CTextureInfo(strTextureFocus), CTextureInfo(strTextureNoFocus), label, CTextureInfo(strTextureRadioOnFocus), CTextureInfo(strTextureRadioOnNoFocus), CTextureInfo(strTextureRadioOffFocus), CTextureInfo(strTextureRadioOffNoFocus)); CGUIRadioButtonControl* pGuiButtonControl = (CGUIRadioButtonControl*)pGUIControl; pGuiButtonControl->SetLabel(strText); return pGUIControl; }
void CGUIDialogSettings::UpdateSetting(unsigned int id) { unsigned int settingNum = (unsigned int)-1; for (unsigned int i = 0; i < m_settings.size(); i++) { if (m_settings[i].id == id) { settingNum = i; break; } } if(settingNum == (unsigned int)-1) return; SettingInfo &setting = m_settings.at(settingNum); unsigned int controlID = settingNum + CONTROL_START; if (setting.type == SettingInfo::SPIN) { CGUISpinControlEx *pControl = (CGUISpinControlEx *)GetControl(controlID); if (pControl && setting.data) pControl->SetValue(*(int *)setting.data); } else if (setting.type == SettingInfo::CHECK) { CGUIRadioButtonControl *pControl = (CGUIRadioButtonControl *)GetControl(controlID); if (pControl && setting.data) pControl->SetSelected(*(bool *)setting.data); } else if (setting.type == SettingInfo::CHECK_UCHAR) { CGUIRadioButtonControl *pControl = (CGUIRadioButtonControl *)GetControl(controlID); if (pControl && setting.data) pControl->SetSelected(*(unsigned char*)setting.data ? true : false); } else if (setting.type == SettingInfo::SLIDER) { CGUISettingsSliderControl *pControl = (CGUISettingsSliderControl *)GetControl(controlID); float value = *(float *)setting.data; if (pControl && setting.data) { pControl->SetFloatValue(value); if (setting.formatFunction) pControl->SetTextValue(setting.formatFunction(value, setting.interval)); } } else if (setting.type == SettingInfo::BUTTON) { SET_CONTROL_LABEL(controlID,setting.name); if (m_usePopupSliders && setting.data && setting.formatFunction) SET_CONTROL_LABEL2(controlID,setting.formatFunction(*(float *)setting.data, setting.interval)); } if (setting.enabled) { CONTROL_ENABLE(controlID); } else { CONTROL_DISABLE(controlID); } }
void CGUIDialogSettings::OnClick(int iID) { if (iID == CONTROL_OKAY_BUTTON) { OnOkay(); Close(); return; } if (iID == CONTROL_CANCEL_BUTTON) { OnCancel(); Close(); return; } unsigned int settingNum = iID - CONTROL_START; if (settingNum >= m_settings.size()) return; SettingInfo &setting = m_settings.at(settingNum); if (setting.type == SettingInfo::SPIN) { CGUISpinControlEx *pControl = (CGUISpinControlEx *)GetControl(iID); if (setting.data) *(int *)setting.data = pControl->GetValue(); } else if (setting.type == SettingInfo::CHECK) { CGUIRadioButtonControl *pControl = (CGUIRadioButtonControl *)GetControl(iID); if (setting.data) *(bool *)setting.data = pControl->IsSelected(); } else if (setting.type == SettingInfo::CHECK_UCHAR) { CGUIRadioButtonControl *pControl = (CGUIRadioButtonControl *)GetControl(iID); if (setting.data) *(unsigned char*)setting.data = pControl->IsSelected() ? 1 : 0; } else if (setting.type == SettingInfo::SLIDER) { CGUISettingsSliderControl *pControl = (CGUISettingsSliderControl *)GetControl(iID); if (setting.data) *(float *)setting.data = pControl->GetFloatValue(); if (setting.formatFunction) pControl->SetTextValue(setting.formatFunction(pControl->GetFloatValue(), setting.interval)); } else if (setting.type == SettingInfo::BUTTON && m_usePopupSliders && setting.data) { // we're using popup sliders CGUIDialogSlider::ShowAndGetInput(setting.name, *(float *)setting.data, setting.min, setting.interval, setting.max, this, &setting); if (setting.formatFunction) SET_CONTROL_LABEL2(iID, setting.formatFunction(*(float *)setting.data, setting.interval)); } else if (setting.type == SettingInfo::STRING) { CGUIDialogKeyboard::ShowAndGetInput(*(CStdString *) setting.data, true); string strNewValue = string(*(CStdString *)setting.data); if (strNewValue.empty()) strNewValue = "-"; SET_CONTROL_LABEL2(iID, strNewValue); } OnSettingChanged(setting); }
void CGUIWindowPVRRecordings::UpdateButtons(void) { CGUIRadioButtonControl *btnShowDeleted = (CGUIRadioButtonControl*) GetControl(CONTROL_BTNSHOWDELETED); if (btnShowDeleted) { btnShowDeleted->SetVisible(m_bRadio ? g_PVRRecordings->HasDeletedRadioRecordings() : g_PVRRecordings->HasDeletedTVRecordings()); btnShowDeleted->SetSelected(m_bShowDeletedRecordings); } CGUIWindowPVRBase::UpdateButtons(); SET_CONTROL_LABEL(CONTROL_LABEL_HEADER1, m_bShowDeletedRecordings ? g_localizeStrings.Get(19179) : ""); /* Deleted recordings trash */ }
void CGUIWindowPVRChannels::UpdateButtons(void) { CGUIRadioButtonControl *btnShowHidden = (CGUIRadioButtonControl*) GetControl(CONTROL_BTNSHOWHIDDEN); if (btnShowHidden) { btnShowHidden->SetVisible(g_PVRChannelGroups->GetGroupAll(m_bRadio)->GetNumHiddenChannels() > 0); btnShowHidden->SetSelected(m_bShowHiddenChannels); } CGUIWindowPVRBase::UpdateButtons(); SET_CONTROL_LABEL(CONTROL_LABEL_HEADER1, m_bShowHiddenChannels ? g_localizeStrings.Get(19022) : GetGroup()->GroupName()); }
void CGUIWindowPVRChannelsBase::UpdateButtons(void) { CGUIRadioButtonControl *btnShowHidden = static_cast<CGUIRadioButtonControl*>(GetControl(CONTROL_BTNSHOWHIDDEN)); if (btnShowHidden) { btnShowHidden->SetVisible(CServiceBroker::GetPVRManager().ChannelGroups()->GetGroupAll(m_bRadio)->GetNumHiddenChannels() > 0); btnShowHidden->SetSelected(m_bShowHiddenChannels); } CGUIWindowPVRBase::UpdateButtons(); SET_CONTROL_LABEL(CONTROL_LABEL_HEADER1, m_bShowHiddenChannels ? g_localizeStrings.Get(19022) : GetChannelGroup()->GroupName()); }
void CGUIWindowPVRRecordings::UpdateButtons(void) { SET_CONTROL_SELECTED(GetID(), CONTROL_BTNGROUPITEMS, CSettings::GetInstance().GetBool(CSettings::SETTING_PVRRECORD_GROUPRECORDINGS)); CGUIRadioButtonControl *btnShowDeleted = (CGUIRadioButtonControl*) GetControl(CONTROL_BTNSHOWDELETED); if (btnShowDeleted) { btnShowDeleted->SetVisible(m_bRadio ? g_PVRRecordings->HasDeletedRadioRecordings() : g_PVRRecordings->HasDeletedTVRecordings()); btnShowDeleted->SetSelected(m_bShowDeletedRecordings); } CGUIWindowPVRBase::UpdateButtons(); SET_CONTROL_LABEL(CONTROL_LABEL_HEADER1, m_bShowDeletedRecordings ? g_localizeStrings.Get(19179) : ""); /* Deleted recordings trash */ }
bool CGUIDialogFirstTimeUseConfWireless::OnMessage(CGUIMessage& message) { switch (message.GetMessage()) { case GUI_MSG_CLICKED: { int senderId = message.GetSenderId(); switch (senderId) { case CONTROL_PASSWORD_SHOW: { CGUIRadioButtonControl* pControl = (CGUIRadioButtonControl*)GetControl(CONTROL_PASSWORD_SHOW); if (pControl) { //((CGUIEditControl*)GetControl(CONTROL_PASSWORD_EDIT))-> if (pControl->IsSelected()) { ((CGUIEditControl*)GetControl(CONTROL_PASSWORD_EDIT))->SetInputType(CGUIEditControl::INPUT_TYPE_TEXT,0); } else { ((CGUIEditControl*)GetControl(CONTROL_PASSWORD_EDIT))->SetInputType(CGUIEditControl::INPUT_TYPE_PASSWORD,0); } } return true; } break; case AUTOMATIC_CONF: { SetSelectAUTOMATIC(); return true; } break; case MANUALLY_CONF: { SetSelectMANUALLY(); return true; } break; } } break; } return CGUIDialogFirstTimeUseBase::OnMessage(message); }
bool CGUIDialogPVRChannelManager::OnClickButtonUseEPG(CGUIMessage &message) { CGUIRadioButtonControl *pRadioButton = (CGUIRadioButtonControl *)GetControl(RADIOBUTTON_USEEPG); if (pRadioButton) { CFileItemPtr pItem = m_channelItems->Get(m_iSelected); if (pItem) { pItem->SetProperty("Changed", true); pItem->SetProperty("UseEPG", pRadioButton->IsSelected()); m_bContainsChanges = true; return true; } } return false; }
bool CGUIDialogPVRGroupManager::ActionButtonHideGroup(CGUIMessage &message) { bool bReturn = false; if (message.GetSenderId() == BUTTON_HIDE_GROUP && m_selectedGroup) { CGUIRadioButtonControl *button = static_cast<CGUIRadioButtonControl*>(GetControl(message.GetSenderId())); if (button) { m_selectedGroup->SetHidden(button->IsSelected()); Update(); } bReturn = true; } return bReturn; }
void CGUIDialogVisualisationSettings::OnClick(int iID) { if (!m_pSettings || !m_pVisualisation) return; unsigned int settingNum = iID - CONTROL_START; if (settingNum >= m_pSettings->size()) return; VisSetting &setting = m_pSettings->at(settingNum); if (setting.type == VisSetting::SPIN) { CGUISpinControlEx *pControl = (CGUISpinControlEx *)GetControl(iID); setting.current = pControl->GetValue(); } else if (setting.type == VisSetting::CHECK) { CGUIRadioButtonControl *pControl = (CGUIRadioButtonControl *)GetControl(iID); setting.current = pControl->IsSelected() ? 1 : 0; } m_pVisualisation->UpdateSetting(settingNum); UpdateSettings(); }
bool CGUIDialogAudioDSPManager::OnClickRadioContinousSaving(CGUIMessage &message) { CGUIRadioButtonControl *radioButton = dynamic_cast<CGUIRadioButtonControl*>(GetControl(CONTROL_RADIO_BUTTON_CONTINUOUS_SAVING)); CGUIButtonControl *applyChangesButton = dynamic_cast<CGUIButtonControl*>(GetControl(CONTROL_BUTTON_APPLY_CHANGES)); if (!radioButton || !applyChangesButton) { helper_LogError(__FUNCTION__); return false; } if (!radioButton->IsSelected()) { applyChangesButton->SetEnabled(true); m_bContinousSaving = false; } else { m_bContinousSaving = true; applyChangesButton->SetEnabled(false); } return true; }
bool CGUIWindowPVRRecordings::OnMessage(CGUIMessage &message) { if (!IsValidMessage(message)) return false; bool bReturn = false; switch (message.GetMessage()) { case GUI_MSG_CLICKED: if (message.GetSenderId() == m_viewControl.GetCurrentControl()) { int iItem = m_viewControl.GetSelectedItem(); if (iItem >= 0 && iItem < m_vecItems->Size()) { switch (message.GetParam1()) { case ACTION_SELECT_ITEM: case ACTION_MOUSE_LEFT_CLICK: case ACTION_PLAY: { bReturn = PlayFile(m_vecItems->Get(iItem).get()); break; } case ACTION_CONTEXT_MENU: case ACTION_MOUSE_RIGHT_CLICK: OnPopupMenu(iItem); bReturn = true; break; case ACTION_SHOW_INFO: ShowRecordingInfo(m_vecItems->Get(iItem).get()); bReturn = true; break; case ACTION_DELETE_ITEM: ActionDeleteRecording(m_vecItems->Get(iItem).get()); bReturn = true; break; default: bReturn = false; break; } } } else if (message.GetSenderId() == CONTROL_BTNGROUPITEMS) { CGUIRadioButtonControl *radioButton = (CGUIRadioButtonControl*) GetControl(CONTROL_BTNGROUPITEMS); g_PVRRecordings->SetGroupItems(radioButton->IsSelected()); Refresh(true); } else if (message.GetSenderId() == CONTROL_BTNSHOWDELETED) { CGUIRadioButtonControl *radioButton = (CGUIRadioButtonControl*) GetControl(CONTROL_BTNSHOWDELETED); if (radioButton) { m_bShowDeletedRecordings = radioButton->IsSelected(); Update(GetDirectoryPath()); } bReturn = true; } break; case GUI_MSG_REFRESH_LIST: switch(message.GetParam1()) { case ObservableMessageTimers: case ObservableMessageEpg: case ObservableMessageEpgContainer: case ObservableMessageEpgActiveItem: case ObservableMessageCurrentItem: { SetInvalid(); break; } case ObservableMessageRecordings: case ObservableMessageTimersReset: { Refresh(true); break; } } break; } return bReturn || CGUIWindowPVRBase::OnMessage(message); }
bool CGUIWindowPVRRecordings::OnMessage(CGUIMessage &message) { bool bReturn = false; switch (message.GetMessage()) { case GUI_MSG_CLICKED: if (message.GetSenderId() == m_viewControl.GetCurrentControl()) { int iItem = m_viewControl.GetSelectedItem(); if (iItem >= 0 && iItem < m_vecItems->Size()) { const CFileItemPtr item(m_vecItems->Get(iItem)); switch (message.GetParam1()) { case ACTION_SELECT_ITEM: case ACTION_MOUSE_LEFT_CLICK: case ACTION_PLAY: { const CPVRRecordingsPath path(m_vecItems->GetPath()); if (path.IsValid() && path.IsRecordingsRoot() && item->IsParentFolder()) { // handle special 'go home' item. g_windowManager.ActivateWindow(WINDOW_HOME); bReturn = true; break; } if (item->m_bIsFolder) { // recording folders and ".." folders in subfolders are handled by base class. bReturn = false; break; } if (message.GetParam1() == ACTION_PLAY) { CServiceBroker::GetPVRManager().GUIActions()->PlayRecording(item, true /* check resume */); bReturn = true; } else { switch (m_settings.GetIntValue(CSettings::SETTING_MYVIDEOS_SELECTACTION)) { case SELECT_ACTION_CHOOSE: OnPopupMenu(iItem); bReturn = true; break; case SELECT_ACTION_PLAY_OR_RESUME: CServiceBroker::GetPVRManager().GUIActions()->PlayRecording(item, true /* check resume */); bReturn = true; break; case SELECT_ACTION_RESUME: CServiceBroker::GetPVRManager().GUIActions()->ResumePlayRecording(item, true /* fall back to play if no resume possible */); bReturn = true; break; case SELECT_ACTION_INFO: CServiceBroker::GetPVRManager().GUIActions()->ShowRecordingInfo(item); bReturn = true; break; default: bReturn = false; break; } } break; } case ACTION_CONTEXT_MENU: case ACTION_MOUSE_RIGHT_CLICK: OnPopupMenu(iItem); bReturn = true; break; case ACTION_SHOW_INFO: CServiceBroker::GetPVRManager().GUIActions()->ShowRecordingInfo(item); bReturn = true; break; case ACTION_DELETE_ITEM: CServiceBroker::GetPVRManager().GUIActions()->DeleteRecording(item); bReturn = true; break; default: bReturn = false; break; } } } else if (message.GetSenderId() == CONTROL_BTNGROUPITEMS) { CServiceBroker::GetSettings().ToggleBool(CSettings::SETTING_PVRRECORD_GROUPRECORDINGS); CServiceBroker::GetSettings().Save(); Refresh(true); } else if (message.GetSenderId() == CONTROL_BTNSHOWDELETED) { CGUIRadioButtonControl *radioButton = (CGUIRadioButtonControl*) GetControl(CONTROL_BTNSHOWDELETED); if (radioButton) { m_bShowDeletedRecordings = radioButton->IsSelected(); Update(GetDirectoryPath()); } bReturn = true; } else if (message.GetSenderId() == CONTROL_BTNSHOWMODE) { CMediaSettings::GetInstance().CycleWatchedMode("recordings"); CServiceBroker::GetSettings().Save(); OnFilterItems(GetProperty("filter").asString()); UpdateButtons(); return true; } break; case GUI_MSG_REFRESH_LIST: switch(message.GetParam1()) { case ObservableMessageTimers: case ObservableMessageEpg: case ObservableMessageEpgContainer: case ObservableMessageEpgActiveItem: case ObservableMessageCurrentItem: { SetInvalid(); break; } case ObservableMessageRecordings: case ObservableMessageTimersReset: { Refresh(true); break; } } break; } return bReturn || CGUIWindowPVRBase::OnMessage(message); }
bool CGUIWindowPVRRecordings::OnMessage(CGUIMessage &message) { bool bReturn = false; switch (message.GetMessage()) { case GUI_MSG_CLICKED: if (message.GetSenderId() == m_viewControl.GetCurrentControl()) { int iItem = m_viewControl.GetSelectedItem(); if (iItem >= 0 && iItem < m_vecItems->Size()) { switch (message.GetParam1()) { case ACTION_SELECT_ITEM: case ACTION_MOUSE_LEFT_CLICK: case ACTION_PLAY: { CFileItemPtr pItem = m_vecItems->Get(iItem); std::string resumeString = GetResumeString(*pItem); if (!resumeString.empty()) { CContextButtons choices; choices.Add(CONTEXT_BUTTON_RESUME_ITEM, resumeString); choices.Add(CONTEXT_BUTTON_PLAY_ITEM, 12021); int choice = CGUIDialogContextMenu::ShowAndGetChoice(choices); if (choice > 0) OnContextButtonPlay(pItem.get(), (CONTEXT_BUTTON)choice); bReturn = true; } break; } case ACTION_CONTEXT_MENU: case ACTION_MOUSE_RIGHT_CLICK: OnPopupMenu(iItem); bReturn = true; break; case ACTION_SHOW_INFO: ShowRecordingInfo(m_vecItems->Get(iItem).get()); bReturn = true; break; case ACTION_DELETE_ITEM: ActionDeleteRecording(m_vecItems->Get(iItem).get()); bReturn = true; break; default: bReturn = false; break; } } } else if (message.GetSenderId() == CONTROL_BTNGROUPITEMS) { CGUIRadioButtonControl *radioButton = (CGUIRadioButtonControl*) GetControl(CONTROL_BTNGROUPITEMS); g_PVRRecordings->SetGroupItems(radioButton->IsSelected()); Refresh(true); } break; case GUI_MSG_REFRESH_LIST: switch(message.GetParam1()) { case ObservableMessageTimers: case ObservableMessageCurrentItem: { if (IsActive()) SetInvalid(); bReturn = true; break; } case ObservableMessageRecordings: case ObservableMessageTimersReset: { if (IsActive()) Refresh(true); bReturn = true; break; } } break; } return bReturn || CGUIWindowPVRBase::OnMessage(message); }
void CGUIDialogSettings::OnClick(int iID) { if (iID == CONTROL_OKAY_BUTTON) { OnOkay(); Close(); return; } if (iID == CONTROL_CANCEL_BUTTON) { OnCancel(); Close(); return; } unsigned int settingNum = iID - CONTROL_START; if (settingNum >= m_settings.size()) return; SettingInfo &setting = m_settings.at(settingNum); if (setting.type == SettingInfo::SPIN) { CGUISpinControlEx *pControl = (CGUISpinControlEx *)GetControl(iID); if (setting.data) *(int *)setting.data = pControl->GetValue(); } else if (setting.type == SettingInfo::BUTTON_DIALOG) { CGUIButtonControl *pControl = (CGUIButtonControl *)GetControl(iID); if (setting.data) *(CStdString *)setting.data = pControl->GetLabel2(); } else if (setting.type == SettingInfo::EDIT) { CGUIEditControl *pControl = (CGUIEditControl *)GetControl(iID); if (setting.data) *(CStdString *)setting.data = pControl->GetLabel2(); } else if (setting.type == SettingInfo::EDIT_NUM) { CGUIEditControl *pControl = (CGUIEditControl *)GetControl(iID); if (setting.data) { CStdString strIndex = pControl->GetLabel2(); *(int *)setting.data = atol(strIndex.c_str()); } } else if (setting.type == SettingInfo::CHECK) { CGUIRadioButtonControl *pControl = (CGUIRadioButtonControl *)GetControl(iID); if (setting.data) *(bool *)setting.data = pControl->IsSelected(); } else if (setting.type == SettingInfo::CHECK_UCHAR) { CGUIRadioButtonControl *pControl = (CGUIRadioButtonControl *)GetControl(iID); if (setting.data) *(unsigned char*)setting.data = pControl->IsSelected() ? 1 : 0; } else if (setting.type == SettingInfo::SLIDER) { CGUISettingsSliderControl *pControl = (CGUISettingsSliderControl *)GetControl(iID); if (setting.data) *(float *)setting.data = pControl->GetFloatValue(); if (setting.formatFunction.standard) pControl->SetTextValue(setting.formatFunction.standard(pControl->GetFloatValue(), setting.interval)); } else if (setting.type == SettingInfo::BUTTON && m_usePopupSliders && setting.data) { // we're using popup sliders CGUIDialogSlider::ShowAndGetInput(setting.name, *(float *)setting.data, setting.min, setting.interval, setting.max, this, &setting); if (setting.formatFunction.standard) SET_CONTROL_LABEL2(iID, setting.formatFunction.standard(*(float *)setting.data, setting.interval)); } else if (setting.type == SettingInfo::STRING) { CGUIKeyboardFactory::ShowAndGetInput(*(CStdString *) setting.data, true); string strNewValue = string(*(CStdString *)setting.data); if (strNewValue.empty()) strNewValue = "-"; SET_CONTROL_LABEL2(iID, strNewValue); } else if (setting.type == SettingInfo::RANGE) { CGUISettingsSliderControl *pControl = (CGUISettingsSliderControl *)GetControl(iID); if (setting.data) { *((float **)setting.data)[0] = pControl->GetFloatValue(CGUISliderControl::RangeSelectorLower); *((float **)setting.data)[1] = pControl->GetFloatValue(CGUISliderControl::RangeSelectorUpper); } if (setting.formatFunction.range) pControl->SetTextValue(setting.formatFunction.range(pControl->GetFloatValue(CGUISliderControl::RangeSelectorLower), pControl->GetFloatValue(CGUISliderControl::RangeSelectorUpper), setting.interval)); } OnSettingChanged(setting); }
bool CGUIWindowPVRRecordings::OnMessage(CGUIMessage &message) { bool bReturn = false; switch (message.GetMessage()) { case GUI_MSG_CLICKED: if (message.GetSenderId() == m_viewControl.GetCurrentControl()) { int iItem = m_viewControl.GetSelectedItem(); if (iItem >= 0 && iItem < m_vecItems->Size()) { const CFileItemPtr item(m_vecItems->Get(iItem)); if (item->m_bIsFolder) { // recording folders are handled by base class. bReturn = false; break; } switch (message.GetParam1()) { case ACTION_SELECT_ITEM: case ACTION_MOUSE_LEFT_CLICK: switch(CSettings::GetInstance().GetInt(CSettings::SETTING_MYVIDEOS_SELECTACTION)) { case SELECT_ACTION_CHOOSE: OnPopupMenu(iItem); bReturn = true; break; case SELECT_ACTION_PLAY_OR_RESUME: PlayFile(item.get(), false /* don't play minimized */, true /* check resume */); bReturn = true; break; case SELECT_ACTION_RESUME: { const std::string resumeString = GetResumeString(*item); item->m_lStartOffset = resumeString.empty() ? 0 : STARTOFFSET_RESUME; PlayFile(item.get(), false /* don't play minimized */, false /* don't check resume */); bReturn = true; break; } case SELECT_ACTION_INFO: ShowRecordingInfo(item.get()); bReturn = true; break; default: bReturn = false; break; } break; case ACTION_PLAY: PlayFile(item.get(), false /* don't play minimized */, true /* check resume */); bReturn = true; break; case ACTION_CONTEXT_MENU: case ACTION_MOUSE_RIGHT_CLICK: OnPopupMenu(iItem); bReturn = true; break; case ACTION_SHOW_INFO: ShowRecordingInfo(item.get()); bReturn = true; break; case ACTION_DELETE_ITEM: ActionDeleteRecording(item.get()); bReturn = true; break; default: bReturn = false; break; } } } else if (message.GetSenderId() == CONTROL_BTNGROUPITEMS) { CSettings::GetInstance().ToggleBool(CSettings::SETTING_PVRRECORD_GROUPRECORDINGS); CSettings::GetInstance().Save(); Refresh(true); } else if (message.GetSenderId() == CONTROL_BTNSHOWDELETED) { CGUIRadioButtonControl *radioButton = (CGUIRadioButtonControl*) GetControl(CONTROL_BTNSHOWDELETED); if (radioButton) { m_bShowDeletedRecordings = radioButton->IsSelected(); Update(GetDirectoryPath()); } bReturn = true; } break; case GUI_MSG_REFRESH_LIST: switch(message.GetParam1()) { case ObservableMessageTimers: case ObservableMessageEpg: case ObservableMessageEpgContainer: case ObservableMessageEpgActiveItem: case ObservableMessageCurrentItem: { SetInvalid(); break; } case ObservableMessageRecordings: case ObservableMessageTimersReset: { Refresh(true); break; } } break; } return bReturn || CGUIWindowPVRBase::OnMessage(message); }
void CGUIDialogPluginSettings::CreateControls() { CGUISpinControlEx *pOriginalSpin = (CGUISpinControlEx*)GetControl(CONTROL_DEFAULT_SPIN); CGUIRadioButtonControl *pOriginalRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_DEFAULT_RADIOBUTTON); CGUIButtonControl *pOriginalButton = (CGUIButtonControl *)GetControl(CONTROL_DEFAULT_BUTTON); CGUIImage *pOriginalImage = (CGUIImage *)GetControl(CONTROL_DEFAULT_SEPARATOR); CGUILabelControl *pOriginalLabel = (CGUILabelControl *)GetControl(CONTROL_DEFAULT_LABEL_SEPARATOR); if (!pOriginalSpin || !pOriginalRadioButton || !pOriginalButton || !pOriginalImage) return; pOriginalSpin->SetVisible(false); pOriginalRadioButton->SetVisible(false); pOriginalButton->SetVisible(false); pOriginalImage->SetVisible(false); if (pOriginalLabel) pOriginalLabel->SetVisible(false); // clear the category group CGUIControlGroupList *group = (CGUIControlGroupList *)GetControl(CONTROL_AREA); if (!group) return; // set our dialog heading SET_CONTROL_LABEL(CONTROL_HEADING_LABEL, m_strHeading); // Create our base path, used for type "fileenum" settings CStdString basepath = "Q:\\plugins\\"; CUtil::AddFileToFolder(basepath, m_url.GetHostName(), basepath); CUtil::AddFileToFolder(basepath, m_url.GetFileName(), basepath); CGUIControl* pControl = NULL; int controlId = CONTROL_START_CONTROL; TiXmlElement *setting = m_settings.GetPluginRoot()->FirstChildElement("setting"); while (setting) { const char *type = setting->Attribute("type"); const char *option = setting->Attribute("option"); const char *id = setting->Attribute("id"); CStdString values; if (setting->Attribute("values")) values = setting->Attribute("values"); CStdString lvalues; if (setting->Attribute("lvalues")) lvalues = setting->Attribute("lvalues"); CStdString entries; if (setting->Attribute("entries")) entries = setting->Attribute("entries"); CStdString label; if (setting->Attribute("label") && atoi(setting->Attribute("label")) > 0) label.Format("$LOCALIZE[%s]", setting->Attribute("label")); else label = setting->Attribute("label"); if (type) { if (strcmpi(type, "text") == 0 || strcmpi(type, "ipaddress") == 0 || strcmpi(type, "integer") == 0 || strcmpi(type, "video") == 0 || strcmpi(type, "music") == 0 || strcmpi(type, "pictures") == 0 || strcmpi(type, "folder") == 0 || strcmpi(type, "programs") == 0 || strcmpi(type, "files") == 0 || strcmpi(type, "action") == 0) { pControl = new CGUIButtonControl(*pOriginalButton); if (!pControl) return; ((CGUIButtonControl *)pControl)->SettingsCategorySetTextAlign(XBFONT_CENTER_Y); ((CGUIButtonControl *)pControl)->SetLabel(label); if (id) ((CGUIButtonControl *)pControl)->SetLabel2(m_settings.Get(id)); if (option && strcmpi(option, "hidden") == 0) ((CGUIButtonControl *)pControl)->SetHidden(true); } else if (strcmpi(type, "bool") == 0) { pControl = new CGUIRadioButtonControl(*pOriginalRadioButton); if (!pControl) return; ((CGUIRadioButtonControl *)pControl)->SetLabel(label); ((CGUIRadioButtonControl *)pControl)->SetSelected(m_settings.Get(id) == "true"); } else if (strcmpi(type, "enum") == 0 || strcmpi(type, "labelenum") == 0) { vector<CStdString> valuesVec; vector<CStdString> entryVec; pControl = new CGUISpinControlEx(*pOriginalSpin); if (!pControl) return; ((CGUISpinControlEx *)pControl)->SetText(label); if (!lvalues.IsEmpty()) CUtil::Tokenize(lvalues, valuesVec, "|"); else CUtil::Tokenize(values, valuesVec, "|"); if (!entries.IsEmpty()) CUtil::Tokenize(entries, entryVec, "|"); for (unsigned int i = 0; i < valuesVec.size(); i++) { int iAdd = i; if (entryVec.size() > i) iAdd = atoi(entryVec[i]); if (!lvalues.IsEmpty()) { CStdString replace = g_localizeStringsTemp.Get(atoi(valuesVec[i])); if (replace.IsEmpty()) replace = g_localizeStrings.Get(atoi(valuesVec[i])); ((CGUISpinControlEx *)pControl)->AddLabel(replace, iAdd); } else ((CGUISpinControlEx *)pControl)->AddLabel(valuesVec[i], iAdd); } if (strcmpi(type, "labelenum") == 0) { // need to run through all our settings and find the one that matches ((CGUISpinControlEx*) pControl)->SetValueFromLabel(m_settings.Get(id)); } else ((CGUISpinControlEx*) pControl)->SetValue(atoi(m_settings.Get(id))); } else if (strcmpi(type, "fileenum") == 0) { pControl = new CGUISpinControlEx(*pOriginalSpin); if (!pControl) return; ((CGUISpinControlEx *)pControl)->SetText(label); //find Folders... CFileItemList items; CStdString enumpath; CUtil::AddFileToFolder(basepath, values, enumpath); CStdString mask; if (setting->Attribute("mask")) mask = setting->Attribute("mask"); if (!mask.IsEmpty()) CDirectory::GetDirectory(enumpath, items, mask); else CDirectory::GetDirectory(enumpath, items); int iItem = 0; for (int i = 0; i < items.Size(); ++i) { CFileItemPtr pItem = items[i]; if ((mask.Equals("/") && pItem->m_bIsFolder) || !pItem->m_bIsFolder) { ((CGUISpinControlEx *)pControl)->AddLabel(pItem->GetLabel(), iItem); if (pItem->GetLabel().Equals(m_settings.Get(id))) ((CGUISpinControlEx *)pControl)->SetValue(iItem); iItem++; } } } else if (strcmpi(type, "lsep") == 0 && pOriginalLabel) { pControl = new CGUILabelControl(*pOriginalLabel); if (pControl) ((CGUILabelControl *)pControl)->SetLabel(label); } else if ((strcmpi(type, "sep") == 0 || strcmpi(type, "lsep") == 0) && pOriginalImage) pControl = new CGUIImage(*pOriginalImage); } if (pControl) { pControl->SetWidth(group->GetWidth()); pControl->SetVisible(true); pControl->SetID(controlId); pControl->AllocResources(); group->AddControl(pControl); pControl = NULL; } setting = setting->NextSiblingElement("setting"); controlId++; } EnableControls(); }
bool CGUIDialogPVRChannelManager::OnMessage(CGUIMessage& message) { unsigned int iControl = 0; unsigned int iMessage = message.GetMessage(); switch (iMessage) { case GUI_MSG_WINDOW_DEINIT: { Clear(); } break; case GUI_MSG_WINDOW_INIT: { CGUIWindow::OnMessage(message); m_iSelected = 0; m_bIsRadio = false; m_bMovingMode = false; m_bContainsChanges = false; SetProperty("IsRadio", ""); Update(); SetData(m_iSelected); return true; } break; case GUI_MSG_CLICKED: { iControl = message.GetSenderId(); if (iControl == CONTROL_LIST_CHANNELS) { if (!m_bMovingMode) { int iAction = message.GetParam1(); int iItem = m_viewControl.GetSelectedItem(); /* Check file item is in list range and get his pointer */ if (iItem < 0 || iItem >= (int)m_channelItems->Size()) return true; /* Process actions */ if (iAction == ACTION_SELECT_ITEM || iAction == ACTION_CONTEXT_MENU || iAction == ACTION_MOUSE_RIGHT_CLICK) { /* Show Contextmenu */ OnPopupMenu(iItem); } } else { CFileItemPtr pItem = m_channelItems->Get(m_iSelected); if (pItem) { pItem->SetProperty("Changed", true); pItem->Select(false); m_bMovingMode = false; m_bContainsChanges = true; return true; } else return false; } } else if (iControl == BUTTON_OK) { SaveList(); Close(); return true; } else if (iControl == BUTTON_APPLY) { SaveList(); return true; } else if (iControl == BUTTON_CANCEL) { Close(); return true; } else if (iControl == BUTTON_RADIO_TV) { if (m_bContainsChanges) { // prompt user for confirmation of channel record CGUIDialogYesNo* pDialog = (CGUIDialogYesNo*)g_windowManager.GetWindow(WINDOW_DIALOG_YES_NO); if (!pDialog) return true; pDialog->SetHeading(20052); pDialog->SetLine(0, ""); pDialog->SetLine(1, 19212); pDialog->SetLine(2, 20103); pDialog->DoModal(); if (pDialog->IsConfirmed()) SaveList(); } m_iSelected = 0; m_bMovingMode = false; m_bContainsChanges = false; m_bIsRadio = !m_bIsRadio; SetProperty("IsRadio", m_bIsRadio ? "true" : ""); Update(); SetData(m_iSelected); return true; } else if (iControl == RADIOBUTTON_ACTIVE) { CGUIRadioButtonControl *pRadioButton = (CGUIRadioButtonControl *)GetControl(RADIOBUTTON_ACTIVE); if (pRadioButton) { CFileItemPtr pItem = m_channelItems->Get(m_iSelected); if (pItem) { pItem->SetProperty("Changed", true); pItem->SetProperty("ActiveChannel", pRadioButton->IsSelected()); m_bContainsChanges = true; Renumber(); } } } else if (iControl == EDIT_NAME) { CGUIEditControl *pEdit = (CGUIEditControl *)GetControl(EDIT_NAME); if (pEdit) { CFileItemPtr pItem = m_channelItems->Get(m_iSelected); if (pItem) { pItem->SetProperty("Changed", true); pItem->SetProperty("Name", pEdit->GetLabel2()); m_bContainsChanges = true; } } } else if (iControl == BUTTON_CHANNEL_LOGO) { CFileItemPtr pItem = m_channelItems->Get(m_iSelected); if (!pItem) return false; if (g_settings.GetCurrentProfile().canWriteSources() && !g_passwordManager.IsProfileLockUnlocked()) return false; else if (!g_passwordManager.IsMasterLockUnlocked(true)) return false; // setup our thumb list CFileItemList items; // add the current thumb, if available if (!pItem->GetProperty("Icon").IsEmpty()) { CFileItemPtr current(new CFileItem("thumb://Current", false)); current->SetThumbnailImage(pItem->GetPVRChannelInfoTag()->IconPath()); current->SetLabel(g_localizeStrings.Get(20016)); items.Add(current); } else if (pItem->HasThumbnail()) { // already have a thumb that the share doesn't know about - must be a local one, so we mayaswell reuse it. CFileItemPtr current(new CFileItem("thumb://Current", false)); current->SetThumbnailImage(pItem->GetThumbnailImage()); current->SetLabel(g_localizeStrings.Get(20016)); items.Add(current); } // and add a "no thumb" entry as well CFileItemPtr nothumb(new CFileItem("thumb://None", false)); nothumb->SetIconImage(pItem->GetIconImage()); nothumb->SetLabel(g_localizeStrings.Get(20018)); items.Add(nothumb); CStdString strThumb; VECSOURCES shares; if (g_guiSettings.GetString("pvrmenu.iconpath") != "") { CMediaSource share1; share1.strPath = g_guiSettings.GetString("pvrmenu.iconpath"); share1.strName = g_localizeStrings.Get(19018); shares.push_back(share1); } g_mediaManager.GetLocalDrives(shares); if (!CGUIDialogFileBrowser::ShowAndGetImage(items, shares, g_localizeStrings.Get(1030), strThumb)) return false; if (strThumb == "thumb://Current") return true; if (strThumb == "thumb://None") strThumb = ""; pItem->SetProperty("Icon", strThumb); pItem->SetProperty("Changed", true); m_bContainsChanges = true; return true; } else if (iControl == RADIOBUTTON_USEEPG) { CGUIRadioButtonControl *pRadioButton = (CGUIRadioButtonControl *)GetControl(RADIOBUTTON_USEEPG); if (pRadioButton) { CFileItemPtr pItem = m_channelItems->Get(m_iSelected); if (pItem) { pItem->SetProperty("Changed", true); pItem->SetProperty("UseEPG", pRadioButton->IsSelected()); m_bContainsChanges = true; } } } else if (iControl == SPIN_EPGSOURCE_SELECTION) { /// TODO: Add EPG scraper support return true; CGUISpinControlEx *pSpin = (CGUISpinControlEx *)GetControl(SPIN_EPGSOURCE_SELECTION); if (pSpin) { CFileItemPtr pItem = m_channelItems->Get(m_iSelected); if (pItem) { pItem->SetProperty("EPGSource", (int)0); pItem->SetProperty("Changed", true); m_bContainsChanges = true; return true; } } } else if (iControl == BUTTON_GROUP_MANAGER) { /* Load group manager dialog */ CGUIDialogPVRGroupManager* pDlgInfo = (CGUIDialogPVRGroupManager*)g_windowManager.GetWindow(WINDOW_DIALOG_PVR_GROUP_MANAGER); if (!pDlgInfo) return false; pDlgInfo->SetRadio(m_bIsRadio); /* Open dialog window */ pDlgInfo->DoModal(); return true; } else if (iControl == BUTTON_EDIT_CHANNEL) { CFileItemPtr pItem = m_channelItems->Get(m_iSelected); if (!pItem) return false; if (pItem->GetPropertyBOOL("Virtual")) { CStdString strURL = pItem->GetProperty("StreamURL"); if (CGUIDialogKeyboard::ShowAndGetInput(strURL, g_localizeStrings.Get(19214), false)) pItem->SetProperty("StreamURL", strURL); return true; } CGUIDialogOK::ShowAndGetInput(19033,19038,0,0); return true; } else if (iControl == BUTTON_DELETE_CHANNEL) { CFileItemPtr pItem = m_channelItems->Get(m_iSelected); if (!pItem) return false; // prompt user for confirmation of channel record CGUIDialogYesNo* pDialog = (CGUIDialogYesNo*)g_windowManager.GetWindow(WINDOW_DIALOG_YES_NO); if (!pDialog) return true; pDialog->SetHeading(19211); pDialog->SetLine(0, ""); pDialog->SetLine(1, 750); pDialog->SetLine(2, ""); pDialog->DoModal(); if (pDialog->IsConfirmed()) { if (pItem->GetPropertyBOOL("Virtual")) { CPVRDatabase *database = CPVRManager::Get()->GetTVDatabase(); database->Open(); database->Delete(*pItem->GetPVRChannelInfoTag()); database->Close(); m_channelItems->Remove(m_iSelected); m_viewControl.SetItems(*m_channelItems); Renumber(); return true; } CGUIDialogOK::ShowAndGetInput(19033,19038,0,0); } return true; } else if (iControl == BUTTON_NEW_CHANNEL) { std::vector<long> clients; CGUIDialogSelect* pDlgSelect = (CGUIDialogSelect*)g_windowManager.GetWindow(WINDOW_DIALOG_SELECT); if (!pDlgSelect) return false; pDlgSelect->SetHeading(19213); // Select Client pDlgSelect->Add(g_localizeStrings.Get(19209)); clients.push_back(XBMC_VIRTUAL_CLIENTID); std::map<long, CStdString> clientMap; if (CPVRManager::GetClients()->GetClients(&clientMap) > 0) { std::map<long,CStdString>::iterator itr; for (itr = clientMap.begin() ; itr != clientMap.end(); itr++) { clients.push_back((*itr).first); pDlgSelect->Add(clientMap[(*itr).first]); } } pDlgSelect->DoModal(); int selection = pDlgSelect->GetSelectedLabel(); if (selection >= 0 && selection <= (int) clients.size()) { int clientID = clients[selection]; if (clientID == XBMC_VIRTUAL_CLIENTID) { CStdString strURL = ""; if (CGUIDialogKeyboard::ShowAndGetInput(strURL, g_localizeStrings.Get(19214), false)) { if (!strURL.IsEmpty()) { CPVRChannel newchannel(m_bIsRadio); newchannel.SetChannelName(g_localizeStrings.Get(19204)); newchannel.SetEPGEnabled(false); newchannel.SetVirtual(true); newchannel.SetStreamURL(strURL); newchannel.SetClientID(XBMC_VIRTUAL_CLIENTID); CPVRDatabase *database = CPVRManager::Get()->GetTVDatabase(); database->Open(); database->Persist(newchannel); database->Close(); CFileItemPtr channel(new CFileItem(newchannel)); if (channel) { channel->SetProperty("ActiveChannel", true); channel->SetProperty("Name", g_localizeStrings.Get(19204)); channel->SetProperty("UseEPG", false); channel->SetProperty("Icon", newchannel.IconPath()); channel->SetProperty("EPGSource", (int)0); channel->SetProperty("ClientName", g_localizeStrings.Get(19209)); m_channelItems->AddFront(channel, m_iSelected); m_viewControl.SetItems(*m_channelItems); Renumber(); } } } } else { CGUIDialogOK::ShowAndGetInput(19033,19038,0,0); } } return true; } } break; } return CGUIDialog::OnMessage(message); }
void CGUIDialogAddonSettings::CreateControls() { FreeControls(); CGUISpinControlEx *pOriginalSpin = dynamic_cast<CGUISpinControlEx*>(GetControl(CONTROL_DEFAULT_SPIN)); CGUIRadioButtonControl *pOriginalRadioButton = dynamic_cast<CGUIRadioButtonControl *>(GetControl(CONTROL_DEFAULT_RADIOBUTTON)); CGUIButtonControl *pOriginalButton = dynamic_cast<CGUIButtonControl *>(GetControl(CONTROL_DEFAULT_BUTTON)); CGUIImage *pOriginalImage = dynamic_cast<CGUIImage *>(GetControl(CONTROL_DEFAULT_SEPARATOR)); CGUILabelControl *pOriginalLabel = dynamic_cast<CGUILabelControl *>(GetControl(CONTROL_DEFAULT_LABEL_SEPARATOR)); CGUISettingsSliderControl *pOriginalSlider = dynamic_cast<CGUISettingsSliderControl *>(GetControl(CONTROL_DEFAULT_SLIDER)); if (!m_addon || !pOriginalSpin || !pOriginalRadioButton || !pOriginalButton || !pOriginalImage || !pOriginalLabel || !pOriginalSlider) return; pOriginalSpin->SetVisible(false); pOriginalRadioButton->SetVisible(false); pOriginalButton->SetVisible(false); pOriginalImage->SetVisible(false); pOriginalLabel->SetVisible(false); pOriginalSlider->SetVisible(false); CGUIControlGroupList *group = dynamic_cast<CGUIControlGroupList *>(GetControl(CONTROL_SETTINGS_AREA)); if (!group) return; // set our dialog heading SET_CONTROL_LABEL(CONTROL_HEADING_LABEL, m_strHeading); CGUIControl* pControl = NULL; int controlId = CONTROL_START_SETTING; const TiXmlElement *setting = GetFirstSetting(); while (setting) { const std::string type = XMLUtils::GetAttribute(setting, "type"); const std::string id = XMLUtils::GetAttribute(setting, "id"); const std::string values = XMLUtils::GetAttribute(setting, "values"); const std::string lvalues = XMLUtils::GetAttribute(setting, "lvalues"); const std::string entries = XMLUtils::GetAttribute(setting, "entries"); const std::string defaultVal = XMLUtils::GetAttribute(setting, "default"); const std::string subsetting = XMLUtils::GetAttribute(setting, "subsetting"); const std::string label = GetString(setting->Attribute("label"), subsetting == "true"); bool bSort = XMLUtils::GetAttribute(setting, "sort") == "yes"; if (!type.empty()) { bool isAddonSetting = false; if (type == "text" || type == "ipaddress" || type == "number" || type == "video" || type == "audio" || type == "image" || type == "folder" || type == "executable" || type == "file" || type == "action" || type == "date" || type == "time" || type == "select" || (isAddonSetting = type == "addon")) { pControl = new CGUIButtonControl(*pOriginalButton); if (!pControl) return; ((CGUIButtonControl *)pControl)->SetLabel(label); if (!id.empty()) { std::string value = m_settings[id]; m_buttonValues[id] = value; // get any option to test for hidden const std::string option = XMLUtils::GetAttribute(setting, "option"); if (option == "urlencoded") value = CURL::Decode(value); else if (option == "hidden") { std::string hiddenText; hiddenText.append(value.size(), L'*'); ((CGUIButtonControl *)pControl)->SetLabel2(hiddenText); } else { if (isAddonSetting) ((CGUIButtonControl *)pControl)->SetLabel2(GetAddonNames(value)); else if (type == "select" && !lvalues.empty()) { vector<string> valuesVec = StringUtils::Split(lvalues, '|'); int selected = atoi(value.c_str()); if (selected >= 0 && selected < (int)valuesVec.size()) { std::string label = m_addon->GetString(atoi(valuesVec[selected].c_str())); if (label.empty()) label = g_localizeStrings.Get(atoi(valuesVec[selected].c_str())); ((CGUIButtonControl *)pControl)->SetLabel2(label); } } else ((CGUIButtonControl *)pControl)->SetLabel2(value); } } else ((CGUIButtonControl *)pControl)->SetLabel2(defaultVal); } else if (type == "bool" && !id.empty()) { pControl = new CGUIRadioButtonControl(*pOriginalRadioButton); if (!pControl) return; ((CGUIRadioButtonControl *)pControl)->SetLabel(label); ((CGUIRadioButtonControl *)pControl)->SetSelected(m_settings[id] == "true"); } else if ((type == "enum" || type == "labelenum") && !id.empty()) { vector<std::string> valuesVec; vector<std::string> entryVec; pControl = new CGUISpinControlEx(*pOriginalSpin); if (!pControl) return; ((CGUISpinControlEx *)pControl)->SetText(label); if (!lvalues.empty()) StringUtils::Tokenize(lvalues, valuesVec, "|"); else if (values == "$HOURS") { for (unsigned int i = 0; i < 24; i++) { CDateTime time(2000, 1, 1, i, 0, 0); valuesVec.push_back(g_infoManager.LocalizeTime(time, TIME_FORMAT_HH_MM_XX)); } } else StringUtils::Tokenize(values, valuesVec, "|"); if (!entries.empty()) StringUtils::Tokenize(entries, entryVec, "|"); if(bSort && type == "labelenum") std::sort(valuesVec.begin(), valuesVec.end(), sortstringbyname()); for (unsigned int i = 0; i < valuesVec.size(); i++) { int iAdd = i; if (entryVec.size() > i) iAdd = atoi(entryVec[i].c_str()); if (!lvalues.empty()) { std::string replace = m_addon->GetString(atoi(valuesVec[i].c_str())); if (replace.empty()) replace = g_localizeStrings.Get(atoi(valuesVec[i].c_str())); ((CGUISpinControlEx *)pControl)->AddLabel(replace, iAdd); } else ((CGUISpinControlEx *)pControl)->AddLabel(valuesVec[i], iAdd); } if (type == "labelenum") { // need to run through all our settings and find the one that matches ((CGUISpinControlEx*) pControl)->SetValueFromLabel(m_settings[id]); } else ((CGUISpinControlEx*) pControl)->SetValue(atoi(m_settings[id].c_str())); } else if (type == "fileenum" && !id.empty()) { pControl = new CGUISpinControlEx(*pOriginalSpin); if (!pControl) return; ((CGUISpinControlEx *)pControl)->SetText(label); ((CGUISpinControlEx *)pControl)->SetFloatValue(1.0f); vector<std::string> items = GetFileEnumValues(values, XMLUtils::GetAttribute(setting, "mask"), XMLUtils::GetAttribute(setting, "option")); for (unsigned int i = 0; i < items.size(); ++i) { ((CGUISpinControlEx *)pControl)->AddLabel(items[i], i); if (StringUtils::EqualsNoCase(items[i], m_settings[id])) ((CGUISpinControlEx *)pControl)->SetValue(i); } } // Sample: <setting id="mysettingname" type="rangeofnum" label="30000" rangestart="0" rangeend="100" elements="11" valueformat="30001" default="0" /> // in strings.xml: <string id="30001">%2.0f mp</string> // creates 11 piece, text formated number labels from 0 to 100 else if (type == "rangeofnum" && !id.empty()) { pControl = new CGUISpinControlEx(*pOriginalSpin); if (!pControl) return; ((CGUISpinControlEx *)pControl)->SetText(label); ((CGUISpinControlEx *)pControl)->SetFloatValue(1.0f); double rangestart = 0, rangeend = 1; setting->Attribute("rangestart", &rangestart); setting->Attribute("rangeend", &rangeend); int elements = 2; setting->Attribute("elements", &elements); std::string valueformat; if (setting->Attribute("valueformat")) valueformat = m_addon->GetString(atoi(setting->Attribute("valueformat"))); for (int i = 0; i < elements; i++) { std::string valuestring; if (elements < 2) valuestring = StringUtils::Format(valueformat.c_str(), rangestart); else valuestring = StringUtils::Format(valueformat.c_str(), rangestart+(rangeend-rangestart)/(elements-1)*i); ((CGUISpinControlEx *)pControl)->AddLabel(valuestring, i); } ((CGUISpinControlEx *)pControl)->SetValue(atoi(m_settings[id].c_str())); } // Sample: <setting id="mysettingname" type="slider" label="30000" range="5,5,60" option="int" default="5"/> // to make ints from 5-60 with 5 steps else if (type == "slider" && !id.empty()) { pControl = new CGUISettingsSliderControl(*pOriginalSlider); if (!pControl) return; ((CGUISettingsSliderControl *)pControl)->SetText(label); float fMin = 0.0f; float fMax = 100.0f; float fInc = 1.0f; vector<std::string> range = StringUtils::Split(XMLUtils::GetAttribute(setting, "range"), ','); if (range.size() > 1) { fMin = (float)atof(range[0].c_str()); if (range.size() > 2) { fMax = (float)atof(range[2].c_str()); fInc = (float)atof(range[1].c_str()); } else fMax = (float)atof(range[1].c_str()); } std::string option = XMLUtils::GetAttribute(setting, "option"); int iType=0; if (option.empty() || StringUtils::EqualsNoCase(option, "float")) iType = SLIDER_CONTROL_TYPE_FLOAT; else if (StringUtils::EqualsNoCase(option, "int")) iType = SLIDER_CONTROL_TYPE_INT; else if (StringUtils::EqualsNoCase(option, "percent")) iType = SLIDER_CONTROL_TYPE_PERCENTAGE; ((CGUISettingsSliderControl *)pControl)->SetType(iType); ((CGUISettingsSliderControl *)pControl)->SetFloatRange(fMin, fMax); ((CGUISettingsSliderControl *)pControl)->SetFloatInterval(fInc); ((CGUISettingsSliderControl *)pControl)->SetFloatValue((float)atof(m_settings[id].c_str())); } else if (type == "lsep") { pControl = new CGUILabelControl(*pOriginalLabel); if (pControl) ((CGUILabelControl *)pControl)->SetLabel(label); } else if (type == "sep") pControl = new CGUIImage(*pOriginalImage); } if (pControl) { pControl->SetWidth(group->GetWidth()); pControl->SetVisible(true); pControl->SetID(controlId); pControl->AllocResources(); group->AddControl(pControl); pControl = NULL; } setting = setting->NextSiblingElement("setting"); controlId++; } EnableControls(); }
bool CGUIWindowPVRChannels::OnMessage(CGUIMessage& message) { bool bReturn = false; switch (message.GetMessage()) { case GUI_MSG_CLICKED: if (message.GetSenderId() == m_viewControl.GetCurrentControl()) { int iItem = m_viewControl.GetSelectedItem(); if (iItem >= 0 && iItem < m_vecItems->Size()) { bReturn = true; switch (message.GetParam1()) { case ACTION_SELECT_ITEM: case ACTION_MOUSE_LEFT_CLICK: case ACTION_PLAY: ActionPlayChannel(m_vecItems->Get(iItem).get()); break; case ACTION_SHOW_INFO: ShowEPGInfo(m_vecItems->Get(iItem).get()); break; case ACTION_DELETE_ITEM: ActionDeleteChannel(m_vecItems->Get(iItem).get()); break; case ACTION_CONTEXT_MENU: case ACTION_MOUSE_RIGHT_CLICK: OnPopupMenu(iItem); break; default: bReturn = false; break; } } } else if (message.GetSenderId() == CONTROL_BTNSHOWHIDDEN) { CGUIRadioButtonControl *radioButton = (CGUIRadioButtonControl*)GetControl(CONTROL_BTNSHOWHIDDEN); if (radioButton) { m_bShowHiddenChannels = radioButton->IsSelected(); Update(GetDirectoryPath()); } bReturn = true; } else if (message.GetSenderId() == CONTROL_BTNFILTERCHANNELS) { std::string filter = GetProperty("filter").asString(); CGUIKeyboardFactory::ShowAndGetFilter(filter, false); OnFilterItems(filter); bReturn = true; } break; case GUI_MSG_REFRESH_LIST: switch(message.GetParam1()) { case ObservableMessageChannelGroup: case ObservableMessageTimers: case ObservableMessageEpgActiveItem: case ObservableMessageCurrentItem: { if (IsActive()) SetInvalid(); bReturn = true; break; } case ObservableMessageChannelGroupReset: { if (IsActive()) Refresh(true); bReturn = true; break; } } break; } return bReturn || CGUIWindowPVRBase::OnMessage(message); }
void CGUIDialogSettings::UpdateSetting(unsigned int id) { unsigned int settingNum = (unsigned int)-1; for (unsigned int i = 0; i < m_settings.size(); i++) { if (m_settings[i].id == id) { settingNum = i; break; } } if(settingNum == (unsigned int)-1) return; SettingInfo &setting = m_settings.at(settingNum); unsigned int controlID = settingNum + CONTROL_START; if (setting.type == SettingInfo::SPIN) { CGUISpinControlEx *pControl = (CGUISpinControlEx *)GetControl(controlID); if (pControl && setting.data) pControl->SetValue(*(int *)setting.data); } else if (setting.type == SettingInfo::CHECK) { CGUIRadioButtonControl *pControl = (CGUIRadioButtonControl *)GetControl(controlID); if (pControl && setting.data) pControl->SetSelected(*(bool *)setting.data); } else if (setting.type == SettingInfo::CHECK_UCHAR) { CGUIRadioButtonControl *pControl = (CGUIRadioButtonControl *)GetControl(controlID); if (pControl && setting.data) pControl->SetSelected(*(unsigned char*)setting.data ? true : false); } else if (setting.type == SettingInfo::SLIDER) { CGUISettingsSliderControl *pControl = (CGUISettingsSliderControl *)GetControl(controlID); if (pControl && setting.data) { float value = *(float *)setting.data; pControl->SetFloatValue(value); if (setting.formatFunction) pControl->SetTextValue(setting.formatFunction(value, setting.interval)); } } else if (setting.type == SettingInfo::BUTTON_DIALOG) { SET_CONTROL_LABEL(controlID,setting.name); CGUIButtonControl *pControl = (CGUIButtonControl *)GetControl(controlID); if (pControl && setting.data) pControl->SetLabel2(*(CStdString *)setting.data); } else if (setting.type == SettingInfo::EDIT) { CGUIEditControl *pControl = (CGUIEditControl *)GetControl(controlID); if (pControl && setting.data) pControl->SetLabel2(*(CStdString *)setting.data); } else if (setting.type == SettingInfo::EDIT_NUM) { CGUIEditControl *pControl = (CGUIEditControl *)GetControl(controlID); if (pControl && setting.data) { CStdString strIndex; strIndex.Format("%i", *(int *)setting.data); pControl->SetLabel2(strIndex); } } else if (setting.type == SettingInfo::STRING) { SET_CONTROL_LABEL(controlID, setting.name); string strNewValue = string(*(CStdString *)setting.data); if (strNewValue.empty()) strNewValue = "-"; SET_CONTROL_LABEL2(controlID, strNewValue); } if (setting.enabled) { CONTROL_ENABLE(controlID); } else { CONTROL_DISABLE(controlID); } }
void CGUIDialogPVRGuideSearch::Update() { CGUISpinControlEx *pSpin; CGUIEditControl *pEdit; CGUIRadioButtonControl *pRadioButton; if (!m_searchfilter) return; pEdit = (CGUIEditControl *)GetControl(CONTROL_EDIT_SEARCH); if (pEdit) { pEdit->SetLabel2(m_searchfilter->m_strSearchTerm); pEdit->SetInputType(CGUIEditControl::INPUT_TYPE_TEXT, 16017); } pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_CASE_SENS); if (pRadioButton) pRadioButton->SetSelected(m_searchfilter->m_bIsCaseSensitive); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_INC_DESC); if (pRadioButton) pRadioButton->SetSelected(m_searchfilter->m_bSearchInDescription); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_FTA_ONLY); if (pRadioButton) pRadioButton->SetSelected(m_searchfilter->m_bFTAOnly); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_UNK_GENRE); if (pRadioButton) pRadioButton->SetSelected(m_searchfilter->m_bIncludeUnknownGenres); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_IGNORE_REC); if (pRadioButton) pRadioButton->SetSelected(m_searchfilter->m_bIgnorePresentRecordings); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_IGNORE_TMR); if (pRadioButton) pRadioButton->SetSelected(m_searchfilter->m_bIgnorePresentTimers); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_SPIN_NO_REPEATS); if (pRadioButton) pRadioButton->SetSelected(m_searchfilter->m_bPreventRepeats); /* Set duration list spin */ pSpin = (CGUISpinControlEx *)GetControl(CONTROL_SPIN_MIN_DURATION); if (pSpin) { pSpin->Clear(); pSpin->AddLabel("-", -1); for (int i = 1; i < 12*60/5; i++) { CStdString string; string.Format(g_localizeStrings.Get(14044),i*5); pSpin->AddLabel(string, i*5); } pSpin->SetValue(m_searchfilter->m_iMinimumDuration); } pSpin = (CGUISpinControlEx *)GetControl(CONTROL_SPIN_MAX_DURATION); if (pSpin) { pSpin->Clear(); pSpin->AddLabel("-", -1); for (int i = 1; i < 12*60/5; i++) { CStdString string; string.Format(g_localizeStrings.Get(14044),i*5); pSpin->AddLabel(string, i*5); } pSpin->SetValue(m_searchfilter->m_iMaximumDuration); } /* Set time fields */ pEdit = (CGUIEditControl *)GetControl(CONTROL_EDIT_START_TIME); if (pEdit) { CDateTime time = m_searchfilter->m_startTime; pEdit->SetLabel2(time.GetAsLocalizedTime("", false)); pEdit->SetInputType(CGUIEditControl::INPUT_TYPE_TIME, 14066); } pEdit = (CGUIEditControl *)GetControl(CONTROL_EDIT_STOP_TIME); if (pEdit) { CDateTime time = m_searchfilter->m_endTime; pEdit->SetLabel2(time.GetAsLocalizedTime("", false)); pEdit->SetInputType(CGUIEditControl::INPUT_TYPE_TIME, 14066); } pEdit = (CGUIEditControl *)GetControl(CONTROL_EDIT_START_DATE); if (pEdit) { CDateTime date = m_searchfilter->m_startDate; pEdit->SetLabel2(date.GetAsDBDate()); pEdit->SetInputType(CGUIEditControl::INPUT_TYPE_DATE, 14067); } pEdit = (CGUIEditControl *)GetControl(CONTROL_EDIT_STOP_DATE); if (pEdit) { CDateTime date = m_searchfilter->m_endDate; pEdit->SetLabel2(date.GetAsDBDate()); pEdit->SetInputType(CGUIEditControl::INPUT_TYPE_DATE, 14067); } /* Set Channel list spin */ pSpin = (CGUISpinControlEx *)GetControl(CONTROL_SPIN_CHANNELS); if (pSpin) { CFileItemList channelslist_tv; const CPVRChannelGroup *group = CPVRManager::GetChannelGroups()->GetById(false, m_searchfilter->m_iChannelGroup); if (group) group->GetMembers(&channelslist_tv); pSpin->Clear(); pSpin->AddLabel(g_localizeStrings.Get(19217), -1); pSpin->AddLabel(g_localizeStrings.Get(19023), -2); pSpin->AddLabel(g_localizeStrings.Get(19024), -3); for (int i = 0; i < channelslist_tv.Size(); i++) { int chanNumber = channelslist_tv[i]->GetPVRChannelInfoTag()->ChannelNumber(); CStdString string; string.Format("%i %s", chanNumber, channelslist_tv[i]->GetPVRChannelInfoTag()->ChannelName().c_str()); pSpin->AddLabel(string, chanNumber); } pSpin->SetValue(m_searchfilter->m_iChannelNumber); } /* Set Group list spin */ pSpin = (CGUISpinControlEx *)GetControl(CONTROL_SPIN_GROUPS); if (pSpin) { CFileItemList grouplist; CPVRManager::GetChannelGroups()->GetTV()->GetGroupList(&grouplist); pSpin->Clear(); pSpin->AddLabel(g_localizeStrings.Get(593), -1); for (int i = 0; i < grouplist.Size(); i++) pSpin->AddLabel(grouplist[i]->GetLabel(), atoi(grouplist[i]->m_strPath)); pSpin->SetValue(m_searchfilter->m_iChannelGroup); } /* Set Genre list spin */ pSpin = (CGUISpinControlEx *)GetControl(CONTROL_SPIN_GENRE); if (pSpin) { pSpin->Clear(); pSpin->AddLabel(g_localizeStrings.Get(593), -1); pSpin->AddLabel(g_localizeStrings.Get(19500), EVCONTENTMASK_MOVIEDRAMA); pSpin->AddLabel(g_localizeStrings.Get(19516), EVCONTENTMASK_NEWSCURRENTAFFAIRS); pSpin->AddLabel(g_localizeStrings.Get(19532), EVCONTENTMASK_SHOW); pSpin->AddLabel(g_localizeStrings.Get(19548), EVCONTENTMASK_SPORTS); pSpin->AddLabel(g_localizeStrings.Get(19564), EVCONTENTMASK_CHILDRENYOUTH); pSpin->AddLabel(g_localizeStrings.Get(19580), EVCONTENTMASK_MUSICBALLETDANCE); pSpin->AddLabel(g_localizeStrings.Get(19596), EVCONTENTMASK_ARTSCULTURE); pSpin->AddLabel(g_localizeStrings.Get(19612), EVCONTENTMASK_SOCIALPOLITICALECONOMICS); pSpin->AddLabel(g_localizeStrings.Get(19628), EVCONTENTMASK_EDUCATIONALSCIENCE); pSpin->AddLabel(g_localizeStrings.Get(19644), EVCONTENTMASK_LEISUREHOBBIES); pSpin->AddLabel(g_localizeStrings.Get(19660), EVCONTENTMASK_SPECIAL); pSpin->AddLabel(g_localizeStrings.Get(19499), EVCONTENTMASK_USERDEFINED); pSpin->SetValue(m_searchfilter->m_iGenreType); } }
void CGUIDialogPVRGuideSearch::Update() { CGUIEditControl *pEdit; CGUIRadioButtonControl *pRadioButton; if (!m_searchFilter) return; pEdit = (CGUIEditControl *)GetControl(CONTROL_EDIT_SEARCH); if (pEdit) { pEdit->SetLabel2(m_searchFilter->m_strSearchTerm); pEdit->SetInputType(CGUIEditControl::INPUT_TYPE_TEXT, 16017); } pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_CASE_SENS); if (pRadioButton) pRadioButton->SetSelected(m_searchFilter->m_bIsCaseSensitive); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_INC_DESC); if (pRadioButton) pRadioButton->SetSelected(m_searchFilter->m_bSearchInDescription); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_FTA_ONLY); if (pRadioButton) pRadioButton->SetSelected(m_searchFilter->m_bFTAOnly); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_UNK_GENRE); if (pRadioButton) pRadioButton->SetSelected(m_searchFilter->m_bIncludeUnknownGenres); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_IGNORE_REC); if (pRadioButton) pRadioButton->SetSelected(m_searchFilter->m_bIgnorePresentRecordings); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_IGNORE_TMR); if (pRadioButton) pRadioButton->SetSelected(m_searchFilter->m_bIgnorePresentTimers); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_SPIN_NO_REPEATS); if (pRadioButton) pRadioButton->SetSelected(m_searchFilter->m_bPreventRepeats); /* Set time fields */ pEdit = (CGUIEditControl *)GetControl(CONTROL_EDIT_START_TIME); if (pEdit) { pEdit->SetLabel2(m_searchFilter->m_endDateTime.GetAsLocalizedTime("", false)); pEdit->SetInputType(CGUIEditControl::INPUT_TYPE_TIME, 14066); } pEdit = (CGUIEditControl *)GetControl(CONTROL_EDIT_STOP_TIME); if (pEdit) { pEdit->SetLabel2(m_searchFilter->m_startDateTime.GetAsLocalizedTime("", false)); pEdit->SetInputType(CGUIEditControl::INPUT_TYPE_TIME, 14066); } pEdit = (CGUIEditControl *)GetControl(CONTROL_EDIT_START_DATE); if (pEdit) { pEdit->SetLabel2(m_searchFilter->m_startDateTime.GetAsDBDate()); pEdit->SetInputType(CGUIEditControl::INPUT_TYPE_DATE, 14067); } pEdit = (CGUIEditControl *)GetControl(CONTROL_EDIT_STOP_DATE); if (pEdit) { pEdit->SetLabel2(m_searchFilter->m_endDateTime.GetAsDBDate()); pEdit->SetInputType(CGUIEditControl::INPUT_TYPE_DATE, 14067); } UpdateDurationSpin(); UpdateGroupsSpin(); UpdateChannelSpin(); UpdateGenreSpin(); }
void CGUIDialogPVRGuideSearch::OnSearch() { CStdString strTmp; CGUISpinControlEx *pSpin; CGUIEditControl *pEdit; CGUIRadioButtonControl *pRadioButton; if (!m_searchFilter) return; pEdit = (CGUIEditControl *)GetControl(CONTROL_EDIT_SEARCH); if (pEdit) m_searchFilter->m_strSearchTerm = pEdit->GetLabel2(); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_INC_DESC); if (pRadioButton) m_searchFilter->m_bSearchInDescription = pRadioButton->IsSelected(); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_CASE_SENS); if (pRadioButton) m_searchFilter->m_bIsCaseSensitive = pRadioButton->IsSelected(); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_FTA_ONLY); if (pRadioButton) m_searchFilter->m_bFTAOnly = pRadioButton->IsSelected(); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_UNK_GENRE); if (pRadioButton) m_searchFilter->m_bIncludeUnknownGenres = pRadioButton->IsSelected(); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_IGNORE_REC); if (pRadioButton) m_searchFilter->m_bIgnorePresentRecordings = pRadioButton->IsSelected(); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_BTN_IGNORE_TMR); if (pRadioButton) m_searchFilter->m_bIgnorePresentTimers = pRadioButton->IsSelected(); pRadioButton = (CGUIRadioButtonControl *)GetControl(CONTROL_SPIN_NO_REPEATS); if (pRadioButton) m_searchFilter->m_bPreventRepeats = pRadioButton->IsSelected(); pSpin = (CGUISpinControlEx *)GetControl(CONTROL_SPIN_GENRE); if (pSpin) m_searchFilter->m_iGenreType = pSpin->GetValue(); pSpin = (CGUISpinControlEx *)GetControl(CONTROL_SPIN_MIN_DURATION); if (pSpin) m_searchFilter->m_iMinimumDuration = pSpin->GetValue(); pSpin = (CGUISpinControlEx *)GetControl(CONTROL_SPIN_MAX_DURATION); if (pSpin) m_searchFilter->m_iMaximumDuration = pSpin->GetValue(); pSpin = (CGUISpinControlEx *)GetControl(CONTROL_SPIN_CHANNELS); if (pSpin) m_searchFilter->m_iChannelNumber = pSpin->GetValue(); pSpin = (CGUISpinControlEx *)GetControl(CONTROL_SPIN_GROUPS); if (pSpin) m_searchFilter->m_iChannelGroup = pSpin->GetValue(); pEdit = (CGUIEditControl *)GetControl(CONTROL_EDIT_START_TIME); if (pEdit) strTmp = pEdit->GetLabel2(); pEdit = (CGUIEditControl *)GetControl(CONTROL_EDIT_START_DATE); if (pEdit) ReadDateTime(pEdit->GetLabel2(), strTmp, m_searchFilter->m_startDateTime); strTmp.clear(); pEdit = (CGUIEditControl *)GetControl(CONTROL_EDIT_STOP_TIME); if (pEdit) strTmp = pEdit->GetLabel2(); pEdit = (CGUIEditControl *)GetControl(CONTROL_EDIT_STOP_DATE); if (pEdit) ReadDateTime(pEdit->GetLabel2(), strTmp, m_searchFilter->m_endDateTime); }