CSettingString* CGUIDialogSettingsManualBase::AddList(CSettingGroup *group, const std::string &id, int label, int level, std::string value, StringSettingOptionsFiller filler, int heading, bool visible /* = true */, int help /* = -1 */) { if (group == NULL || id.empty() || label < 0 || filler == NULL || GetSetting(id) != NULL) return NULL; CSettingString *setting = new CSettingString(id, label, value, m_settingsManager); if (setting == NULL) return NULL; setting->SetControl(GetListControl("string", false, heading, false)); setting->SetOptionsFiller(filler, this); setSettingDetails(setting, level, visible, help); group->AddSetting(setting); return setting; }
CSettingList* CGUIDialogSettingsManualBase::AddList(CSettingGroup *group, const std::string &id, int label, int level, std::vector<std::string> values, StringSettingOptionsFiller filler, int heading, int minimumItems /* = 0 */, int maximumItems /* = -1 */, bool visible /* = true */, int help /* = -1 */) { if (group == NULL || id.empty() || label < 0 || filler == NULL || GetSetting(id) != NULL) return NULL; CSettingString *settingDefinition = new CSettingString(id, m_settingsManager); if (settingDefinition == NULL) return NULL; settingDefinition->SetOptionsFiller(filler, this); CSettingList *setting = new CSettingList(id, settingDefinition, label, m_settingsManager); if (setting == NULL) { delete settingDefinition; return NULL; } std::vector<CVariant> valueList; for (std::vector<std::string>::const_iterator itValue = values.begin(); itValue != values.end(); ++itValue) valueList.push_back(CVariant(*itValue)); SettingPtrList settingValues; if (!CSettingUtils::ValuesToList(setting, valueList, settingValues)) { delete settingDefinition; delete setting; return NULL; } // setting the default will also set the actual value on an unchanged setting setting->SetDefault(settingValues); setting->SetControl(GetListControl("string", false, heading, true)); setting->SetMinimumItems(minimumItems); setting->SetMaximumItems(maximumItems); setSettingDetails(setting, level, visible, help); group->AddSetting(setting); return setting; }