xbmc
SettingsComponent.h
1 /*
2  * Copyright (C) 2005-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 <memory>
12 
13 class CAdvancedSettings;
14 class CProfileManager;
15 class CSettings;
16 
17 namespace KODI
18 {
19 namespace SUBTITLES
20 {
21 class CSubtitlesSettings;
22 } // namespace SUBTITLES
23 } // namespace KODI
24 
26 {
27 public:
29  virtual ~CSettingsComponent();
30 
34  void Initialize();
35 
40  bool Load();
41 
45  void Deinitialize();
46 
51  std::shared_ptr<CSettings> GetSettings();
52 
57  std::shared_ptr<CAdvancedSettings> GetAdvancedSettings();
58 
63  std::shared_ptr<KODI::SUBTITLES::CSubtitlesSettings> GetSubtitlesSettings();
64 
69  std::shared_ptr<CProfileManager> GetProfileManager();
70 
71 private:
72  bool InitDirectoriesLinux(bool bPlatformDirectories);
73  bool InitDirectoriesOSX(bool bPlatformDirectories);
74  bool InitDirectoriesWin32(bool bPlatformDirectories);
75  void CreateUserDirs() const;
76 
77  enum class State
78  {
79  DEINITED,
80  INITED,
81  LOADED
82  };
83  State m_state = State::DEINITED;
84 
85  std::shared_ptr<CSettings> m_settings;
86  std::shared_ptr<CAdvancedSettings> m_advancedSettings;
87  std::shared_ptr<KODI::SUBTITLES::CSubtitlesSettings> m_subtitlesSettings;
88  std::shared_ptr<CProfileManager> m_profileManager;
89 };
Wrapper around CSettingsManager responsible for properly setting up the settings manager and register...
Definition: Settings.h:27
Controller configuration window.
Definition: AudioDecoder.h:18
Definition: ProfileManager.h:25
Definition: SettingsComponent.h:25
Definition: AdvancedSettings.h:107