xbmc
PVRSettings.h
1 /*
2  * Copyright (C) 2015-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 "settings/lib/ISettingCallback.h"
12 #include "settings/lib/ISettingsHandler.h"
13 #include "threads/CriticalSection.h"
14 
15 #include <map>
16 #include <memory>
17 #include <set>
18 #include <string>
19 #include <vector>
20 
21 class CSetting;
22 
24 
25 namespace PVR
26 {
28  {
29  public:
30  explicit CPVRSettings(const std::set<std::string>& settingNames);
31  ~CPVRSettings() override;
32 
33  void RegisterCallback(ISettingCallback* callback);
34  void UnregisterCallback(ISettingCallback* callback);
35 
36  // ISettingsHandler implementation
37  void OnSettingsLoaded() override;
38 
39  // ISettingCallback implementation
40  void OnSettingChanged(const std::shared_ptr<const CSetting>& setting) override;
41 
42  bool GetBoolValue(const std::string& settingName) const;
43  int GetIntValue(const std::string& settingName) const;
44  std::string GetStringValue(const std::string& settingName) const;
45 
46  // settings value filler for start/end recording margin time for PVR timers.
47  static void MarginTimeFiller(const std::shared_ptr<const CSetting>& setting,
48  std::vector<IntegerSettingOption>& list,
49  int& current,
50  void* data);
51 
52  // Dynamically hide or show settings.
53  static bool IsSettingVisible(const std::string& condition,
54  const std::string& value,
55  const std::shared_ptr<const CSetting>& setting,
56  void* data);
57 
58  // Do parental PIN check.
59  static bool CheckParentalPin(const std::string& condition,
60  const std::string& value,
61  const std::shared_ptr<const CSetting>& setting,
62  void* data);
63 
64  private:
65  CPVRSettings(const CPVRSettings&) = delete;
66  CPVRSettings& operator=(CPVRSettings const&) = delete;
67 
68  void Init(const std::set<std::string>& settingNames);
69 
70  mutable CCriticalSection m_critSection;
71  std::map<std::string, std::shared_ptr<CSetting>> m_settings;
72  std::set<ISettingCallback*> m_callbacks;
73 
74  static unsigned int m_iInstances;
75  };
76 }
Definition: ContextMenuManager.h:24
Definition: ISettingCallback.h:16
void OnSettingChanged(const std::shared_ptr< const CSetting > &setting) override
The value of the given setting has changed.
Definition: PVRSettings.cpp:109
Setting base class containing all the properties which are common to all settings independent of the ...
Definition: Setting.h:46
Definition: SettingDefinitions.h:66
Interface defining methods being called by the settings system if an action is performed on multiple/...
Definition: ISettingsHandler.h:16
void OnSettingsLoaded() override
Settings have been loaded.
Definition: PVRSettings.cpp:94
Definition: PVRSettings.h:27