[WASAPI] fix stream types and frequencies enumeration
[xbmc.git] / xbmc / view / ViewStateSettings.h
blob2a18fc948bea43b5c3a1dffd4acd54adb557a838
1 /*
2 * Copyright (C) 2013-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
9 #pragma once
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"
18 #include <map>
19 #include <string>
21 class TiXmlNode;
23 class CViewStateSettings : public ISubSettings
25 public:
26 static CViewStateSettings& GetInstance();
28 bool Load(const TiXmlNode *settings) override;
29 bool Save(TiXmlNode *settings) const override;
30 void Clear() override;
32 const CViewState* Get(const std::string &viewState) const;
33 CViewState* Get(const std::string &viewState);
35 SettingLevel GetSettingLevel() const { return m_settingLevel; }
36 void SetSettingLevel(SettingLevel settingLevel);
37 void CycleSettingLevel();
38 SettingLevel GetNextSettingLevel() const;
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; }
48 protected:
49 CViewStateSettings();
50 CViewStateSettings(const CViewStateSettings&) = delete;
51 CViewStateSettings& operator=(CViewStateSettings const&) = delete;
52 ~CViewStateSettings() override;
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;
61 void AddViewState(const std::string& strTagName, int defaultView = DEFAULT_VIEW_LIST, SortBy defaultSort = SortByLabel);