kodi
SettingsOperations.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 "JSONRPC.h"
12 #include "settings/lib/SettingLevel.h"
13 
14 #include <vector>
15 
16 class CVariant;
17 class ISetting;
18 class CSettingSection;
19 class CSettingCategory;
20 class CSettingGroup;
21 class CSetting;
22 class CSettingBool;
23 class CSettingInt;
24 class CSettingNumber;
25 class CSettingString;
26 class CSettingAction;
27 class CSettingList;
28 class CSettingPath;
29 class CSettingAddon;
30 class CSettingDate;
31 class CSettingTime;
32 class ISettingControl;
33 
34 namespace JSONRPC
35 {
37  {
38  public:
39  static JSONRPC_STATUS GetSections(const std::string &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
40  static JSONRPC_STATUS GetCategories(const std::string &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
41  static JSONRPC_STATUS GetSettings(const std::string &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
42 
43  static JSONRPC_STATUS GetSettingValue(const std::string &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
44  static JSONRPC_STATUS SetSettingValue(const std::string &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
45  static JSONRPC_STATUS ResetSettingValue(const std::string &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
46 
47  static JSONRPC_STATUS GetSkinSettings(const std::string& method,
48  ITransportLayer* transport,
49  IClient* client,
50  const CVariant& parameterObject,
51  CVariant& result);
52  static JSONRPC_STATUS GetSkinSettingValue(const std::string& method,
53  ITransportLayer* transport,
54  IClient* client,
55  const CVariant& parameterObject,
56  CVariant& result);
57  static JSONRPC_STATUS SetSkinSettingValue(const std::string& method,
58  ITransportLayer* transport,
59  IClient* client,
60  const CVariant& parameterObject,
61  CVariant& result);
62 
63  private:
64  static SettingLevel ParseSettingLevel(const std::string &strLevel);
65 
66  static bool SerializeISetting(const std::shared_ptr<const ISetting>& setting, CVariant& obj);
67  static bool SerializeSettingSection(const std::shared_ptr<const CSettingSection>& setting,
68  CVariant& obj);
69  static bool SerializeSettingCategory(const std::shared_ptr<const CSettingCategory>& setting,
70  CVariant& obj);
71  static bool SerializeSettingGroup(const std::shared_ptr<const CSettingGroup>& setting,
72  CVariant& obj);
73  static bool SerializeSetting(const std::shared_ptr<const CSetting>& setting, CVariant& obj);
74  static bool SerializeSettingBool(const std::shared_ptr<const CSettingBool>& setting,
75  CVariant& obj);
76  static bool SerializeSettingInt(const std::shared_ptr<const CSettingInt>& setting,
77  CVariant& obj);
78  static bool SerializeSettingNumber(const std::shared_ptr<const CSettingNumber>& setting,
79  CVariant& obj);
80  static bool SerializeSettingString(const std::shared_ptr<const CSettingString>& setting,
81  CVariant& obj);
82  static bool SerializeSettingAction(const std::shared_ptr<const CSettingAction>& setting,
83  CVariant& obj);
84  static bool SerializeSettingList(const std::shared_ptr<const CSettingList>& setting,
85  CVariant& obj);
86  static bool SerializeSettingPath(const std::shared_ptr<const CSettingPath>& setting,
87  CVariant& obj);
88  static bool SerializeSettingAddon(const std::shared_ptr<const CSettingAddon>& setting,
89  CVariant& obj);
90  static bool SerializeSettingDate(const std::shared_ptr<const CSettingDate>& setting,
91  CVariant& obj);
92  static bool SerializeSettingTime(const std::shared_ptr<const CSettingTime>& setting,
93  CVariant& obj);
94  static bool SerializeSettingControl(const std::shared_ptr<const ISettingControl>& control,
95  CVariant& obj);
96 
97  static void SerializeSettingListValues(const std::vector<CVariant> &values, CVariant &obj);
98  };
99 }
Category of groups of settings being part of a section.
Definition: SettingSection.h:93
Definition: SettingDateTime.h:15
List setting implementation.
Definition: Setting.h:168
Setting base class containing all the properties which are common to all settings independent of the ...
Definition: Setting.h:46
String setting implementation.
Definition: Setting.h:423
Definition: AddonsOperations.h:23
Definition: Variant.h:31
Interface defining the base of all setting objects.
Definition: ISetting.h:22
Section of setting categories.
Definition: SettingSection.h:152
Definition: SettingDateTime.h:31
Real number setting implementation.
Definition: Setting.h:363
JSONRPC_STATUS
Possible statuc codes of a response to a JSON-RPC request.
Definition: JSONRPCUtils.h:29
Action setting implementation.
Definition: Setting.h:506
Definition: ITransportLayer.h:27
Definition: SettingAddon.h:19
Definition: SettingPath.h:17
Group of settings being part of a category.
Definition: SettingSection.h:28
Definition: IClient.h:13
Boolean setting implementation.
Definition: Setting.h:229
Integer setting implementation.
Definition: Setting.h:274
SettingLevel
Levels which every setting is assigned to.
Definition: SettingLevel.h:15
Definition: SettingsOperations.h:36
Definition: ISettingControl.h:17