11 #include "addons/Addon.h" 12 #include "addons/gui/skin/SkinTimerManager.h" 13 #include "guilib/GUIIncludes.h" 14 #include "windowing/GraphicContext.h" 22 #define CREDIT_LINE_LENGTH 50 31 class CSkinSettingUpdateHandler;
38 bool Serialize(TiXmlElement* parent)
const;
40 virtual std::string GetType()
const = 0;
42 virtual bool Deserialize(
const TiXmlElement* element);
47 virtual bool SerializeSetting(TiXmlElement* element)
const = 0;
50 typedef std::shared_ptr<CSkinSetting> CSkinSettingPtr;
57 std::string GetType()
const override {
return "string"; }
59 bool Deserialize(
const TiXmlElement* element)
override;
64 bool SerializeSetting(TiXmlElement* element)
const override;
67 typedef std::shared_ptr<CSkinSettingString> CSkinSettingStringPtr;
74 std::string GetType()
const override {
return "bool"; }
76 bool Deserialize(
const TiXmlElement* element)
override;
81 bool SerializeSetting(TiXmlElement* element)
const override;
84 typedef std::shared_ptr<CSkinSettingBool> CSkinSettingBoolPtr;
93 m_id(
id), m_name(name)
100 explicit CSkinInfo(
const AddonInfoPtr& addonInfo);
103 const AddonInfoPtr& addonInfo,
107 const AddonInfoPtr& addonInfo,
109 const std::vector<RESOLUTION_INFO>& resolutions,
110 float effectsSlowDown,
119 bool HasSkinFile(
const std::string &strFile)
const;
128 std::string GetSkinPath(
const std::string& file,
130 const std::string& baseDir =
"")
const;
143 int GetFirstWindow()
const;
148 int GetStartWindow()
const;
155 static bool TranslateResolution(
const std::string &name,
RESOLUTION_INFO &res);
157 void ResolveIncludes(TiXmlElement* node,
158 std::map<INFO::InfoPtr, bool>* xmlIncludeConditions =
nullptr);
160 float GetEffectsSlowdown()
const {
return m_effectsSlowDown; }
162 const std::vector<CStartupWindow>& GetStartupWindows()
const {
return m_startupWindows; }
167 void GetSkinPaths(std::vector<std::string> &paths)
const;
169 bool IsInUse()
const override;
171 const std::string& GetCurrentAspect()
const {
return m_currentAspect; }
182 void ProcessTimers();
192 static void SettingOptionsSkinColorsFiller(
const std::shared_ptr<const CSetting>& setting,
193 std::vector<StringSettingOption>& list,
194 std::string& current,
196 static void SettingOptionsSkinFontsFiller(
const std::shared_ptr<const CSetting>& setting,
197 std::vector<StringSettingOption>& list,
198 std::string& current,
200 static void SettingOptionsSkinThemesFiller(
const std::shared_ptr<const CSetting>& setting,
201 std::vector<StringSettingOption>& list,
202 std::string& current,
204 static void SettingOptionsStartupWindowsFiller(
const std::shared_ptr<const CSetting>& setting,
205 std::vector<IntegerSettingOption>& list,
211 bool HasSettings(AddonInstanceId
id = ADDON_SETTINGS_ID)
override {
return false; }
212 bool HasUserSettings(AddonInstanceId
id = ADDON_SETTINGS_ID)
override {
return false; }
214 int TranslateString(
const std::string &setting);
215 const std::string& GetString(
int setting)
const;
216 void SetString(
int setting,
const std::string &label);
218 int TranslateBool(
const std::string &setting);
219 bool GetBool(
int setting)
const;
220 void SetBool(
int setting,
bool set);
226 int GetInt(
int setting)
const;
228 std::set<CSkinSettingPtr> GetSkinSettings()
const;
229 CSkinSettingPtr GetSkinSetting(
const std::string& settingId);
230 std::shared_ptr<const CSkinSetting> GetSkinSetting(
const std::string& settingId)
const;
232 void Reset(
const std::string &setting);
235 static std::set<CSkinSettingPtr> ParseSettings(
const TiXmlElement* rootElement);
237 void OnPreInstall()
override;
238 void OnPostInstall(
bool update,
bool modal)
override;
246 bool TimerIsRunning(
const std::string& timer)
const;
252 float GetTimerElapsedSeconds(
const std::string& timer)
const;
257 void TimerStart(
const std::string& timer)
const;
262 void TimerStop(
const std::string& timer)
const;
265 bool LoadStartupWindows(
const AddonInfoPtr& addonInfo);
267 static CSkinSettingPtr ParseSetting(
const TiXmlElement* element);
269 bool SettingsLoaded(AddonInstanceId
id = ADDON_SETTINGS_ID)
const override;
272 AddonInstanceId
id = ADDON_SETTINGS_ID)
override;
273 bool SettingsToXML(
CXBMCTinyXML& doc, AddonInstanceId
id = ADDON_SETTINGS_ID)
const override;
276 std::vector<RESOLUTION_INFO> m_resolutions;
278 float m_effectsSlowDown;
280 std::string m_currentAspect;
282 std::vector<CStartupWindow> m_startupWindows;
289 std::map<int, CSkinSettingStringPtr> m_strings;
290 std::map<int, CSkinSettingBoolPtr> m_bools;
291 std::map<std::string, CSkinSettingPtr> m_settings;
292 std::unique_ptr<CSkinSettingUpdateHandler> m_settingsUpdateHandler;
297 extern std::shared_ptr<ADDON::CSkinInfo> g_SkinInfo;
bool IsDebugging() const
Return whether skin debugging is enabled.
Definition: Skin.h:135
bool HasSettings(AddonInstanceId id=ADDON_SETTINGS_ID) override
Don't handle skin settings like normal addon settings.
Definition: Skin.h:211
Definition: XBMCTinyXML.h:33
Setting base class containing all the properties which are common to all settings independent of the ...
Definition: Setting.h:46
CSkinTimerManager is the container and manager for Skin timers. Its role is that of checking if the t...
Definition: SkinTimerManager.h:24
CSkinTimerManager m_skinTimerManager
Definition: Skin.h:286
Definition: SettingDefinitions.h:85
Definition: SettingDefinitions.h:66
Provide info of a resolution.
Definition: Resolution.h:66
bool HasUserSettings(AddonInstanceId id=ADDON_SETTINGS_ID) override
Check whether the user has configured this add-on or not.
Definition: Skin.h:212
Definition: SkinVariable.h:29
Definition: GUIIncludes.h:26