bool CGUIControlButtonSetting::OnClick() { if (m_pButton == NULL) return false; const std::string &controlFormat = m_pSetting->GetControl()->GetFormat(); if (controlFormat == "addon") { // prompt for the addon CSettingAddon *setting = (CSettingAddon *)m_pSetting; CStdString addonID = setting->GetValue(); if (!CGUIWindowAddonBrowser::SelectAddonID(setting->GetAddonType(), addonID, setting->AllowEmpty()) == 1) return false; return setting->SetValue(addonID); } if (controlFormat == "path") return GetPath((CSettingPath *)m_pSetting); if (controlFormat == "action") { // simply call the OnSettingAction callback and whoever knows what to // do can do so (based on the setting's identification CSettingAction *pSettingAction = (CSettingAction *)m_pSetting; pSettingAction->OnSettingAction(pSettingAction); return true; } return false; }
bool CGUIControlButtonSetting::OnClick() { if (m_pButton == NULL) return false; bool success = false; switch (m_pSetting->GetControl().GetFormat()) { case SettingControlFormatAddon: { // prompt for the addon CSettingAddon *setting = (CSettingAddon *)m_pSetting; CStdString addonID = setting->GetValue(); if (!CGUIWindowAddonBrowser::SelectAddonID(setting->GetAddonType(), addonID, setting->AllowEmpty()) == 1) return false; success = setting->SetValue(addonID); break; } case SettingControlFormatPath: { success = GetPath((CSettingPath *)m_pSetting); break; } case SettingControlFormatAction: { // simply call the OnSettingAction callback and whoever knows what to // do can do so (based on the setting's identification CSettingAction *pSettingAction = (CSettingAction *)m_pSetting; pSettingAction->OnSettingAction(pSettingAction); success = true; break; } default: return false; } return success; }
bool CGUIControlButtonSetting::OnClick() { if (m_pButton == NULL) return false; const ISettingControl *control = m_pSetting->GetControl(); const std::string &controlType = control->GetType(); const std::string &controlFormat = control->GetFormat(); if (controlType == "button") { const CSettingControlButton *buttonControl = static_cast<const CSettingControlButton*>(control); if (controlFormat == "addon") { // prompt for the addon CSettingAddon *setting = (CSettingAddon *)m_pSetting; std::string addonID = setting->GetValue(); if (CGUIWindowAddonBrowser::SelectAddonID(setting->GetAddonType(), addonID, setting->AllowEmpty(), buttonControl->ShowAddonDetails(), buttonControl->ShowInstalledAddons(), buttonControl->ShowInstallableAddons(), buttonControl->ShowMoreAddons()) != 1) return false; SetValid(setting->SetValue(addonID)); } else if (controlFormat == "path") SetValid(GetPath((CSettingPath *)m_pSetting)); else if (controlFormat == "action") { // simply call the OnSettingAction callback and whoever knows what to // do can do so (based on the setting's identification CSettingAction *pSettingAction = (CSettingAction *)m_pSetting; pSettingAction->OnSettingAction(pSettingAction); SetValid(true); } } else if (controlType == "slider") { float value, min, step, max; if (m_pSetting->GetType() == SettingTypeInteger) { CSettingInt *settingInt = static_cast<CSettingInt*>(m_pSetting); value = (float)settingInt->GetValue(); min = (float)settingInt->GetMinimum(); step = (float)settingInt->GetStep(); max = (float)settingInt->GetMaximum(); } else if (m_pSetting->GetType() == SettingTypeNumber) { CSettingNumber *settingNumber = static_cast<CSettingNumber*>(m_pSetting); value = (float)settingNumber->GetValue(); min = (float)settingNumber->GetMinimum(); step = (float)settingNumber->GetStep(); max = (float)settingNumber->GetMaximum(); } else return false; const CSettingControlSlider *sliderControl = static_cast<const CSettingControlSlider*>(control); CGUIDialogSlider::ShowAndGetInput(g_localizeStrings.Get(sliderControl->GetHeading()), value, min, step, max, this, NULL); SetValid(true); } return IsValid(); }