void CGUIControlSpinExSetting::FillControl() { m_pSpin->Clear(); switch (m_pSetting->GetControl().GetFormat()) { case SettingControlFormatNumber: { CSettingNumber *pSettingNumber = (CSettingNumber *)m_pSetting; m_pSpin->SetType(SPIN_CONTROL_TYPE_FLOAT); m_pSpin->SetFloatRange((float)pSettingNumber->GetMinimum(), (float)pSettingNumber->GetMaximum()); m_pSpin->SetFloatInterval((float)pSettingNumber->GetStep()); m_pSpin->SetFloatValue((float)pSettingNumber->GetValue()); break; } case SettingControlFormatInteger: { m_pSpin->SetType(SPIN_CONTROL_TYPE_TEXT); FillIntegerSettingControl(); break; } case SettingControlFormatString: { m_pSpin->SetType(SPIN_CONTROL_TYPE_TEXT); if (m_pSetting->GetType() == SettingTypeInteger) FillIntegerSettingControl(); else if (m_pSetting->GetType() == SettingTypeString) { CSettingString *pSettingString = (CSettingString *)m_pSetting; if (pSettingString->GetOptionsType() == SettingOptionsTypeDynamic) { DynamicStringSettingOptions options = pSettingString->UpdateDynamicOptions(); for (std::vector< std::pair<std::string, std::string> >::const_iterator option = options.begin(); option != options.end(); ++option) m_pSpin->AddLabel(option->first, option->second); m_pSpin->SetStringValue(pSettingString->GetValue()); } } break; } default: break; } }
void CSettingsManager::UpdateSettingByDependency(const std::string &settingId, const CSettingDependency &dependency) { CSetting *setting = GetSetting(settingId); if (setting == NULL) return; switch (dependency.GetType()) { case SettingDependencyTypeEnable: // just trigger the property changed callback and a call to // CSetting::IsEnabled() will automatically determine the new // enabled state OnSettingPropertyChanged(setting, "enabled"); break; case SettingDependencyTypeUpdate: { SettingType type = (SettingType)setting->GetType(); if (type == SettingTypeInteger) { CSettingInt *settingInt = ((CSettingInt*)setting); if (settingInt->GetOptionsType() == SettingOptionsTypeDynamic) settingInt->UpdateDynamicOptions(); } else if (type == SettingTypeString) { CSettingString *settingString = ((CSettingString*)setting); if (settingString->GetOptionsType() == SettingOptionsTypeDynamic) settingString->UpdateDynamicOptions(); } break; } case SettingDependencyTypeVisible: // just trigger the property changed callback and a call to // CSetting::IsVisible() will automatically determine the new // visible state OnSettingPropertyChanged(setting, "visible"); break; case SettingDependencyTypeNone: default: break; } }
bool CGUIControlListSetting::GetItems(CSetting *setting, CFileItemList &items) { switch (setting->GetControl().GetFormat()) { case SettingControlFormatInteger: return GetIntegerItems(setting, items); case SettingControlFormatString: { if (setting->GetType() == SettingTypeInteger) return GetIntegerItems(setting, items); else if (setting->GetType() == SettingTypeString) { CSettingString *pSettingString = (CSettingString *)setting; if (pSettingString->GetOptionsType() == SettingOptionsTypeDynamic) { DynamicStringSettingOptions options = pSettingString->UpdateDynamicOptions(); for (DynamicStringSettingOptions::const_iterator option = options.begin(); option != options.end(); ++option) { CFileItemPtr pItem = GetItem(option->first, option->second); if (StringUtils::EqualsNoCase(option->second, pSettingString->GetValue())) pItem->Select(true); items.Add(pItem); } } } break; } default: return false; } return true; }