2 * Copyright (C) 2005-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.
11 #include "addons/IAddon.h"
12 #include "settings/dialogs/GUIDialogSettingsManagerBase.h"
13 #include "settings/lib/SettingDefinitions.h"
14 #include "settings/lib/SettingLevel.h"
25 class CSettingCategory
;
32 class CSettingSection
;
34 class CSettingsManager
;
37 class CGUIDialogSettingsManualBase
: public CGUIDialogSettingsManagerBase
40 CGUIDialogSettingsManualBase(int windowId
, const std::string
&xmlFile
);
41 ~CGUIDialogSettingsManualBase() override
;
44 // implementation of CGUIDialogSettingsBase
45 std::shared_ptr
<CSettingSection
> GetSection() override
{ return m_section
; }
46 void SetupView() override
;
48 // implementation of CGUIDialogSettingsManagerBase
49 CSettingsManager
* GetSettingsManager() const override
;
51 virtual void InitializeSettings();
53 std::shared_ptr
<CSettingCategory
> AddCategory(const std::string
&id
, int label
, int help
= -1);
54 std::shared_ptr
<CSettingGroup
> AddGroup(const std::shared_ptr
<CSettingCategory
>& category
,
57 bool separatorBelowLabel
= true,
58 bool hideSeparator
= false);
60 std::shared_ptr
<CSettingBool
> AddToggle(const std::shared_ptr
<CSettingGroup
>& group
,
61 const std::string
& id
,
69 std::shared_ptr
<CSettingInt
> AddEdit(const std::shared_ptr
<CSettingGroup
>& group
,
70 const std::string
& id
,
77 bool verifyNewValue
= false,
82 std::shared_ptr
<CSettingNumber
> AddEdit(const std::shared_ptr
<CSettingGroup
>& group
,
83 const std::string
& id
,
90 bool verifyNewValue
= false,
95 std::shared_ptr
<CSettingString
> AddEdit(const std::shared_ptr
<CSettingGroup
>& group
,
96 const std::string
& id
,
99 const std::string
& value
,
100 bool allowEmpty
= false,
103 bool delayed
= false,
106 std::shared_ptr
<CSettingString
> AddIp(const std::shared_ptr
<CSettingGroup
>& group
,
107 const std::string
& id
,
110 const std::string
& value
,
111 bool allowEmpty
= false,
113 bool delayed
= false,
116 std::shared_ptr
<CSettingString
> AddPasswordMd5(const std::shared_ptr
<CSettingGroup
>& group
,
117 const std::string
& id
,
120 const std::string
& value
,
121 bool allowEmpty
= false,
123 bool delayed
= false,
127 std::shared_ptr
<CSettingAction
> AddButton(const std::shared_ptr
<CSettingGroup
>& group
,
128 const std::string
& id
,
131 const std::string
& data
= "",
132 bool delayed
= false,
135 std::shared_ptr
<CSettingString
> AddInfoLabelButton(const std::shared_ptr
<CSettingGroup
>& group
,
136 const std::string
& id
,
139 const std::string
& info
,
142 std::shared_ptr
<CSettingAddon
> AddAddon(const std::shared_ptr
<CSettingGroup
>& group
,
143 const std::string
& id
,
146 const std::string
& value
,
147 ADDON::AddonType addonType
,
148 bool allowEmpty
= false,
150 bool hideValue
= false,
151 bool showInstalledAddons
= true,
152 bool showInstallableAddons
= false,
153 bool showMoreAddons
= true,
154 bool delayed
= false,
157 std::shared_ptr
<CSettingPath
> AddPath(
158 const std::shared_ptr
<CSettingGroup
>& group
,
159 const std::string
& id
,
162 const std::string
& value
,
163 bool writable
= true,
164 const std::vector
<std::string
>& sources
= std::vector
<std::string
>(),
165 bool allowEmpty
= false,
167 bool hideValue
= false,
168 bool delayed
= false,
171 std::shared_ptr
<CSettingDate
> AddDate(const std::shared_ptr
<CSettingGroup
>& group
,
172 const std::string
& id
,
175 const std::string
& value
,
176 bool allowEmpty
= false,
178 bool delayed
= false,
181 std::shared_ptr
<CSettingTime
> AddTime(const std::shared_ptr
<CSettingGroup
>& group
,
182 const std::string
& id
,
185 const std::string
& value
,
186 bool allowEmpty
= false,
188 bool delayed
= false,
193 std::shared_ptr
<CSettingString
> AddSpinner(const std::shared_ptr
<CSettingGroup
>& group
,
194 const std::string
& id
,
197 const std::string
& value
,
198 StringSettingOptionsFiller filler
,
199 bool delayed
= false,
202 std::shared_ptr
<CSettingInt
> AddSpinner(const std::shared_ptr
<CSettingGroup
>& group
,
203 const std::string
& id
,
210 int formatLabel
= -1,
211 int minimumLabel
= -1,
212 bool delayed
= false,
215 std::shared_ptr
<CSettingInt
> AddSpinner(const std::shared_ptr
<CSettingGroup
>& group
,
216 const std::string
& id
,
223 const std::string
& formatString
,
224 int minimumLabel
= -1,
225 bool delayed
= false,
228 std::shared_ptr
<CSettingInt
> AddSpinner(const std::shared_ptr
<CSettingGroup
>& group
,
229 const std::string
& id
,
233 const TranslatableIntegerSettingOptions
& entries
,
234 bool delayed
= false,
237 std::shared_ptr
<CSettingInt
> AddSpinner(const std::shared_ptr
<CSettingGroup
>& group
,
238 const std::string
& id
,
242 const IntegerSettingOptions
& entries
,
243 bool delayed
= false,
246 std::shared_ptr
<CSettingInt
> AddSpinner(const std::shared_ptr
<CSettingGroup
>& group
,
247 const std::string
& id
,
251 IntegerSettingOptionsFiller filler
,
252 bool delayed
= false,
255 std::shared_ptr
<CSettingNumber
> AddSpinner(const std::shared_ptr
<CSettingGroup
>& group
,
256 const std::string
& id
,
263 int formatLabel
= -1,
264 int minimumLabel
= -1,
265 bool delayed
= false,
268 std::shared_ptr
<CSettingNumber
> AddSpinner(const std::shared_ptr
<CSettingGroup
>& group
,
269 const std::string
& id
,
276 const std::string
& formatString
,
277 int minimumLabel
= -1,
278 bool delayed
= false,
283 std::shared_ptr
<CSettingString
> AddList(const std::shared_ptr
<CSettingGroup
>& group
,
284 const std::string
& id
,
287 const std::string
& value
,
288 StringSettingOptionsFiller filler
,
292 bool details
= false);
293 std::shared_ptr
<CSettingInt
> AddList(const std::shared_ptr
<CSettingGroup
>& group
,
294 const std::string
& id
,
298 const TranslatableIntegerSettingOptions
& entries
,
302 bool details
= false);
303 std::shared_ptr
<CSettingInt
> AddList(const std::shared_ptr
<CSettingGroup
>& group
,
304 const std::string
& id
,
308 const IntegerSettingOptions
& entries
,
312 bool details
= false);
313 std::shared_ptr
<CSettingInt
> AddList(const std::shared_ptr
<CSettingGroup
>& group
,
314 const std::string
& id
,
318 IntegerSettingOptionsFiller filler
,
322 bool details
= false);
323 std::shared_ptr
<CSettingList
> AddList(const std::shared_ptr
<CSettingGroup
>& group
,
324 const std::string
& id
,
327 std::vector
<std::string
> values
,
328 StringSettingOptionsFiller filler
,
330 int minimumItems
= 0,
331 int maximumItems
= -1,
334 bool details
= false);
335 std::shared_ptr
<CSettingList
> AddList(const std::shared_ptr
<CSettingGroup
>& group
,
336 const std::string
& id
,
339 std::vector
<int> values
,
340 const TranslatableIntegerSettingOptions
& entries
,
342 int minimumItems
= 0,
343 int maximumItems
= -1,
346 bool details
= false);
347 std::shared_ptr
<CSettingList
> AddList(const std::shared_ptr
<CSettingGroup
>& group
,
348 const std::string
& id
,
351 std::vector
<int> values
,
352 const IntegerSettingOptions
& entries
,
354 int minimumItems
= 0,
355 int maximumItems
= -1,
358 bool details
= false);
359 std::shared_ptr
<CSettingList
> AddList(const std::shared_ptr
<CSettingGroup
>& group
,
360 const std::string
& id
,
363 std::vector
<int> values
,
364 IntegerSettingOptionsFiller filler
,
366 int minimumItems
= 0,
367 int maximumItems
= -1,
370 SettingControlListValueFormatter formatter
= nullptr,
371 bool details
= false);
374 std::shared_ptr
<CSettingInt
> AddPercentageSlider(const std::shared_ptr
<CSettingGroup
>& group
,
375 const std::string
& id
,
382 bool usePopup
= false,
383 bool delayed
= false,
386 std::shared_ptr
<CSettingInt
> AddPercentageSlider(const std::shared_ptr
<CSettingGroup
>& group
,
387 const std::string
& id
,
391 const std::string
& formatString
,
394 bool usePopup
= false,
395 bool delayed
= false,
398 std::shared_ptr
<CSettingInt
> AddSlider(const std::shared_ptr
<CSettingGroup
>& group
,
399 const std::string
& id
,
408 bool usePopup
= false,
409 bool delayed
= false,
412 std::shared_ptr
<CSettingInt
> AddSlider(const std::shared_ptr
<CSettingGroup
>& group
,
413 const std::string
& id
,
417 const std::string
& formatString
,
422 bool usePopup
= false,
423 bool delayed
= false,
426 std::shared_ptr
<CSettingNumber
> AddSlider(const std::shared_ptr
<CSettingGroup
>& group
,
427 const std::string
& id
,
436 bool usePopup
= false,
437 bool delayed
= false,
440 std::shared_ptr
<CSettingNumber
> AddSlider(const std::shared_ptr
<CSettingGroup
>& group
,
441 const std::string
& id
,
445 const std::string
& formatString
,
450 bool usePopup
= false,
451 bool delayed
= false,
456 std::shared_ptr
<CSettingList
> AddPercentageRange(const std::shared_ptr
<CSettingGroup
>& group
,
457 const std::string
& id
,
462 int valueFormatLabel
,
464 int formatLabel
= 21469,
465 bool delayed
= false,
468 std::shared_ptr
<CSettingList
> AddPercentageRange(const std::shared_ptr
<CSettingGroup
>& group
,
469 const std::string
& id
,
474 const std::string
& valueFormatString
= "{:d} %",
476 int formatLabel
= 21469,
477 bool delayed
= false,
480 std::shared_ptr
<CSettingList
> AddRange(const std::shared_ptr
<CSettingGroup
>& group
,
481 const std::string
& id
,
489 int valueFormatLabel
,
490 int formatLabel
= 21469,
491 bool delayed
= false,
494 std::shared_ptr
<CSettingList
> AddRange(const std::shared_ptr
<CSettingGroup
>& group
,
495 const std::string
& id
,
503 const std::string
& valueFormatString
= "{:d}",
504 int formatLabel
= 21469,
505 bool delayed
= false,
508 std::shared_ptr
<CSettingList
> AddRange(const std::shared_ptr
<CSettingGroup
>& group
,
509 const std::string
& id
,
517 int valueFormatLabel
,
518 int formatLabel
= 21469,
519 bool delayed
= false,
522 std::shared_ptr
<CSettingList
> AddRange(const std::shared_ptr
<CSettingGroup
>& group
,
523 const std::string
& id
,
531 const std::string
& valueFormatString
= "{:.1f}",
532 int formatLabel
= 21469,
533 bool delayed
= false,
536 std::shared_ptr
<CSettingList
> AddDateRange(const std::shared_ptr
<CSettingGroup
>& group
,
537 const std::string
& id
,
545 int valueFormatLabel
,
546 int formatLabel
= 21469,
547 bool delayed
= false,
550 std::shared_ptr
<CSettingList
> AddDateRange(const std::shared_ptr
<CSettingGroup
>& group
,
551 const std::string
& id
,
559 const std::string
& valueFormatString
= "",
560 int formatLabel
= 21469,
561 bool delayed
= false,
564 std::shared_ptr
<CSettingList
> AddTimeRange(const std::shared_ptr
<CSettingGroup
>& group
,
565 const std::string
& id
,
573 int valueFormatLabel
,
574 int formatLabel
= 21469,
575 bool delayed
= false,
578 std::shared_ptr
<CSettingList
> AddTimeRange(const std::shared_ptr
<CSettingGroup
>& group
,
579 const std::string
& id
,
587 const std::string
& valueFormatString
= "mm:ss",
588 int formatLabel
= 21469,
589 bool delayed
= false,
593 std::shared_ptr
<ISettingControl
> GetTitleControl(bool separatorBelowLabel
= true, bool hideSeparator
= false);
594 std::shared_ptr
<ISettingControl
> GetCheckmarkControl(bool delayed
= false);
595 std::shared_ptr
<ISettingControl
> GetEditControl(const std::string
&format
, bool delayed
= false, bool hidden
= false, bool verifyNewValue
= false, int heading
= -1);
596 std::shared_ptr
<ISettingControl
> GetButtonControl(const std::string
&format
, bool delayed
= false, int heading
= -1, bool hideValue
= false, bool showInstalledAddons
= true,
597 bool showInstallableAddons
= false, bool showMoreAddons
= true);
598 std::shared_ptr
<ISettingControl
> GetSpinnerControl(const std::string
&format
, bool delayed
= false, int minimumLabel
= -1, int formatLabel
= -1, const std::string
&formatString
= "");
599 std::shared_ptr
<ISettingControl
> GetListControl(
600 const std::string
& format
,
601 bool delayed
= false,
603 bool multiselect
= false,
604 SettingControlListValueFormatter formatter
= nullptr,
605 bool details
= false);
606 std::shared_ptr
<ISettingControl
> GetSliderControl(const std::string
&format
, bool delayed
= false, int heading
= -1, bool usePopup
= false, int formatLabel
= -1, const std::string
&formatString
= "");
607 std::shared_ptr
<ISettingControl
> GetRangeControl(const std::string
&format
, bool delayed
= false, int formatLabel
= -1, int valueFormatLabel
= -1, const std::string
&valueFormatString
= "");
610 std::shared_ptr
<CSettingList
> AddRange(const std::shared_ptr
<CSettingGroup
>& group
,
611 const std::string
& id
,
619 const std::string
& format
,
621 int valueFormatLabel
,
622 const std::string
& valueFormatString
,
626 std::shared_ptr
<CSettingList
> AddRange(const std::shared_ptr
<CSettingGroup
>& group
,
627 const std::string
& id
,
635 const std::string
& format
,
637 int valueFormatLabel
,
638 const std::string
& valueFormatString
,
643 void setSettingDetails(const std::shared_ptr
<CSetting
>& setting
,
648 mutable CSettingsManager
* m_settingsManager
= nullptr;
649 std::shared_ptr
<CSettingSection
> m_section
;