11 #include "addons/IAddon.h" 12 #include "settings/SettingControl.h" 13 #include "settings/SettingCreator.h" 14 #include "settings/SettingsBase.h" 15 #include "settings/lib/ISettingCallback.h" 23 enum class SettingDependencyOperator;
36 class IAddonInstanceHandler;
44 CAddonSettings(
const std::shared_ptr<IAddon>& addon, AddonInstanceId instanceId);
51 bool Load()
override {
return false; }
56 const std::string& settingType,
57 const std::string& settingId,
61 void OnSettingAction(
const std::shared_ptr<const CSetting>& setting)
override;
63 const std::string& GetAddonId()
const {
return m_addonId; }
69 bool HasSettings()
const;
71 std::string GetSettingLabel(
int label)
const;
73 std::shared_ptr<CSetting> AddSetting(
const std::string& settingId,
bool value);
74 std::shared_ptr<CSetting> AddSetting(
const std::string& settingId,
int value);
75 std::shared_ptr<CSetting> AddSetting(
const std::string& settingId,
double value);
76 std::shared_ptr<CSetting> AddSetting(
const std::string& settingId,
const std::string& value);
80 void InitializeSettingTypes()
override;
81 void InitializeControls()
override;
82 void InitializeConditions()
override;
85 bool InitializeDefinitions()
override {
return false; }
88 bool AddInstanceSettings();
91 bool ParseSettingVersion(
const CXBMCTinyXML& doc, uint32_t& version)
const;
93 std::shared_ptr<CSettingGroup> ParseOldSettingElement(
94 const TiXmlElement* categoryElement,
95 const std::shared_ptr<CSettingCategory>& category,
96 std::set<std::string>& settingIds);
98 std::shared_ptr<CSettingCategory> ParseOldCategoryElement(uint32_t& categoryId,
99 const TiXmlElement* categoryElement,
100 std::set<std::string>& settingIds);
102 bool InitializeFromOldSettingDefinitions(
const CXBMCTinyXML& doc);
103 std::shared_ptr<CSetting> InitializeFromOldSettingAction(
const std::string& settingId,
104 const TiXmlElement* settingElement,
105 const std::string& defaultValue);
106 std::shared_ptr<CSetting> InitializeFromOldSettingLabel();
107 std::shared_ptr<CSetting> InitializeFromOldSettingBool(
const std::string& settingId,
108 const TiXmlElement* settingElement,
109 const std::string& defaultValue);
110 std::shared_ptr<CSetting> InitializeFromOldSettingTextIpAddress(
111 const std::string& settingId,
112 const std::string& settingType,
113 const TiXmlElement* settingElement,
114 const std::string& defaultValue,
115 const int settingLabel);
116 std::shared_ptr<CSetting> InitializeFromOldSettingNumber(
const std::string& settingId,
117 const TiXmlElement* settingElement,
118 const std::string& defaultValue,
119 const int settingLabel);
120 std::shared_ptr<CSetting> InitializeFromOldSettingPath(
const std::string& settingId,
121 const std::string& settingType,
122 const TiXmlElement* settingElement,
123 const std::string& defaultValue,
124 const int settingLabel);
125 std::shared_ptr<CSetting> InitializeFromOldSettingDate(
const std::string& settingId,
126 const TiXmlElement* settingElement,
127 const std::string& defaultValue,
128 const int settingLabel);
129 std::shared_ptr<CSetting> InitializeFromOldSettingTime(
const std::string& settingId,
130 const TiXmlElement* settingElement,
131 const std::string& defaultValue,
132 const int settingLabel);
133 std::shared_ptr<CSetting> InitializeFromOldSettingSelect(
134 const std::string& settingId,
135 const TiXmlElement* settingElement,
136 const std::string& defaultValue,
137 const int settingLabel,
138 const std::string& settingValues,
139 const std::vector<std::string>& settingLValues);
140 std::shared_ptr<CSetting> InitializeFromOldSettingAddon(
const std::string& settingId,
141 const TiXmlElement* settingElement,
142 const std::string& defaultValue,
143 const int settingLabel);
144 std::shared_ptr<CSetting> InitializeFromOldSettingEnums(
145 const std::string& settingId,
146 const std::string& settingType,
147 const TiXmlElement* settingElement,
148 const std::string& defaultValue,
149 const std::string& settingValues,
150 const std::vector<std::string>& settingLValues);
151 std::shared_ptr<CSetting> InitializeFromOldSettingFileEnum(
const std::string& settingId,
152 const TiXmlElement* settingElement,
153 const std::string& defaultValue,
154 const std::string& settingValues);
155 std::shared_ptr<CSetting> InitializeFromOldSettingRangeOfNum(
const std::string& settingId,
156 const TiXmlElement* settingElement,
157 const std::string& defaultValue);
158 std::shared_ptr<CSetting> InitializeFromOldSettingSlider(
const std::string& settingId,
159 const TiXmlElement* settingElement,
160 const std::string& defaultValue);
161 std::shared_ptr<CSetting> InitializeFromOldSettingFileWithSource(
162 const std::string& settingId,
163 const TiXmlElement* settingElement,
164 const std::string& defaultValue,
168 std::map<std::string, std::string>&
settings)
const;
170 struct ConditionExpression
172 SettingDependencyOperator m_operator;
174 int32_t m_relativeSettingIndex;
178 bool ParseOldLabel(
const TiXmlElement* element,
const std::string& settingId,
int& labelId);
179 bool ParseOldCondition(
const std::shared_ptr<const CSetting>& setting,
180 const std::vector<std::shared_ptr<const CSetting>>& settings,
181 const std::string& condition,
183 static bool ParseOldConditionExpression(std::string str, ConditionExpression& expression);
185 static void FileEnumSettingOptionsFiller(
const std::shared_ptr<const CSetting>& setting,
186 std::vector<StringSettingOption>& list,
187 std::string& current,
191 const std::string m_addonId;
192 const std::string m_addonPath;
193 const std::string m_addonProfile;
194 const AddonInstanceId m_instanceId{ADDON_SETTINGS_ID};
195 std::weak_ptr<IAddon> m_addon;
197 uint32_t m_unidentifiedSettingId = 0;
198 int m_unknownSettingLabelId;
199 std::map<int, std::string> m_unknownSettingLabels;
Category of groups of settings being part of a section.
Definition: SettingSection.h:93
Definition: XBMCTinyXML.h:33
Definition: SettingControl.h:30
Definition: ISettingCallback.h:16
std::shared_ptr< CSetting > CreateSetting(const std::string &settingType, const std::string &settingId, CSettingsManager *settingsManager=nullptr) const override
Creates a new setting of the given custom setting type.
Definition: AddonSettings.cpp:169
Definition: AddonSettings.h:38
bool Load() override
Loads the setting values.
Definition: AddonSettings.h:51
Definition: SettingCreator.h:13
Definition: SettingDefinitions.h:85
Definition: settings.py:1
Basic wrapper around CSettingsManager providing the framework for properly setting up the settings ma...
Definition: SettingsBase.h:31
Settings manager responsible for initializing, loading and handling all settings. ...
Definition: SettingsManager.h:41
Group of settings being part of a category.
Definition: SettingSection.h:28
bool Save() override
Saves the setting values.
Definition: AddonSettings.cpp:438
Definition: SettingDependency.h:111
bool Initialize() override
Initializes the setting system with the generic settings definition and platform specific setting def...
Definition: AddonSettings.h:48
void OnSettingAction(const std::shared_ptr< const CSetting > &setting) override
The given setting has been activated.
Definition: AddonSettings.cpp:180