xbmc
ViewStateSettings.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 "ViewState.h"
12 #include "events/IEvent.h"
13 #include "settings/ISubSettings.h"
14 #include "settings/lib/Setting.h"
15 #include "threads/CriticalSection.h"
16 #include "windowing/GraphicContext.h"
17 
18 #include <map>
19 #include <string>
20 
21 class TiXmlNode;
22 
24 {
25 public:
26  static CViewStateSettings& GetInstance();
27 
28  bool Load(const TiXmlNode *settings) override;
29  bool Save(TiXmlNode *settings) const override;
30  void Clear() override;
31 
32  const CViewState* Get(const std::string &viewState) const;
33  CViewState* Get(const std::string &viewState);
34 
35  SettingLevel GetSettingLevel() const { return m_settingLevel; }
36  void SetSettingLevel(SettingLevel settingLevel);
37  void CycleSettingLevel();
38  SettingLevel GetNextSettingLevel() const;
39 
40  EventLevel GetEventLevel() const { return m_eventLevel; }
41  void SetEventLevel(EventLevel eventLevel);
42  void CycleEventLevel();
43  EventLevel GetNextEventLevel() const;
44  bool ShowHigherEventLevels() const { return m_eventShowHigherLevels; }
45  void SetShowHigherEventLevels(bool showHigherEventLevels) { m_eventShowHigherLevels = showHigherEventLevels; }
46  void ToggleShowHigherEventLevels() { m_eventShowHigherLevels = !m_eventShowHigherLevels; }
47 
48 protected:
50  CViewStateSettings(const CViewStateSettings&) = delete;
51  CViewStateSettings& operator=(CViewStateSettings const&) = delete;
52  ~CViewStateSettings() override;
53 
54 private:
55  std::map<std::string, CViewState*> m_viewStates;
56  SettingLevel m_settingLevel = SettingLevel::Standard;
57  EventLevel m_eventLevel = EventLevel::Basic;
58  bool m_eventShowHigherLevels = true;
59  mutable CCriticalSection m_critical;
60 
61  void AddViewState(const std::string& strTagName, int defaultView = DEFAULT_VIEW_LIST, SortBy defaultSort = SortByLabel);
62 };
void Clear() override
Clear any loaded setting values.
Definition: ViewStateSettings.cpp:190
Definition: ViewState.h:21
Definition: ViewStateSettings.h:23
Definition: settings.py:1
SortBy
Definition: SortUtils.h:49
bool Load(const TiXmlNode *settings) override
Load settings from the given XML node.
Definition: ViewStateSettings.cpp:68
bool Save(TiXmlNode *settings) const override
Save settings to the given XML node.
Definition: ViewStateSettings.cpp:136
SettingLevel
Levels which every setting is assigned to.
Definition: SettingLevel.h:15
Interface defining methods to load additional setting values from an XML file being loaded by the set...
Definition: ISubSettings.h:18
1 : Sort by Name (String: Label)
Definition: SortUtils.h:54