xbmc
SettingDefinitions.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 "utils/Variant.h"
12 
13 #include <memory>
14 #include <string>
15 #include <utility>
16 #include <vector>
17 
18 #define SETTING_XML_ROOT "settings"
19 #define SETTING_XML_ROOT_VERSION "version"
20 
21 #define SETTING_XML_ELM_SECTION "section"
22 #define SETTING_XML_ELM_CATEGORY "category"
23 #define SETTING_XML_ELM_GROUP "group"
24 #define SETTING_XML_ELM_SETTING "setting"
25 #define SETTING_XML_ELM_VISIBLE "visible"
26 #define SETTING_XML_ELM_REQUIREMENT "requirement"
27 #define SETTING_XML_ELM_CONDITION "condition"
28 #define SETTING_XML_ELM_ENABLED "enable"
29 #define SETTING_XML_ELM_LEVEL "level"
30 #define SETTING_XML_ELM_DEFAULT "default"
31 #define SETTING_XML_ELM_VALUE "value"
32 #define SETTING_XML_ELM_CONTROL "control"
33 #define SETTING_XML_ELM_CONSTRAINTS "constraints"
34 #define SETTING_XML_ELM_OPTIONS "options"
35 #define SETTING_XML_ELM_OPTION "option"
36 #define SETTING_XML_ELM_MINIMUM "minimum"
37 #define SETTING_XML_ELM_STEP "step"
38 #define SETTING_XML_ELM_MAXIMUM "maximum"
39 #define SETTING_XML_ELM_ALLOWEMPTY "allowempty"
40 #define SETTING_XML_ELM_ALLOWNEWOPTION "allownewoption"
41 #define SETTING_XML_ELM_DEPENDENCIES "dependencies"
42 #define SETTING_XML_ELM_DEPENDENCY "dependency"
43 #define SETTING_XML_ELM_UPDATES "updates"
44 #define SETTING_XML_ELM_UPDATE "update"
45 #define SETTING_XML_ELM_ACCESS "access"
46 #define SETTING_XML_ELM_DELIMITER "delimiter"
47 #define SETTING_XML_ELM_MINIMUM_ITEMS "minimumitems"
48 #define SETTING_XML_ELM_MAXIMUM_ITEMS "maximumitems"
49 #define SETTING_XML_ELM_DATA "data"
50 
51 #define SETTING_XML_ATTR_ID "id"
52 #define SETTING_XML_ATTR_REFERENCE "ref"
53 #define SETTING_XML_ATTR_LABEL "label"
54 #define SETTING_XML_ATTR_HELP "help"
55 #define SETTING_XML_ATTR_TYPE "type"
56 #define SETTING_XML_ATTR_PARENT "parent"
57 #define SETTING_XML_ATTR_FORMAT "format"
58 #define SETTING_XML_ATTR_DELAYED "delayed"
59 #define SETTING_XML_ATTR_ON "on"
60 #define SETTING_XML_ATTR_OPERATOR "operator"
61 #define SETTING_XML_ATTR_NAME "name"
62 #define SETTING_XML_ATTR_SETTING "setting"
63 #define SETTING_XML_ATTR_BEFORE "before"
64 #define SETTING_XML_ATTR_AFTER "after"
65 
67 {
68  IntegerSettingOption(const std::string& _label, int _value)
69  : label(_label), value(_value) {}
70 
71  IntegerSettingOption(const std::string& _label,
72  const std::string& _label2,
73  int _value,
74  const std::vector<std::pair<std::string, CVariant>>& props)
75  : label(_label), label2(_label2), value(_value), properties(props)
76  {
77  }
78 
79  std::string label;
80  std::string label2;
81  int value = 0;
82  std::vector<std::pair<std::string, CVariant>> properties;
83 };
84 
86 {
87  StringSettingOption(const std::string& _label, const std::string& _value)
88  : label(_label), value(_value) {}
89 
90  StringSettingOption(const std::string& _label,
91  const std::string& _label2,
92  const std::string& _value,
93  const std::vector<std::pair<std::string, CVariant>>& props)
94  : label(_label), label2(_label2), value(_value), properties(props)
95  {
96  }
97 
98  std::string label;
99  std::string label2;
100  std::string value;
101  std::vector<std::pair<std::string, CVariant>> properties;
102 };
103 
105 {
107  TranslatableIntegerSettingOption(int _label, int _value, const std::string& _addonId = "")
108  : label(_label), value(_value), addonId(_addonId)
109  {
110  }
111 
112  int label = 0;
113  int value = 0;
114  std::string addonId; // Leaved empty for Kodi labels
115 };
116 
117 using TranslatableIntegerSettingOptions = std::vector<TranslatableIntegerSettingOption>;
118 using IntegerSettingOptions = std::vector<IntegerSettingOption>;
119 using TranslatableStringSettingOption = std::pair<int, std::string>;
120 using TranslatableStringSettingOptions = std::vector<TranslatableStringSettingOption>;
121 using StringSettingOptions = std::vector<StringSettingOption>;
122 
123 class CSetting;
124 using IntegerSettingOptionsFiller = void (*)(const std::shared_ptr<const CSetting>& setting,
125  IntegerSettingOptions& list,
126  int& current,
127  void* data);
128 using StringSettingOptionsFiller = void (*)(const std::shared_ptr<const CSetting>& setting,
129  StringSettingOptions& list,
130  std::string& current,
131  void* data);
132 
133 enum class SettingOptionsSort
134 {
135  NoSorting,
136  Ascending,
137  Descending
138 };
Setting base class containing all the properties which are common to all settings independent of the ...
Definition: Setting.h:46
Definition: SettingDefinitions.h:85
Definition: SettingDefinitions.h:66
Definition: SettingDefinitions.h:104