kodi
SettingsValueFlatJsonSerializer.h
1 /*
2  * Copyright (C) 2019 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/ISettingsValueSerializer.h"
12 #include "utils/Variant.h"
13 
14 #include <memory>
15 
16 class CSetting;
17 class CSettingCategory;
18 class CSettingGroup;
19 class CSettingSection;
20 
22 {
23 public:
24  explicit CSettingsValueFlatJsonSerializer(bool compact = true);
26 
27  void SetCompact(bool compact = true) { m_compact = compact; }
28 
29  // implementation of ISettingsValueSerializer
30  std::string SerializeValues(const CSettingsManager* settingsManager) const override;
31 
32 private:
33  void SerializeSection(CVariant& parent, const std::shared_ptr<CSettingSection>& section) const;
34  void SerializeCategory(CVariant& parent, const std::shared_ptr<CSettingCategory>& category) const;
35  void SerializeGroup(CVariant& parent, const std::shared_ptr<CSettingGroup>& group) const;
36  void SerializeSetting(CVariant& parent, const std::shared_ptr<CSetting>& setting) const;
37  CVariant SerializeSettingValue(const std::shared_ptr<CSetting>& setting) const;
38 
39  bool m_compact;
40 };
Category of groups of settings being part of a section.
Definition: SettingSection.h:93
Definition: SettingsValueFlatJsonSerializer.h:21
Setting base class containing all the properties which are common to all settings independent of the ...
Definition: Setting.h:46
Definition: Variant.h:31
Section of setting categories.
Definition: SettingSection.h:152
Definition: ISettingsValueSerializer.h:15
Definition: SmartPlayList.cpp:137
Settings manager responsible for initializing, loading and handling all settings. ...
Definition: SettingsManager.h:41
Group of settings being part of a category.
Definition: SettingSection.h:28