kodi
SkinSettings.h
1 /*
2  * Copyright (C) 2013-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "addons/Skin.h"
12 #include "settings/ISubSettings.h"
13 #include "threads/CriticalSection.h"
14 
15 #include <memory>
16 #include <set>
17 #include <string>
18 
19 class TiXmlNode;
20 
22 {
23 public:
24  static CSkinSettings& GetInstance();
25 
26  bool Load(const TiXmlNode *settings) override;
27  bool Save(TiXmlNode *settings) const override;
28  void Clear() override;
29 
30  void MigrateSettings(const std::shared_ptr<ADDON::CSkinInfo>& skin);
31 
32  int TranslateString(const std::string &setting);
33  const std::string& GetString(int setting) const;
34  void SetString(int setting, const std::string &label);
35 
36  int TranslateBool(const std::string &setting);
37  bool GetBool(int setting) const;
38  void SetBool(int setting, bool set);
39 
44  int GetInt(int setting) const;
45 
46  std::set<ADDON::CSkinSettingPtr> GetSettings() const;
47  ADDON::CSkinSettingPtr GetSetting(const std::string& settingId);
48  std::shared_ptr<const ADDON::CSkinSetting> GetSetting(const std::string& settingId) const;
49 
50  void Reset(const std::string &setting);
51  void Reset();
52 
53 protected:
54  CSkinSettings();
55  CSkinSettings(const CSkinSettings&) = delete;
56  CSkinSettings& operator=(CSkinSettings const&) = delete;
57  ~CSkinSettings() override;
58 
59 private:
60  CCriticalSection m_critical;
61  std::set<ADDON::CSkinSettingPtr> m_settings;
62 };
bool Load(const TiXmlNode *settings) override
Load settings from the given XML node.
Definition: SkinSettings.cpp:105
int GetInt(int setting) const
Get the skin setting value as an integer value.
Definition: SkinSettings.cpp:65
bool Save(TiXmlNode *settings) const override
Save settings to the given XML node.
Definition: SkinSettings.cpp:127
void Clear() override
Clear any loaded setting values.
Definition: SkinSettings.cpp:137
Definition: settings.py:1
Definition: SkinSettings.h:21
Interface defining methods to load additional setting values from an XML file being loaded by the set...
Definition: ISubSettings.h:18