xbmc
Settings.h
1 /*
2  * Copyright (C) 2005-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 "settings/ISubSettings.h"
12 #include "settings/SettingControl.h"
13 #include "settings/SettingCreator.h"
14 #include "settings/SettingsBase.h"
15 
16 #include <string>
17 
18 class CSettingList;
19 class TiXmlNode;
20 
28  , private ISubSettings
29 {
30 public:
31  static constexpr auto SETTING_LOOKANDFEEL_SKIN = "lookandfeel.skin";
32  static constexpr auto SETTING_LOOKANDFEEL_SKINSETTINGS = "lookandfeel.skinsettings";
33  static constexpr auto SETTING_LOOKANDFEEL_SKINTHEME = "lookandfeel.skintheme";
34  static constexpr auto SETTING_LOOKANDFEEL_SKINCOLORS = "lookandfeel.skincolors";
35  static constexpr auto SETTING_LOOKANDFEEL_FONT = "lookandfeel.font";
36  static constexpr auto SETTING_LOOKANDFEEL_SKINZOOM = "lookandfeel.skinzoom";
37  static constexpr auto SETTING_LOOKANDFEEL_STARTUPACTION = "lookandfeel.startupaction";
38  static constexpr auto SETTING_LOOKANDFEEL_STARTUPWINDOW = "lookandfeel.startupwindow";
39  static constexpr auto SETTING_LOOKANDFEEL_SOUNDSKIN = "lookandfeel.soundskin";
40  static constexpr auto SETTING_LOOKANDFEEL_ENABLERSSFEEDS = "lookandfeel.enablerssfeeds";
41  static constexpr auto SETTING_LOOKANDFEEL_RSSEDIT = "lookandfeel.rssedit";
42  static constexpr auto SETTING_LOOKANDFEEL_STEREOSTRENGTH = "lookandfeel.stereostrength";
43  static constexpr auto SETTING_LOCALE_LANGUAGE = "locale.language";
44  static constexpr auto SETTING_LOCALE_COUNTRY = "locale.country";
45  static constexpr auto SETTING_LOCALE_CHARSET = "locale.charset";
46  static constexpr auto SETTING_LOCALE_KEYBOARDLAYOUTS = "locale.keyboardlayouts";
47  static constexpr auto SETTING_LOCALE_ACTIVEKEYBOARDLAYOUT = "locale.activekeyboardlayout";
48  static constexpr auto SETTING_LOCALE_TIMEZONECOUNTRY = "locale.timezonecountry";
49  static constexpr auto SETTING_LOCALE_TIMEZONE = "locale.timezone";
50  static constexpr auto SETTING_LOCALE_SHORTDATEFORMAT = "locale.shortdateformat";
51  static constexpr auto SETTING_LOCALE_LONGDATEFORMAT = "locale.longdateformat";
52  static constexpr auto SETTING_LOCALE_TIMEFORMAT = "locale.timeformat";
53  static constexpr auto SETTING_LOCALE_USE24HOURCLOCK = "locale.use24hourclock";
54  static constexpr auto SETTING_LOCALE_TEMPERATUREUNIT = "locale.temperatureunit";
55  static constexpr auto SETTING_LOCALE_SPEEDUNIT = "locale.speedunit";
56  static constexpr auto SETTING_FILELISTS_SHOWPARENTDIRITEMS = "filelists.showparentdiritems";
57  static constexpr auto SETTING_FILELISTS_SHOWEXTENSIONS = "filelists.showextensions";
58  static constexpr auto SETTING_FILELISTS_IGNORETHEWHENSORTING = "filelists.ignorethewhensorting";
59  static constexpr auto SETTING_FILELISTS_ALLOWFILEDELETION = "filelists.allowfiledeletion";
60  static constexpr auto SETTING_FILELISTS_SHOWADDSOURCEBUTTONS = "filelists.showaddsourcebuttons";
61  static constexpr auto SETTING_FILELISTS_SHOWHIDDEN = "filelists.showhidden";
62  static constexpr auto SETTING_SCREENSAVER_MODE = "screensaver.mode";
63  static constexpr auto SETTING_SCREENSAVER_SETTINGS = "screensaver.settings";
64  static constexpr auto SETTING_SCREENSAVER_PREVIEW = "screensaver.preview";
65  static constexpr auto SETTING_SCREENSAVER_TIME = "screensaver.time";
66  static constexpr auto SETTING_SCREENSAVER_DISABLEFORAUDIO = "screensaver.disableforaudio";
67  static constexpr auto SETTING_SCREENSAVER_USEDIMONPAUSE = "screensaver.usedimonpause";
68  static constexpr auto SETTING_WINDOW_WIDTH = "window.width";
69  static constexpr auto SETTING_WINDOW_HEIGHT = "window.height";
70  static constexpr auto SETTING_VIDEOLIBRARY_SHOWUNWATCHEDPLOTS = "videolibrary.showunwatchedplots";
71  static constexpr auto SETTING_VIDEOLIBRARY_ACTORTHUMBS = "videolibrary.actorthumbs";
72  static constexpr auto SETTING_MYVIDEOS_FLATTEN = "myvideos.flatten";
73  static constexpr auto SETTING_VIDEOLIBRARY_FLATTENTVSHOWS = "videolibrary.flattentvshows";
74  static constexpr auto SETTING_VIDEOLIBRARY_TVSHOWSSELECTFIRSTUNWATCHEDITEM =
75  "videolibrary.tvshowsselectfirstunwatcheditem";
76  static constexpr auto SETTING_VIDEOLIBRARY_TVSHOWSINCLUDEALLSEASONSANDSPECIALS =
77  "videolibrary.tvshowsincludeallseasonsandspecials";
78  static constexpr auto SETTING_VIDEOLIBRARY_SHOWALLITEMS = "videolibrary.showallitems";
79  static constexpr auto SETTING_VIDEOLIBRARY_GROUPMOVIESETS = "videolibrary.groupmoviesets";
80  static constexpr auto SETTING_VIDEOLIBRARY_GROUPSINGLEITEMSETS =
81  "videolibrary.groupsingleitemsets";
82  static constexpr auto SETTING_VIDEOLIBRARY_UPDATEONSTARTUP = "videolibrary.updateonstartup";
83  static constexpr auto SETTING_VIDEOLIBRARY_BACKGROUNDUPDATE = "videolibrary.backgroundupdate";
84  static constexpr auto SETTING_VIDEOLIBRARY_CLEANUP = "videolibrary.cleanup";
85  static constexpr auto SETTING_VIDEOLIBRARY_EXPORT = "videolibrary.export";
86  static constexpr auto SETTING_VIDEOLIBRARY_IMPORT = "videolibrary.import";
87  static constexpr auto SETTING_VIDEOLIBRARY_SHOWEMPTYTVSHOWS = "videolibrary.showemptytvshows";
88  static constexpr auto SETTING_VIDEOLIBRARY_MOVIESETSFOLDER = "videolibrary.moviesetsfolder";
89  static constexpr auto SETTING_VIDEOLIBRARY_ARTWORK_LEVEL = "videolibrary.artworklevel";
90  static constexpr auto SETTING_VIDEOLIBRARY_MOVIEART_WHITELIST = "videolibrary.movieartwhitelist";
91  static constexpr auto SETTING_VIDEOLIBRARY_TVSHOWART_WHITELIST =
92  "videolibrary.tvshowartwhitelist";
93  static constexpr auto SETTING_VIDEOLIBRARY_EPISODEART_WHITELIST =
94  "videolibrary.episodeartwhitelist";
95  static constexpr auto SETTING_VIDEOLIBRARY_MUSICVIDEOART_WHITELIST =
96  "videolibrary.musicvideoartwhitelist";
97  static constexpr auto SETTING_VIDEOLIBRARY_SHOWPERFORMERS =
98  "videolibrary.musicvideosallperformers";
99  static constexpr auto SETTING_LOCALE_AUDIOLANGUAGE = "locale.audiolanguage";
100  static constexpr auto SETTING_VIDEOPLAYER_PREFERDEFAULTFLAG = "videoplayer.preferdefaultflag";
101  static constexpr auto SETTING_VIDEOPLAYER_AUTOPLAYNEXTITEM = "videoplayer.autoplaynextitem";
102  static constexpr auto SETTING_VIDEOPLAYER_SEEKSTEPS = "videoplayer.seeksteps";
103  static constexpr auto SETTING_VIDEOPLAYER_SEEKDELAY = "videoplayer.seekdelay";
104  static constexpr auto SETTING_VIDEOPLAYER_ADJUSTREFRESHRATE = "videoplayer.adjustrefreshrate";
105  static constexpr auto SETTING_VIDEOPLAYER_USEDISPLAYASCLOCK = "videoplayer.usedisplayasclock";
106  static constexpr auto SETTING_VIDEOPLAYER_ERRORINASPECT = "videoplayer.errorinaspect";
107  static constexpr auto SETTING_VIDEOPLAYER_STRETCH43 = "videoplayer.stretch43";
108  static constexpr auto SETTING_VIDEOPLAYER_TELETEXTENABLED = "videoplayer.teletextenabled";
109  static constexpr auto SETTING_VIDEOPLAYER_TELETEXTSCALE = "videoplayer.teletextscale";
110  static constexpr auto SETTING_VIDEOPLAYER_STEREOSCOPICPLAYBACKMODE =
111  "videoplayer.stereoscopicplaybackmode";
112  static constexpr auto SETTING_VIDEOPLAYER_QUITSTEREOMODEONSTOP =
113  "videoplayer.quitstereomodeonstop";
114  static constexpr auto SETTING_VIDEOPLAYER_RENDERMETHOD = "videoplayer.rendermethod";
115  static constexpr auto SETTING_VIDEOPLAYER_HQSCALERS = "videoplayer.hqscalers";
116  static constexpr auto SETTING_VIDEOPLAYER_USESUPERRESOLUTION = "videoplayer.usesuperresolution";
117  static constexpr auto SETTING_VIDEOPLAYER_HIGHPRECISIONPROCESSING = "videoplayer.highprecision";
118  static constexpr auto SETTING_VIDEOPLAYER_USEMEDIACODEC = "videoplayer.usemediacodec";
119  static constexpr auto SETTING_VIDEOPLAYER_USEMEDIACODECSURFACE =
120  "videoplayer.usemediacodecsurface";
121  static constexpr auto SETTING_VIDEOPLAYER_USEVDPAU = "videoplayer.usevdpau";
122  static constexpr auto SETTING_VIDEOPLAYER_USEVDPAUMIXER = "videoplayer.usevdpaumixer";
123  static constexpr auto SETTING_VIDEOPLAYER_USEVDPAUMPEG2 = "videoplayer.usevdpaumpeg2";
124  static constexpr auto SETTING_VIDEOPLAYER_USEVDPAUMPEG4 = "videoplayer.usevdpaumpeg4";
125  static constexpr auto SETTING_VIDEOPLAYER_USEVDPAUVC1 = "videoplayer.usevdpauvc1";
126  static constexpr auto SETTING_VIDEOPLAYER_USEDXVA2 = "videoplayer.usedxva2";
127  static constexpr auto SETTING_VIDEOPLAYER_USEVTB = "videoplayer.usevtb";
128  static constexpr auto SETTING_VIDEOPLAYER_USEPRIMEDECODER = "videoplayer.useprimedecoder";
129  static constexpr auto SETTING_VIDEOPLAYER_USESTAGEFRIGHT = "videoplayer.usestagefright";
130  static constexpr auto SETTING_VIDEOPLAYER_LIMITGUIUPDATE = "videoplayer.limitguiupdate";
131  static constexpr auto SETTING_VIDEOPLAYER_SUPPORTMVC = "videoplayer.supportmvc";
132  static constexpr auto SETTING_VIDEOPLAYER_CONVERTDOVI = "videoplayer.convertdovi";
133  static constexpr auto SETTING_MYVIDEOS_SELECTACTION = "myvideos.selectaction";
134  static constexpr auto SETTING_MYVIDEOS_PLAYACTION = "myvideos.playaction";
135  static constexpr auto SETTING_MYVIDEOS_USETAGS = "myvideos.usetags";
136  static constexpr auto SETTING_MYVIDEOS_EXTRACTFLAGS = "myvideos.extractflags";
137  static constexpr auto SETTING_MYVIDEOS_EXTRACTCHAPTERTHUMBS = "myvideos.extractchapterthumbs";
138  static constexpr auto SETTING_MYVIDEOS_REPLACELABELS = "myvideos.replacelabels";
139  static constexpr auto SETTING_MYVIDEOS_EXTRACTTHUMB = "myvideos.extractthumb";
140  static constexpr auto SETTING_MYVIDEOS_STACKVIDEOS = "myvideos.stackvideos";
141  static constexpr auto SETTING_LOCALE_SUBTITLELANGUAGE = "locale.subtitlelanguage";
142  static constexpr auto SETTING_SUBTITLES_PARSECAPTIONS = "subtitles.parsecaptions";
143  static constexpr auto SETTING_SUBTITLES_CAPTIONSALIGN = "subtitles.captionsalign";
144  static constexpr auto SETTING_SUBTITLES_ALIGN = "subtitles.align";
145  static constexpr auto SETTING_SUBTITLES_STEREOSCOPICDEPTH = "subtitles.stereoscopicdepth";
146  static constexpr auto SETTING_SUBTITLES_FONTNAME = "subtitles.fontname";
147  static constexpr auto SETTING_SUBTITLES_FONTSIZE = "subtitles.fontsize";
148  static constexpr auto SETTING_SUBTITLES_STYLE = "subtitles.style";
149  static constexpr auto SETTING_SUBTITLES_COLOR = "subtitles.colorpick";
150  static constexpr auto SETTING_SUBTITLES_BORDERSIZE = "subtitles.bordersize";
151  static constexpr auto SETTING_SUBTITLES_BORDERCOLOR = "subtitles.bordercolorpick";
152  static constexpr auto SETTING_SUBTITLES_OPACITY = "subtitles.opacity";
153  static constexpr auto SETTING_SUBTITLES_BLUR = "subtitles.blur";
154  static constexpr auto SETTING_SUBTITLES_BACKGROUNDTYPE = "subtitles.backgroundtype";
155  static constexpr auto SETTING_SUBTITLES_SHADOWCOLOR = "subtitles.shadowcolor";
156  static constexpr auto SETTING_SUBTITLES_SHADOWOPACITY = "subtitles.shadowopacity";
157  static constexpr auto SETTING_SUBTITLES_SHADOWSIZE = "subtitles.shadowsize";
158  static constexpr auto SETTING_SUBTITLES_BGCOLOR = "subtitles.bgcolorpick";
159  static constexpr auto SETTING_SUBTITLES_BGOPACITY = "subtitles.bgopacity";
160  static constexpr auto SETTING_SUBTITLES_MARGINVERTICAL = "subtitles.marginvertical";
161  static constexpr auto SETTING_SUBTITLES_CHARSET = "subtitles.charset";
162  static constexpr auto SETTING_SUBTITLES_OVERRIDEFONTS = "subtitles.overridefonts";
163  static constexpr auto SETTING_SUBTITLES_OVERRIDESTYLES = "subtitles.overridestyles";
164  static constexpr auto SETTING_SUBTITLES_LANGUAGES = "subtitles.languages";
165  static constexpr auto SETTING_SUBTITLES_STORAGEMODE = "subtitles.storagemode";
166  static constexpr auto SETTING_SUBTITLES_CUSTOMPATH = "subtitles.custompath";
167  static constexpr auto SETTING_SUBTITLES_PAUSEONSEARCH = "subtitles.pauseonsearch";
168  static constexpr auto SETTING_SUBTITLES_DOWNLOADFIRST = "subtitles.downloadfirst";
169  static constexpr auto SETTING_SUBTITLES_TV = "subtitles.tv";
170  static constexpr auto SETTING_SUBTITLES_MOVIE = "subtitles.movie";
171  static constexpr auto SETTING_DVDS_AUTORUN = "dvds.autorun";
172  static constexpr auto SETTING_DVDS_PLAYERREGION = "dvds.playerregion";
173  static constexpr auto SETTING_DVDS_AUTOMENU = "dvds.automenu";
174  static constexpr auto SETTING_DISC_PLAYBACK = "disc.playback";
175  static constexpr auto SETTING_BLURAY_PLAYERREGION = "bluray.playerregion";
176  static constexpr auto SETTING_ACCESSIBILITY_AUDIOVISUAL = "accessibility.audiovisual";
177  static constexpr auto SETTING_ACCESSIBILITY_AUDIOHEARING = "accessibility.audiohearing";
178  static constexpr auto SETTING_ACCESSIBILITY_SUBHEARING = "accessibility.subhearing";
179  static constexpr auto SETTING_SCRAPERS_MOVIESDEFAULT = "scrapers.moviesdefault";
180  static constexpr auto SETTING_SCRAPERS_TVSHOWSDEFAULT = "scrapers.tvshowsdefault";
181  static constexpr auto SETTING_SCRAPERS_MUSICVIDEOSDEFAULT = "scrapers.musicvideosdefault";
182  static constexpr auto SETTING_PVRMANAGER_PRESELECTPLAYINGCHANNEL =
183  "pvrmanager.preselectplayingchannel";
184  static constexpr auto SETTING_PVRMANAGER_BACKENDCHANNELGROUPSORDER =
185  "pvrmanager.backendchannelgroupsorder";
186  static constexpr auto SETTING_PVRMANAGER_BACKENDCHANNELORDER = "pvrmanager.backendchannelorder";
187  static constexpr auto SETTING_PVRMANAGER_USEBACKENDCHANNELNUMBERS =
188  "pvrmanager.usebackendchannelnumbers";
189  static constexpr auto SETTING_PVRMANAGER_USEBACKENDCHANNELNUMBERSALWAYS =
190  "pvrmanager.usebackendchannelnumbersalways";
191  static constexpr auto SETTING_PVRMANAGER_STARTGROUPCHANNELNUMBERSFROMONE =
192  "pvrmanager.startgroupchannelnumbersfromone";
193  static constexpr auto SETTING_PVRMANAGER_CLIENTPRIORITIES = "pvrmanager.clientpriorities";
194  static constexpr auto SETTING_PVRMANAGER_CHANNELMANAGER = "pvrmanager.channelmanager";
195  static constexpr auto SETTING_PVRMANAGER_GROUPMANAGER = "pvrmanager.groupmanager";
196  static constexpr auto SETTING_PVRMANAGER_CHANNELSCAN = "pvrmanager.channelscan";
197  static constexpr auto SETTING_PVRMANAGER_RESETDB = "pvrmanager.resetdb";
198  static constexpr auto SETTING_PVRMANAGER_ADDONS = "pvrmanager.addons";
199  static constexpr auto SETTING_PVRMENU_DISPLAYCHANNELINFO = "pvrmenu.displaychannelinfo";
200  static constexpr auto SETTING_PVRMENU_CLOSECHANNELOSDONSWITCH = "pvrmenu.closechannelosdonswitch";
201  static constexpr auto SETTING_PVRMENU_ICONPATH = "pvrmenu.iconpath";
202  static constexpr auto SETTING_PVRMENU_SEARCHICONS = "pvrmenu.searchicons";
203  static constexpr auto SETTING_EPG_PAST_DAYSTODISPLAY = "epg.pastdaystodisplay";
204  static constexpr auto SETTING_EPG_FUTURE_DAYSTODISPLAY = "epg.futuredaystodisplay";
205  static constexpr auto SETTING_EPG_SELECTACTION = "epg.selectaction";
206  static constexpr auto SETTING_EPG_HIDENOINFOAVAILABLE = "epg.hidenoinfoavailable";
207  static constexpr auto SETTING_EPG_EPGUPDATE = "epg.epgupdate";
208  static constexpr auto SETTING_EPG_PREVENTUPDATESWHILEPLAYINGTV =
209  "epg.preventupdateswhileplayingtv";
210  static constexpr auto SETTING_EPG_RESETEPG = "epg.resetepg";
211  static constexpr auto SETTING_PVRPLAYBACK_SWITCHTOFULLSCREENCHANNELTYPES =
212  "pvrplayback.switchtofullscreenchanneltypes";
213  static constexpr auto SETTING_PVRPLAYBACK_SIGNALQUALITY = "pvrplayback.signalquality";
214  static constexpr auto SETTING_PVRPLAYBACK_CONFIRMCHANNELSWITCH =
215  "pvrplayback.confirmchannelswitch";
216  static constexpr auto SETTING_PVRPLAYBACK_CHANNELENTRYTIMEOUT = "pvrplayback.channelentrytimeout";
217  static constexpr auto SETTING_PVRPLAYBACK_DELAYMARKLASTWATCHED =
218  "pvrplayback.delaymarklastwatched";
219  static constexpr auto SETTING_PVRPLAYBACK_FPS = "pvrplayback.fps";
220  static constexpr auto SETTING_PVRRECORD_INSTANTRECORDACTION = "pvrrecord.instantrecordaction";
221  static constexpr auto SETTING_PVRRECORD_INSTANTRECORDTIME = "pvrrecord.instantrecordtime";
222  static constexpr auto SETTING_PVRRECORD_MARGINSTART = "pvrrecord.marginstart";
223  static constexpr auto SETTING_PVRRECORD_MARGINEND = "pvrrecord.marginend";
224  static constexpr auto SETTING_PVRRECORD_TIMERNOTIFICATIONS = "pvrrecord.timernotifications";
225  static constexpr auto SETTING_PVRRECORD_GROUPRECORDINGS = "pvrrecord.grouprecordings";
226  static constexpr auto SETTING_PVRREMINDERS_AUTOCLOSEDELAY = "pvrreminders.autoclosedelay";
227  static constexpr auto SETTING_PVRREMINDERS_AUTORECORD = "pvrreminders.autorecord";
228  static constexpr auto SETTING_PVRREMINDERS_AUTOSWITCH = "pvrreminders.autoswitch";
229  static constexpr auto SETTING_PVRPOWERMANAGEMENT_ENABLED = "pvrpowermanagement.enabled";
230  static constexpr auto SETTING_PVRPOWERMANAGEMENT_BACKENDIDLETIME =
231  "pvrpowermanagement.backendidletime";
232  static constexpr auto SETTING_PVRPOWERMANAGEMENT_SETWAKEUPCMD = "pvrpowermanagement.setwakeupcmd";
233  static constexpr auto SETTING_PVRPOWERMANAGEMENT_PREWAKEUP = "pvrpowermanagement.prewakeup";
234  static constexpr auto SETTING_PVRPOWERMANAGEMENT_DAILYWAKEUP = "pvrpowermanagement.dailywakeup";
235  static constexpr auto SETTING_PVRPOWERMANAGEMENT_DAILYWAKEUPTIME =
236  "pvrpowermanagement.dailywakeuptime";
237  static constexpr auto SETTING_PVRPARENTAL_ENABLED = "pvrparental.enabled";
238  static constexpr auto SETTING_PVRPARENTAL_PIN = "pvrparental.pin";
239  static constexpr auto SETTING_PVRPARENTAL_DURATION = "pvrparental.duration";
240  static constexpr auto SETTING_PVRCLIENT_MENUHOOK = "pvrclient.menuhook";
241  static constexpr auto SETTING_PVRTIMERS_HIDEDISABLEDTIMERS = "pvrtimers.hidedisabledtimers";
242  static constexpr auto SETTING_MUSICLIBRARY_SHOWCOMPILATIONARTISTS =
243  "musiclibrary.showcompilationartists";
244  static constexpr auto SETTING_MUSICLIBRARY_SHOWDISCS = "musiclibrary.showdiscs";
245  static constexpr auto SETTING_MUSICLIBRARY_USEORIGINALDATE = "musiclibrary.useoriginaldate";
246  static constexpr auto SETTING_MUSICLIBRARY_USEARTISTSORTNAME = "musiclibrary.useartistsortname";
247  static constexpr auto SETTING_MUSICLIBRARY_DOWNLOADINFO = "musiclibrary.downloadinfo";
248  static constexpr auto SETTING_MUSICLIBRARY_ARTISTSFOLDER = "musiclibrary.artistsfolder";
249  static constexpr auto SETTING_MUSICLIBRARY_PREFERONLINEALBUMART =
250  "musiclibrary.preferonlinealbumart";
251  static constexpr auto SETTING_MUSICLIBRARY_ARTWORKLEVEL = "musiclibrary.artworklevel";
252  static constexpr auto SETTING_MUSICLIBRARY_USEALLLOCALART = "musiclibrary.usealllocalart";
253  static constexpr auto SETTING_MUSICLIBRARY_USEALLREMOTEART = "musiclibrary.useallremoteart";
254  static constexpr auto SETTING_MUSICLIBRARY_ARTISTART_WHITELIST =
255  "musiclibrary.artistartwhitelist";
256  static constexpr auto SETTING_MUSICLIBRARY_ALBUMART_WHITELIST = "musiclibrary.albumartwhitelist";
257  static constexpr auto SETTING_MUSICLIBRARY_MUSICTHUMBS = "musiclibrary.musicthumbs";
258  static constexpr auto SETTING_MUSICLIBRARY_ALBUMSSCRAPER = "musiclibrary.albumsscraper";
259  static constexpr auto SETTING_MUSICLIBRARY_ARTISTSSCRAPER = "musiclibrary.artistsscraper";
260  static constexpr auto SETTING_MUSICLIBRARY_OVERRIDETAGS = "musiclibrary.overridetags";
261  static constexpr auto SETTING_MUSICLIBRARY_SHOWALLITEMS = "musiclibrary.showallitems";
262  static constexpr auto SETTING_MUSICLIBRARY_UPDATEONSTARTUP = "musiclibrary.updateonstartup";
263  static constexpr auto SETTING_MUSICLIBRARY_BACKGROUNDUPDATE = "musiclibrary.backgroundupdate";
264  static constexpr auto SETTING_MUSICLIBRARY_CLEANUP = "musiclibrary.cleanup";
265  static constexpr auto SETTING_MUSICLIBRARY_EXPORT = "musiclibrary.export";
266  static constexpr auto SETTING_MUSICLIBRARY_EXPORT_FILETYPE = "musiclibrary.exportfiletype";
267  static constexpr auto SETTING_MUSICLIBRARY_EXPORT_FOLDER = "musiclibrary.exportfolder";
268  static constexpr auto SETTING_MUSICLIBRARY_EXPORT_ITEMS = "musiclibrary.exportitems";
269  static constexpr auto SETTING_MUSICLIBRARY_EXPORT_UNSCRAPED = "musiclibrary.exportunscraped";
270  static constexpr auto SETTING_MUSICLIBRARY_EXPORT_OVERWRITE = "musiclibrary.exportoverwrite";
271  static constexpr auto SETTING_MUSICLIBRARY_EXPORT_ARTWORK = "musiclibrary.exportartwork";
272  static constexpr auto SETTING_MUSICLIBRARY_EXPORT_SKIPNFO = "musiclibrary.exportskipnfo";
273  static constexpr auto SETTING_MUSICLIBRARY_IMPORT = "musiclibrary.import";
274  static constexpr auto SETTING_MUSICPLAYER_AUTOPLAYNEXTITEM = "musicplayer.autoplaynextitem";
275  static constexpr auto SETTING_MUSICPLAYER_QUEUEBYDEFAULT = "musicplayer.queuebydefault";
276  static constexpr auto SETTING_MUSICPLAYER_SEEKSTEPS = "musicplayer.seeksteps";
277  static constexpr auto SETTING_MUSICPLAYER_SEEKDELAY = "musicplayer.seekdelay";
278  static constexpr auto SETTING_MUSICPLAYER_REPLAYGAINTYPE = "musicplayer.replaygaintype";
279  static constexpr auto SETTING_MUSICPLAYER_REPLAYGAINPREAMP = "musicplayer.replaygainpreamp";
280  static constexpr auto SETTING_MUSICPLAYER_REPLAYGAINNOGAINPREAMP =
281  "musicplayer.replaygainnogainpreamp";
282  static constexpr auto SETTING_MUSICPLAYER_REPLAYGAINAVOIDCLIPPING =
283  "musicplayer.replaygainavoidclipping";
284  static constexpr auto SETTING_MUSICPLAYER_CROSSFADE = "musicplayer.crossfade";
285  static constexpr auto SETTING_MUSICPLAYER_CROSSFADEALBUMTRACKS =
286  "musicplayer.crossfadealbumtracks";
287  static constexpr auto SETTING_MUSICPLAYER_VISUALISATION = "musicplayer.visualisation";
288  static constexpr auto SETTING_MUSICFILES_SELECTACTION = "musicfiles.selectaction";
289  static constexpr auto SETTING_MUSICFILES_USETAGS = "musicfiles.usetags";
290  static constexpr auto SETTING_MUSICFILES_TRACKFORMAT = "musicfiles.trackformat";
291  static constexpr auto SETTING_MUSICFILES_NOWPLAYINGTRACKFORMAT =
292  "musicfiles.nowplayingtrackformat";
293  static constexpr auto SETTING_MUSICFILES_LIBRARYTRACKFORMAT = "musicfiles.librarytrackformat";
294  static constexpr auto SETTING_MUSICFILES_FINDREMOTETHUMBS = "musicfiles.findremotethumbs";
295  static constexpr auto SETTING_AUDIOCDS_AUTOACTION = "audiocds.autoaction";
296  static constexpr auto SETTING_AUDIOCDS_USECDDB = "audiocds.usecddb";
297  static constexpr auto SETTING_AUDIOCDS_RECORDINGPATH = "audiocds.recordingpath";
298  static constexpr auto SETTING_AUDIOCDS_TRACKPATHFORMAT = "audiocds.trackpathformat";
299  static constexpr auto SETTING_AUDIOCDS_ENCODER = "audiocds.encoder";
300  static constexpr auto SETTING_AUDIOCDS_SETTINGS = "audiocds.settings";
301  static constexpr auto SETTING_AUDIOCDS_EJECTONRIP = "audiocds.ejectonrip";
302  static constexpr auto SETTING_MYMUSIC_SONGTHUMBINVIS = "mymusic.songthumbinvis";
303  static constexpr auto SETTING_MYMUSIC_DEFAULTLIBVIEW = "mymusic.defaultlibview";
304  static constexpr auto SETTING_PICTURES_USETAGS = "pictures.usetags";
305  static constexpr auto SETTING_PICTURES_GENERATETHUMBS = "pictures.generatethumbs";
306  static constexpr auto SETTING_PICTURES_SHOWVIDEOS = "pictures.showvideos";
307  static constexpr auto SETTING_PICTURES_DISPLAYRESOLUTION = "pictures.displayresolution";
308  static constexpr auto SETTING_SLIDESHOW_STAYTIME = "slideshow.staytime";
309  static constexpr auto SETTING_SLIDESHOW_DISPLAYEFFECTS = "slideshow.displayeffects";
310  static constexpr auto SETTING_SLIDESHOW_SHUFFLE = "slideshow.shuffle";
311  static constexpr auto SETTING_SLIDESHOW_HIGHQUALITYDOWNSCALING =
312  "slideshow.highqualitydownscaling";
313  static constexpr auto SETTING_WEATHER_CURRENTLOCATION = "weather.currentlocation";
314  static constexpr auto SETTING_WEATHER_ADDON = "weather.addon";
315  static constexpr auto SETTING_WEATHER_ADDONSETTINGS = "weather.addonsettings";
316  static constexpr auto SETTING_SERVICES_DEVICENAME = "services.devicename";
317  static constexpr auto SETTING_SERVICES_DEVICEUUID = "services.deviceuuid";
318  static constexpr auto SETTING_SERVICES_UPNP = "services.upnp";
319  static constexpr auto SETTING_SERVICES_UPNPSERVER = "services.upnpserver";
320  static constexpr auto SETTING_SERVICES_UPNPANNOUNCE = "services.upnpannounce";
321  static constexpr auto SETTING_SERVICES_UPNPLOOKFOREXTERNALSUBTITLES =
322  "services.upnplookforexternalsubtitles";
323  static constexpr auto SETTING_SERVICES_UPNPCONTROLLER = "services.upnpcontroller";
324  static constexpr auto SETTING_SERVICES_UPNPRENDERER = "services.upnprenderer";
325  static constexpr auto SETTING_SERVICES_WEBSERVER = "services.webserver";
326  static constexpr auto SETTING_SERVICES_WEBSERVERPORT = "services.webserverport";
327  static constexpr auto SETTING_SERVICES_WEBSERVERAUTHENTICATION =
328  "services.webserverauthentication";
329  static constexpr auto SETTING_SERVICES_WEBSERVERUSERNAME = "services.webserverusername";
330  static constexpr auto SETTING_SERVICES_WEBSERVERPASSWORD = "services.webserverpassword";
331  static constexpr auto SETTING_SERVICES_WEBSERVERSSL = "services.webserverssl";
332  static constexpr auto SETTING_SERVICES_WEBSKIN = "services.webskin";
333  static constexpr auto SETTING_SERVICES_ESENABLED = "services.esenabled";
334  static constexpr auto SETTING_SERVICES_ESPORT = "services.esport";
335  static constexpr auto SETTING_SERVICES_ESPORTRANGE = "services.esportrange";
336  static constexpr auto SETTING_SERVICES_ESMAXCLIENTS = "services.esmaxclients";
337  static constexpr auto SETTING_SERVICES_ESALLINTERFACES = "services.esallinterfaces";
338  static constexpr auto SETTING_SERVICES_ESINITIALDELAY = "services.esinitialdelay";
339  static constexpr auto SETTING_SERVICES_ESCONTINUOUSDELAY = "services.escontinuousdelay";
340  static constexpr auto SETTING_SERVICES_ZEROCONF = "services.zeroconf";
341  static constexpr auto SETTING_SERVICES_AIRPLAY = "services.airplay";
342  static constexpr auto SETTING_SERVICES_AIRPLAYVOLUMECONTROL = "services.airplayvolumecontrol";
343  static constexpr auto SETTING_SERVICES_USEAIRPLAYPASSWORD = "services.useairplaypassword";
344  static constexpr auto SETTING_SERVICES_AIRPLAYPASSWORD = "services.airplaypassword";
345  static constexpr auto SETTING_SERVICES_AIRPLAYVIDEOSUPPORT = "services.airplayvideosupport";
346  static constexpr auto SETTING_SMB_WINSSERVER = "smb.winsserver";
347  static constexpr auto SETTING_SMB_WORKGROUP = "smb.workgroup";
348  static constexpr auto SETTING_SMB_MINPROTOCOL = "smb.minprotocol";
349  static constexpr auto SETTING_SMB_MAXPROTOCOL = "smb.maxprotocol";
350  static constexpr auto SETTING_SMB_LEGACYSECURITY = "smb.legacysecurity";
351  static constexpr auto SETTING_SERVICES_WSDISCOVERY = "services.wsdiscovery";
352  static constexpr auto SETTING_VIDEOSCREEN_MONITOR = "videoscreen.monitor";
353  static constexpr auto SETTING_VIDEOSCREEN_SCREEN = "videoscreen.screen";
354  static constexpr auto SETTING_VIDEOSCREEN_WHITELIST = "videoscreen.whitelist";
355  static constexpr auto SETTING_VIDEOSCREEN_RESOLUTION = "videoscreen.resolution";
356  static constexpr auto SETTING_VIDEOSCREEN_SCREENMODE = "videoscreen.screenmode";
357  static constexpr auto SETTING_VIDEOSCREEN_FAKEFULLSCREEN = "videoscreen.fakefullscreen";
358  static constexpr auto SETTING_VIDEOSCREEN_BLANKDISPLAYS = "videoscreen.blankdisplays";
359  static constexpr auto SETTING_VIDEOSCREEN_STEREOSCOPICMODE = "videoscreen.stereoscopicmode";
360  static constexpr auto SETTING_VIDEOSCREEN_PREFEREDSTEREOSCOPICMODE =
361  "videoscreen.preferedstereoscopicmode";
362  static constexpr auto SETTING_VIDEOSCREEN_NOOFBUFFERS = "videoscreen.noofbuffers";
363  static constexpr auto SETTING_VIDEOSCREEN_3DLUT = "videoscreen.cms3dlut";
364  static constexpr auto SETTING_VIDEOSCREEN_DISPLAYPROFILE = "videoscreen.displayprofile";
365  static constexpr auto SETTING_VIDEOSCREEN_GUICALIBRATION = "videoscreen.guicalibration";
366  static constexpr auto SETTING_VIDEOSCREEN_TESTPATTERN = "videoscreen.testpattern";
367  static constexpr auto SETTING_VIDEOSCREEN_LIMITEDRANGE = "videoscreen.limitedrange";
368  static constexpr auto SETTING_VIDEOSCREEN_FRAMEPACKING = "videoscreen.framepacking";
369  static constexpr auto SETTING_VIDEOSCREEN_10BITSURFACES = "videoscreen.10bitsurfaces";
370  static constexpr auto SETTING_VIDEOSCREEN_USESYSTEMSDRPEAKLUMINANCE =
371  "videoscreen.usesystemsdrpeakluminance";
372  static constexpr auto SETTING_VIDEOSCREEN_GUISDRPEAKLUMINANCE = "videoscreen.guipeakluminance";
373  static constexpr auto SETTING_VIDEOSCREEN_DITHER = "videoscreen.dither";
374  static constexpr auto SETTING_VIDEOSCREEN_DITHERDEPTH = "videoscreen.ditherdepth";
375  static constexpr auto SETTING_AUDIOOUTPUT_AUDIODEVICE = "audiooutput.audiodevice";
376  static constexpr auto SETTING_AUDIOOUTPUT_CHANNELS = "audiooutput.channels";
377  static constexpr auto SETTING_AUDIOOUTPUT_CONFIG = "audiooutput.config";
378  static constexpr auto SETTING_AUDIOOUTPUT_SAMPLERATE = "audiooutput.samplerate";
379  static constexpr auto SETTING_AUDIOOUTPUT_STEREOUPMIX = "audiooutput.stereoupmix";
380  static constexpr auto SETTING_AUDIOOUTPUT_MAINTAINORIGINALVOLUME =
381  "audiooutput.maintainoriginalvolume";
382  static constexpr auto SETTING_AUDIOOUTPUT_PROCESSQUALITY = "audiooutput.processquality";
383  static constexpr auto SETTING_AUDIOOUTPUT_ATEMPOTHRESHOLD = "audiooutput.atempothreshold";
384  static constexpr auto SETTING_AUDIOOUTPUT_STREAMSILENCE = "audiooutput.streamsilence";
385  static constexpr auto SETTING_AUDIOOUTPUT_STREAMNOISE = "audiooutput.streamnoise";
386  static constexpr auto SETTING_AUDIOOUTPUT_GUISOUNDMODE = "audiooutput.guisoundmode";
387  static constexpr auto SETTING_AUDIOOUTPUT_GUISOUNDVOLUME = "audiooutput.guisoundvolume";
388  static constexpr auto SETTING_AUDIOOUTPUT_PASSTHROUGH = "audiooutput.passthrough";
389  static constexpr auto SETTING_AUDIOOUTPUT_PASSTHROUGHDEVICE = "audiooutput.passthroughdevice";
390  static constexpr auto SETTING_AUDIOOUTPUT_AC3PASSTHROUGH = "audiooutput.ac3passthrough";
391  static constexpr auto SETTING_AUDIOOUTPUT_AC3TRANSCODE = "audiooutput.ac3transcode";
392  static constexpr auto SETTING_AUDIOOUTPUT_EAC3PASSTHROUGH = "audiooutput.eac3passthrough";
393  static constexpr auto SETTING_AUDIOOUTPUT_DTSPASSTHROUGH = "audiooutput.dtspassthrough";
394  static constexpr auto SETTING_AUDIOOUTPUT_TRUEHDPASSTHROUGH = "audiooutput.truehdpassthrough";
395  static constexpr auto SETTING_AUDIOOUTPUT_DTSHDPASSTHROUGH = "audiooutput.dtshdpassthrough";
396  static constexpr auto SETTING_AUDIOOUTPUT_DTSHDCOREFALLBACK = "audiooutput.dtshdcorefallback";
397  static constexpr auto SETTING_AUDIOOUTPUT_VOLUMESTEPS = "audiooutput.volumesteps";
398  static constexpr auto SETTING_INPUT_PERIPHERALS = "input.peripherals";
399  static constexpr auto SETTING_INPUT_PERIPHERALLIBRARIES = "input.peripherallibraries";
400  static constexpr auto SETTING_INPUT_ENABLEMOUSE = "input.enablemouse";
401  static constexpr auto SETTING_INPUT_ASKNEWCONTROLLERS = "input.asknewcontrollers";
402  static constexpr auto SETTING_INPUT_CONTROLLERCONFIG = "input.controllerconfig";
403  static constexpr auto SETTING_INPUT_RUMBLENOTIFY = "input.rumblenotify";
404  static constexpr auto SETTING_INPUT_TESTRUMBLE = "input.testrumble";
405  static constexpr auto SETTING_INPUT_CONTROLLERPOWEROFF = "input.controllerpoweroff";
406  static constexpr auto SETTING_INPUT_APPLEREMOTEMODE = "input.appleremotemode";
407  static constexpr auto SETTING_INPUT_APPLEREMOTEALWAYSON = "input.appleremotealwayson";
408  static constexpr auto SETTING_INPUT_APPLEREMOTESEQUENCETIME = "input.appleremotesequencetime";
409  static constexpr auto SETTING_INPUT_SIRIREMOTEIDLETIMERENABLED = "input.siriremoteidletimerenabled";
410  static constexpr auto SETTING_INPUT_SIRIREMOTEIDLETIME = "input.siriremoteidletime";
411  static constexpr auto SETTING_INPUT_SIRIREMOTEHORIZONTALSENSITIVITY =
412  "input.siriremotehorizontalsensitivity";
413  static constexpr auto SETTING_INPUT_SIRIREMOTEVERTICALSENSITIVITY =
414  "input.siriremoteverticalsensitivity";
415  static constexpr auto SETTING_INPUT_TVOSUSEKODIKEYBOARD = "input.tvosusekodikeyboard";
416  static constexpr auto SETTING_NETWORK_USEHTTPPROXY = "network.usehttpproxy";
417  static constexpr auto SETTING_NETWORK_HTTPPROXYTYPE = "network.httpproxytype";
418  static constexpr auto SETTING_NETWORK_HTTPPROXYSERVER = "network.httpproxyserver";
419  static constexpr auto SETTING_NETWORK_HTTPPROXYPORT = "network.httpproxyport";
420  static constexpr auto SETTING_NETWORK_HTTPPROXYUSERNAME = "network.httpproxyusername";
421  static constexpr auto SETTING_NETWORK_HTTPPROXYPASSWORD = "network.httpproxypassword";
422  static constexpr auto SETTING_NETWORK_BANDWIDTH = "network.bandwidth";
423  static constexpr auto SETTING_POWERMANAGEMENT_DISPLAYSOFF = "powermanagement.displaysoff";
424  static constexpr auto SETTING_POWERMANAGEMENT_SHUTDOWNTIME = "powermanagement.shutdowntime";
425  static constexpr auto SETTING_POWERMANAGEMENT_SHUTDOWNSTATE = "powermanagement.shutdownstate";
426  static constexpr auto SETTING_POWERMANAGEMENT_WAKEONACCESS = "powermanagement.wakeonaccess";
427  static constexpr auto SETTING_POWERMANAGEMENT_WAITFORNETWORK = "powermanagement.waitfornetwork";
428  static constexpr auto SETTING_DEBUG_SHOWLOGINFO = "debug.showloginfo";
429  static constexpr auto SETTING_DEBUG_EXTRALOGGING = "debug.extralogging";
430  static constexpr auto SETTING_DEBUG_SETEXTRALOGLEVEL = "debug.setextraloglevel";
431  static constexpr auto SETTING_DEBUG_SCREENSHOTPATH = "debug.screenshotpath";
432  static constexpr auto SETTING_DEBUG_SHARE_LOG = "debug.sharelog";
433  static constexpr auto SETTING_EVENTLOG_ENABLED = "eventlog.enabled";
434  static constexpr auto SETTING_EVENTLOG_ENABLED_NOTIFICATIONS = "eventlog.enablednotifications";
435  static constexpr auto SETTING_EVENTLOG_SHOW = "eventlog.show";
436  static constexpr auto SETTING_MASTERLOCK_LOCKCODE = "masterlock.lockcode";
437  static constexpr auto SETTING_MASTERLOCK_STARTUPLOCK = "masterlock.startuplock";
438  static constexpr auto SETTING_MASTERLOCK_MAXRETRIES = "masterlock.maxretries";
439  static constexpr auto SETTING_CACHE_HARDDISK = "cache.harddisk";
440  static constexpr auto SETTING_CACHEVIDEO_DVDROM = "cachevideo.dvdrom";
441  static constexpr auto SETTING_CACHEVIDEO_LAN = "cachevideo.lan";
442  static constexpr auto SETTING_CACHEVIDEO_INTERNET = "cachevideo.internet";
443  static constexpr auto SETTING_CACHEAUDIO_DVDROM = "cacheaudio.dvdrom";
444  static constexpr auto SETTING_CACHEAUDIO_LAN = "cacheaudio.lan";
445  static constexpr auto SETTING_CACHEAUDIO_INTERNET = "cacheaudio.internet";
446  static constexpr auto SETTING_CACHEDVD_DVDROM = "cachedvd.dvdrom";
447  static constexpr auto SETTING_CACHEDVD_LAN = "cachedvd.lan";
448  static constexpr auto SETTING_CACHEUNKNOWN_INTERNET = "cacheunknown.internet";
449  static constexpr auto SETTING_SYSTEM_PLAYLISTSPATH = "system.playlistspath";
450  static constexpr auto SETTING_ADDONS_AUTOUPDATES = "general.addonupdates";
451  static constexpr auto SETTING_ADDONS_NOTIFICATIONS = "general.addonnotifications";
452  static constexpr auto SETTING_ADDONS_SHOW_RUNNING = "addons.showrunning";
453  static constexpr auto SETTING_ADDONS_ALLOW_UNKNOWN_SOURCES = "addons.unknownsources";
454  static constexpr auto SETTING_ADDONS_UPDATEMODE = "addons.updatemode";
455  static constexpr auto SETTING_ADDONS_MANAGE_DEPENDENCIES = "addons.managedependencies";
456  static constexpr auto SETTING_ADDONS_REMOVE_ORPHANED_DEPENDENCIES =
457  "addons.removeorphaneddependencies";
458  static constexpr auto SETTING_GENERAL_ADDONFOREIGNFILTER = "general.addonforeignfilter";
459  static constexpr auto SETTING_GENERAL_ADDONBROKENFILTER = "general.addonbrokenfilter";
460  static constexpr auto SETTING_SOURCE_VIDEOS = "source.videos";
461  static constexpr auto SETTING_SOURCE_MUSIC = "source.music";
462  static constexpr auto SETTING_SOURCE_PICTURES = "source.pictures";
463 
464  // values for SETTING_VIDEOLIBRARY_SHOWUNWATCHEDPLOTS
465  static const int VIDEOLIBRARY_PLOTS_SHOW_UNWATCHED_MOVIES = 0;
466  static const int VIDEOLIBRARY_PLOTS_SHOW_UNWATCHED_TVSHOWEPISODES = 1;
467  static const int VIDEOLIBRARY_THUMB_SHOW_UNWATCHED_EPISODE = 2;
468  // values for SETTING_VIDEOLIBRARY_ARTWORK_LEVEL
469  static const int VIDEOLIBRARY_ARTWORK_LEVEL_ALL = 0;
470  static const int VIDEOLIBRARY_ARTWORK_LEVEL_BASIC = 1;
471  static const int VIDEOLIBRARY_ARTWORK_LEVEL_CUSTOM = 2;
472  static const int VIDEOLIBRARY_ARTWORK_LEVEL_NONE = 3;
473 
474  // values for SETTING_MUSICLIBRARY_ARTWORKLEVEL
475  static const int MUSICLIBRARY_ARTWORK_LEVEL_ALL = 0;
476  static const int MUSICLIBRARY_ARTWORK_LEVEL_BASIC = 1;
477  static const int MUSICLIBRARY_ARTWORK_LEVEL_CUSTOM = 2;
478  static const int MUSICLIBRARY_ARTWORK_LEVEL_NONE = 3;
479 
480  // values for SETTING_VIDEOPLAYER_AUTOPLAYNEXTITEM
481  static constexpr int SETTING_AUTOPLAYNEXT_MUSICVIDEOS = 0;
482  static constexpr int SETTING_AUTOPLAYNEXT_TVSHOWS = 1;
483  static constexpr int SETTING_AUTOPLAYNEXT_EPISODES = 2;
484  static constexpr int SETTING_AUTOPLAYNEXT_MOVIES = 3;
485  static constexpr int SETTING_AUTOPLAYNEXT_UNCATEGORIZED = 4;
486 
493  CSettings() = default;
494  ~CSettings() override = default;
495 
496  CSettingsManager* GetSettingsManager() const { return m_settingsManager; }
497 
498  // specialization of CSettingsBase
499  bool Initialize() override;
500 
506  void RegisterSubSettings(ISubSettings* subSettings);
512  void UnregisterSubSettings(ISubSettings* subSettings);
513 
514  // implementations of CSettingsBase
515  bool Load() override;
516  bool Save() override;
517 
524  bool Load(const std::string &file);
531  bool Load(const TiXmlElement* root);
539  bool LoadHidden(const TiXmlElement *root) { return CSettingsBase::LoadHiddenValuesFromXml(root); }
540 
547  bool Save(const std::string &file);
554  bool Save(TiXmlNode* root) const override;
555 
564  bool LoadSetting(const TiXmlNode *node, const std::string &settingId);
565 
566  // overwrite (not override) from CSettingsBase
567  bool GetBool(const std::string& id) const;
568 
576  void Clear() override;
577 
578 protected:
579  // specializations of CSettingsBase
580  void InitializeSettingTypes() override;
581  void InitializeControls() override;
582  void InitializeOptionFillers() override;
583  void UninitializeOptionFillers() override;
584  void InitializeConditions() override;
585  void UninitializeConditions() override;
586  void InitializeVisibility() override;
587  void InitializeDefaults() override;
588  void InitializeISettingsHandlers() override;
589  void UninitializeISettingsHandlers() override;
590  void InitializeISubSettings() override;
591  void UninitializeISubSettings() override;
592  void InitializeISettingCallbacks() override;
593  void UninitializeISettingCallbacks() override;
594 
595  // implementation of CSettingsBase
596  bool InitializeDefinitions() override;
597 
598 private:
599  CSettings(const CSettings&) = delete;
600  CSettings const& operator=(CSettings const&) = delete;
601 
602  bool Load(const TiXmlElement* root, bool& updated);
603 
604  // implementation of ISubSettings
605  bool Load(const TiXmlNode* settings) override;
606 
607  bool Initialize(const std::string &file);
608  bool Reset();
609 
610  std::set<ISubSettings*> m_subSettings;
611 };
List setting implementation.
Definition: Setting.h:168
Wrapper around CSettingsManager responsible for properly setting up the settings manager and register...
Definition: Settings.h:27
Definition: SettingControl.h:30
void RegisterSubSettings(ISubSettings *subSettings)
Registers the given ISubSettings implementation.
Definition: Settings.cpp:96
void UnregisterSubSettings(ISubSettings *subSettings)
Unregisters the given ISubSettings implementation.
Definition: Settings.cpp:105
Definition: SettingCreator.h:13
void Clear() override
Clears the complete settings.
Definition: Settings.cpp:199
CSettings()=default
Creates a new settings wrapper around a new settings manager.
bool LoadHiddenValuesFromXml(const TiXmlElement *root)
Loads hidden setting values from the given XML element.
Definition: SettingsBase.cpp:89
bool Save() override
Saves the setting values.
Definition: Settings.cpp:149
bool Load() override
Loads the setting values.
Definition: Settings.cpp:114
Definition: settings.py:1
Basic wrapper around CSettingsManager providing the framework for properly setting up the settings ma...
Definition: SettingsBase.h:31
Settings manager responsible for initializing, loading and handling all settings. ...
Definition: SettingsManager.h:41
bool LoadSetting(const TiXmlNode *node, const std::string &settingId)
Loads the setting being represented by the given XML node with the given identifier.
Definition: Settings.cpp:185
bool Initialize() override
Initializes the setting system with the generic settings definition and platform specific setting def...
Definition: Settings.cpp:65
bool LoadHidden(const TiXmlElement *root)
Loads setting values from the given XML element.
Definition: Settings.h:539
Interface defining methods to load additional setting values from an XML file being loaded by the set...
Definition: ISubSettings.h:18