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.
12 #include "GUIPassword.h"
14 #include "addons/AddonSystemSettings.h"
15 #include "addons/Skin.h"
16 #include "application/AppParams.h"
17 #include "cores/VideoPlayer/VideoRenderers/BaseRenderer.h"
18 #include "filesystem/File.h"
19 #include "guilib/GUIFontManager.h"
20 #include "guilib/StereoscopicsManager.h"
21 #include "input/KeyboardLayoutManager.h"
24 #if defined(TARGET_POSIX)
25 #include "platform/posix/PosixTimezone.h"
26 #endif // defined(TARGET_POSIX)
27 #include "network/upnp/UPnPSettings.h"
28 #include "network/WakeOnAccess.h"
29 #if defined(TARGET_DARWIN_OSX)
30 #include "platform/darwin/osx/XBMCHelper.h"
31 #endif // defined(TARGET_DARWIN_OSX)
32 #if defined(TARGET_DARWIN_TVOS)
33 #include "platform/darwin/tvos/TVOSSettingsHandler.h"
34 #endif // defined(TARGET_DARWIN_TVOS)
35 #if defined(TARGET_DARWIN_EMBEDDED)
36 #include "SettingAddon.h"
38 #include "DiscSettings.h"
39 #include "SeekHandler.h"
40 #include "ServiceBroker.h"
41 #include "powermanagement/PowerTypes.h"
42 #include "profiles/ProfileManager.h"
43 #include "settings/DisplaySettings.h"
44 #include "settings/MediaSettings.h"
45 #include "settings/MediaSourceSettings.h"
46 #include "settings/SettingConditions.h"
47 #include "settings/SettingsComponent.h"
48 #include "settings/SkinSettings.h"
49 #include "settings/SubtitlesSettings.h"
50 #include "settings/lib/SettingsManager.h"
51 #include "utils/CharsetConverter.h"
52 #include "utils/RssManager.h"
53 #include "utils/StringUtils.h"
54 #include "utils/SystemInfo.h"
55 #include "utils/Variant.h"
56 #include "utils/XBMCTinyXML.h"
57 #include "utils/log.h"
58 #include "view/ViewStateSettings.h"
60 #define SETTINGS_XML_FOLDER "special://xbmc/system/settings/"
63 using namespace XFILE
;
65 //! @todo: remove in c++17
66 constexpr const char* CSettings::SETTING_LOOKANDFEEL_SKIN
;
67 constexpr const char* CSettings::SETTING_LOOKANDFEEL_SKINSETTINGS
;
68 constexpr const char* CSettings::SETTING_LOOKANDFEEL_SKINTHEME
;
69 constexpr const char* CSettings::SETTING_LOOKANDFEEL_SKINCOLORS
;
70 constexpr const char* CSettings::SETTING_LOOKANDFEEL_FONT
;
71 constexpr const char* CSettings::SETTING_LOOKANDFEEL_SKINZOOM
;
72 constexpr const char* CSettings::SETTING_LOOKANDFEEL_STARTUPACTION
;
73 constexpr const char* CSettings::SETTING_LOOKANDFEEL_STARTUPWINDOW
;
74 constexpr const char* CSettings::SETTING_LOOKANDFEEL_SOUNDSKIN
;
75 constexpr const char* CSettings::SETTING_LOOKANDFEEL_ENABLERSSFEEDS
;
76 constexpr const char* CSettings::SETTING_LOOKANDFEEL_RSSEDIT
;
77 constexpr const char* CSettings::SETTING_LOOKANDFEEL_STEREOSTRENGTH
;
78 constexpr const char* CSettings::SETTING_LOCALE_LANGUAGE
;
79 constexpr const char* CSettings::SETTING_LOCALE_COUNTRY
;
80 constexpr const char* CSettings::SETTING_LOCALE_CHARSET
;
81 constexpr const char* CSettings::SETTING_LOCALE_KEYBOARDLAYOUTS
;
82 constexpr const char* CSettings::SETTING_LOCALE_ACTIVEKEYBOARDLAYOUT
;
83 constexpr const char* CSettings::SETTING_LOCALE_TIMEZONECOUNTRY
;
84 constexpr const char* CSettings::SETTING_LOCALE_TIMEZONE
;
85 constexpr const char* CSettings::SETTING_LOCALE_SHORTDATEFORMAT
;
86 constexpr const char* CSettings::SETTING_LOCALE_LONGDATEFORMAT
;
87 constexpr const char* CSettings::SETTING_LOCALE_TIMEFORMAT
;
88 constexpr const char* CSettings::SETTING_LOCALE_USE24HOURCLOCK
;
89 constexpr const char* CSettings::SETTING_LOCALE_TEMPERATUREUNIT
;
90 constexpr const char* CSettings::SETTING_LOCALE_SPEEDUNIT
;
91 constexpr const char* CSettings::SETTING_FILELISTS_SHOWPARENTDIRITEMS
;
92 constexpr const char* CSettings::SETTING_FILELISTS_SHOWEXTENSIONS
;
93 constexpr const char* CSettings::SETTING_FILELISTS_IGNORETHEWHENSORTING
;
94 constexpr const char* CSettings::SETTING_FILELISTS_ALLOWFILEDELETION
;
95 constexpr const char* CSettings::SETTING_FILELISTS_SHOWADDSOURCEBUTTONS
;
96 constexpr const char* CSettings::SETTING_FILELISTS_SHOWHIDDEN
;
97 constexpr const char* CSettings::SETTING_SCREENSAVER_MODE
;
98 constexpr const char* CSettings::SETTING_SCREENSAVER_SETTINGS
;
99 constexpr const char* CSettings::SETTING_SCREENSAVER_PREVIEW
;
100 constexpr const char* CSettings::SETTING_SCREENSAVER_TIME
;
101 constexpr const char* CSettings::SETTING_SCREENSAVER_USEMUSICVISINSTEAD
;
102 constexpr const char* CSettings::SETTING_SCREENSAVER_USEDIMONPAUSE
;
103 constexpr const char* CSettings::SETTING_WINDOW_WIDTH
;
104 constexpr const char* CSettings::SETTING_WINDOW_HEIGHT
;
105 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_SHOWUNWATCHEDPLOTS
;
106 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_ACTORTHUMBS
;
107 constexpr const char* CSettings::SETTING_MYVIDEOS_FLATTEN
;
108 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_FLATTENTVSHOWS
;
109 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_TVSHOWSSELECTFIRSTUNWATCHEDITEM
;
110 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_TVSHOWSINCLUDEALLSEASONSANDSPECIALS
;
111 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_SHOWALLITEMS
;
112 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_GROUPMOVIESETS
;
113 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_GROUPSINGLEITEMSETS
;
114 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_UPDATEONSTARTUP
;
115 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_BACKGROUNDUPDATE
;
116 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_CLEANUP
;
117 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_EXPORT
;
118 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_IMPORT
;
119 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_SHOWEMPTYTVSHOWS
;
120 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_MOVIESETSFOLDER
;
121 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_ARTWORK_LEVEL
;
122 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_MOVIEART_WHITELIST
;
123 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_TVSHOWART_WHITELIST
;
124 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_EPISODEART_WHITELIST
;
125 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_MUSICVIDEOART_WHITELIST
;
126 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_ARTSETTINGS_UPDATED
;
127 constexpr const char* CSettings::SETTING_VIDEOLIBRARY_SHOWPERFORMERS
;
128 constexpr const char* CSettings::SETTING_LOCALE_AUDIOLANGUAGE
;
129 constexpr const char* CSettings::SETTING_VIDEOPLAYER_PREFERDEFAULTFLAG
;
130 constexpr const char* CSettings::SETTING_VIDEOPLAYER_AUTOPLAYNEXTITEM
;
131 constexpr const char* CSettings::SETTING_VIDEOPLAYER_SEEKSTEPS
;
132 constexpr const char* CSettings::SETTING_VIDEOPLAYER_SEEKDELAY
;
133 constexpr const char* CSettings::SETTING_VIDEOPLAYER_ADJUSTREFRESHRATE
;
134 constexpr const char* CSettings::SETTING_VIDEOPLAYER_USEDISPLAYASCLOCK
;
135 constexpr const char* CSettings::SETTING_VIDEOPLAYER_ERRORINASPECT
;
136 constexpr const char* CSettings::SETTING_VIDEOPLAYER_STRETCH43
;
137 constexpr const char* CSettings::SETTING_VIDEOPLAYER_TELETEXTENABLED
;
138 constexpr const char* CSettings::SETTING_VIDEOPLAYER_TELETEXTSCALE
;
139 constexpr const char* CSettings::SETTING_VIDEOPLAYER_STEREOSCOPICPLAYBACKMODE
;
140 constexpr const char* CSettings::SETTING_VIDEOPLAYER_QUITSTEREOMODEONSTOP
;
141 constexpr const char* CSettings::SETTING_VIDEOPLAYER_RENDERMETHOD
;
142 constexpr const char* CSettings::SETTING_VIDEOPLAYER_HQSCALERS
;
143 constexpr const char* CSettings::SETTING_VIDEOPLAYER_USEMEDIACODEC
;
144 constexpr const char* CSettings::SETTING_VIDEOPLAYER_USEMEDIACODECSURFACE
;
145 constexpr const char* CSettings::SETTING_VIDEOPLAYER_USEVDPAU
;
146 constexpr const char* CSettings::SETTING_VIDEOPLAYER_USEVDPAUMIXER
;
147 constexpr const char* CSettings::SETTING_VIDEOPLAYER_USEVDPAUMPEG2
;
148 constexpr const char* CSettings::SETTING_VIDEOPLAYER_USEVDPAUMPEG4
;
149 constexpr const char* CSettings::SETTING_VIDEOPLAYER_USEVDPAUVC1
;
150 constexpr const char* CSettings::SETTING_VIDEOPLAYER_USEDXVA2
;
151 constexpr const char* CSettings::SETTING_VIDEOPLAYER_USEVTB
;
152 constexpr const char* CSettings::SETTING_VIDEOPLAYER_USEPRIMEDECODER
;
153 constexpr const char* CSettings::SETTING_VIDEOPLAYER_USESTAGEFRIGHT
;
154 constexpr const char* CSettings::SETTING_VIDEOPLAYER_LIMITGUIUPDATE
;
155 constexpr const char* CSettings::SETTING_VIDEOPLAYER_SUPPORTMVC
;
156 constexpr const char* CSettings::SETTING_MYVIDEOS_SELECTACTION
;
157 constexpr const char* CSettings::SETTING_MYVIDEOS_USETAGS
;
158 constexpr const char* CSettings::SETTING_MYVIDEOS_EXTRACTFLAGS
;
159 constexpr const char* CSettings::SETTING_MYVIDEOS_EXTRACTCHAPTERTHUMBS
;
160 constexpr const char* CSettings::SETTING_MYVIDEOS_REPLACELABELS
;
161 constexpr const char* CSettings::SETTING_MYVIDEOS_EXTRACTTHUMB
;
162 constexpr const char* CSettings::SETTING_MYVIDEOS_STACKVIDEOS
;
163 constexpr const char* CSettings::SETTING_LOCALE_SUBTITLELANGUAGE
;
164 constexpr const char* CSettings::SETTING_SUBTITLES_PARSECAPTIONS
;
165 constexpr const char* CSettings::SETTING_SUBTITLES_CAPTIONSALIGN
;
166 constexpr const char* CSettings::SETTING_SUBTITLES_ALIGN
;
167 constexpr const char* CSettings::SETTING_SUBTITLES_STEREOSCOPICDEPTH
;
168 constexpr const char* CSettings::SETTING_SUBTITLES_FONTNAME
;
169 constexpr const char* CSettings::SETTING_SUBTITLES_FONTSIZE
;
170 constexpr const char* CSettings::SETTING_SUBTITLES_STYLE
;
171 constexpr const char* CSettings::SETTING_SUBTITLES_COLOR
;
172 constexpr const char* CSettings::SETTING_SUBTITLES_BORDERSIZE
;
173 constexpr const char* CSettings::SETTING_SUBTITLES_BORDERCOLOR
;
174 constexpr const char* CSettings::SETTING_SUBTITLES_BGCOLOR
;
175 constexpr const char* CSettings::SETTING_SUBTITLES_BGOPACITY
;
176 constexpr const char* CSettings::SETTING_SUBTITLES_BLUR
;
177 constexpr const char* CSettings::SETTING_SUBTITLES_BACKGROUNDTYPE
;
178 constexpr const char* CSettings::SETTING_SUBTITLES_SHADOWCOLOR
;
179 constexpr const char* CSettings::SETTING_SUBTITLES_SHADOWOPACITY
;
180 constexpr const char* CSettings::SETTING_SUBTITLES_SHADOWSIZE
;
181 constexpr const char* CSettings::SETTING_SUBTITLES_CHARSET
;
182 constexpr const char* CSettings::SETTING_SUBTITLES_OVERRIDEFONTS
;
183 constexpr const char* CSettings::SETTING_SUBTITLES_OVERRIDESTYLES
;
184 constexpr const char* CSettings::SETTING_SUBTITLES_LANGUAGES
;
185 constexpr const char* CSettings::SETTING_SUBTITLES_STORAGEMODE
;
186 constexpr const char* CSettings::SETTING_SUBTITLES_CUSTOMPATH
;
187 constexpr const char* CSettings::SETTING_SUBTITLES_PAUSEONSEARCH
;
188 constexpr const char* CSettings::SETTING_SUBTITLES_DOWNLOADFIRST
;
189 constexpr const char* CSettings::SETTING_SUBTITLES_TV
;
190 constexpr const char* CSettings::SETTING_SUBTITLES_MOVIE
;
191 constexpr const char* CSettings::SETTING_DVDS_AUTORUN
;
192 constexpr const char* CSettings::SETTING_DVDS_PLAYERREGION
;
193 constexpr const char* CSettings::SETTING_DVDS_AUTOMENU
;
194 constexpr const char* CSettings::SETTING_DISC_PLAYBACK
;
195 constexpr const char* CSettings::SETTING_BLURAY_PLAYERREGION
;
196 constexpr const char* CSettings::SETTING_ACCESSIBILITY_AUDIOVISUAL
;
197 constexpr const char* CSettings::SETTING_ACCESSIBILITY_AUDIOHEARING
;
198 constexpr const char* CSettings::SETTING_ACCESSIBILITY_SUBHEARING
;
199 constexpr const char* CSettings::SETTING_SCRAPERS_MOVIESDEFAULT
;
200 constexpr const char* CSettings::SETTING_SCRAPERS_TVSHOWSDEFAULT
;
201 constexpr const char* CSettings::SETTING_SCRAPERS_MUSICVIDEOSDEFAULT
;
202 constexpr const char* CSettings::SETTING_PVRMANAGER_PRESELECTPLAYINGCHANNEL
;
203 constexpr const char* CSettings::SETTING_PVRMANAGER_SYNCCHANNELGROUPS
;
204 constexpr const char* CSettings::SETTING_PVRMANAGER_BACKENDCHANNELORDER
;
205 constexpr const char* CSettings::SETTING_PVRMANAGER_USEBACKENDCHANNELNUMBERS
;
206 constexpr const char* CSettings::SETTING_PVRMANAGER_USEBACKENDCHANNELNUMBERSALWAYS
;
207 constexpr const char* CSettings::SETTING_PVRMANAGER_STARTGROUPCHANNELNUMBERSFROMONE
;
208 constexpr const char* CSettings::SETTING_PVRMANAGER_CLIENTPRIORITIES
;
209 constexpr const char* CSettings::SETTING_PVRMANAGER_CHANNELMANAGER
;
210 constexpr const char* CSettings::SETTING_PVRMANAGER_GROUPMANAGER
;
211 constexpr const char* CSettings::SETTING_PVRMANAGER_CHANNELSCAN
;
212 constexpr const char* CSettings::SETTING_PVRMANAGER_RESETDB
;
213 constexpr const char* CSettings::SETTING_PVRMANAGER_ADDONS
;
214 constexpr const char* CSettings::SETTING_PVRMENU_DISPLAYCHANNELINFO
;
215 constexpr const char* CSettings::SETTING_PVRMENU_CLOSECHANNELOSDONSWITCH
;
216 constexpr const char* CSettings::SETTING_PVRMENU_ICONPATH
;
217 constexpr const char* CSettings::SETTING_PVRMENU_SEARCHICONS
;
218 constexpr const char* CSettings::SETTING_EPG_PAST_DAYSTODISPLAY
;
219 constexpr const char* CSettings::SETTING_EPG_FUTURE_DAYSTODISPLAY
;
220 constexpr const char* CSettings::SETTING_EPG_SELECTACTION
;
221 constexpr const char* CSettings::SETTING_EPG_HIDENOINFOAVAILABLE
;
222 constexpr const char* CSettings::SETTING_EPG_EPGUPDATE
;
223 constexpr const char* CSettings::SETTING_EPG_PREVENTUPDATESWHILEPLAYINGTV
;
224 constexpr const char* CSettings::SETTING_EPG_RESETEPG
;
225 constexpr const char* CSettings::SETTING_PVRPLAYBACK_SWITCHTOFULLSCREENCHANNELTYPES
;
226 constexpr const char* CSettings::SETTING_PVRPLAYBACK_SIGNALQUALITY
;
227 constexpr const char* CSettings::SETTING_PVRPLAYBACK_CONFIRMCHANNELSWITCH
;
228 constexpr const char* CSettings::SETTING_PVRPLAYBACK_CHANNELENTRYTIMEOUT
;
229 constexpr const char* CSettings::SETTING_PVRPLAYBACK_DELAYMARKLASTWATCHED
;
230 constexpr const char* CSettings::SETTING_PVRPLAYBACK_FPS
;
231 constexpr const char* CSettings::SETTING_PVRRECORD_INSTANTRECORDACTION
;
232 constexpr const char* CSettings::SETTING_PVRRECORD_INSTANTRECORDTIME
;
233 constexpr const char* CSettings::SETTING_PVRRECORD_MARGINSTART
;
234 constexpr const char* CSettings::SETTING_PVRRECORD_MARGINEND
;
235 constexpr const char* CSettings::SETTING_PVRRECORD_TIMERNOTIFICATIONS
;
236 constexpr const char* CSettings::SETTING_PVRRECORD_GROUPRECORDINGS
;
237 constexpr const char* CSettings::SETTING_PVRREMINDERS_AUTOCLOSEDELAY
;
238 constexpr const char* CSettings::SETTING_PVRREMINDERS_AUTORECORD
;
239 constexpr const char* CSettings::SETTING_PVRREMINDERS_AUTOSWITCH
;
240 constexpr const char* CSettings::SETTING_PVRPOWERMANAGEMENT_ENABLED
;
241 constexpr const char* CSettings::SETTING_PVRPOWERMANAGEMENT_BACKENDIDLETIME
;
242 constexpr const char* CSettings::SETTING_PVRPOWERMANAGEMENT_SETWAKEUPCMD
;
243 constexpr const char* CSettings::SETTING_PVRPOWERMANAGEMENT_PREWAKEUP
;
244 constexpr const char* CSettings::SETTING_PVRPOWERMANAGEMENT_DAILYWAKEUP
;
245 constexpr const char* CSettings::SETTING_PVRPOWERMANAGEMENT_DAILYWAKEUPTIME
;
246 constexpr const char* CSettings::SETTING_PVRPARENTAL_ENABLED
;
247 constexpr const char* CSettings::SETTING_PVRPARENTAL_PIN
;
248 constexpr const char* CSettings::SETTING_PVRPARENTAL_DURATION
;
249 constexpr const char* CSettings::SETTING_PVRCLIENT_MENUHOOK
;
250 constexpr const char* CSettings::SETTING_PVRTIMERS_HIDEDISABLEDTIMERS
;
251 constexpr const char* CSettings::SETTING_MUSICLIBRARY_SHOWCOMPILATIONARTISTS
;
252 constexpr const char* CSettings::SETTING_MUSICLIBRARY_SHOWDISCS
;
253 constexpr const char* CSettings::SETTING_MUSICLIBRARY_USEORIGINALDATE
;
254 constexpr const char* CSettings::SETTING_MUSICLIBRARY_USEARTISTSORTNAME
;
255 constexpr const char* CSettings::SETTING_MUSICLIBRARY_DOWNLOADINFO
;
256 constexpr const char* CSettings::SETTING_MUSICLIBRARY_ARTISTSFOLDER
;
257 constexpr const char* CSettings::SETTING_MUSICLIBRARY_PREFERONLINEALBUMART
;
258 constexpr const char* CSettings::SETTING_MUSICLIBRARY_ARTWORKLEVEL
;
259 constexpr const char* CSettings::SETTING_MUSICLIBRARY_USEALLLOCALART
;
260 constexpr const char* CSettings::SETTING_MUSICLIBRARY_USEALLREMOTEART
;
261 constexpr const char* CSettings::SETTING_MUSICLIBRARY_ARTISTART_WHITELIST
;
262 constexpr const char* CSettings::SETTING_MUSICLIBRARY_ALBUMART_WHITELIST
;
263 constexpr const char* CSettings::SETTING_MUSICLIBRARY_MUSICTHUMBS
;
264 constexpr const char* CSettings::SETTING_MUSICLIBRARY_ARTSETTINGS_UPDATED
;
265 constexpr const char* CSettings::SETTING_MUSICLIBRARY_ALBUMSSCRAPER
;
266 constexpr const char* CSettings::SETTING_MUSICLIBRARY_ARTISTSSCRAPER
;
267 constexpr const char* CSettings::SETTING_MUSICLIBRARY_OVERRIDETAGS
;
268 constexpr const char* CSettings::SETTING_MUSICLIBRARY_SHOWALLITEMS
;
269 constexpr const char* CSettings::SETTING_MUSICLIBRARY_UPDATEONSTARTUP
;
270 constexpr const char* CSettings::SETTING_MUSICLIBRARY_BACKGROUNDUPDATE
;
271 constexpr const char* CSettings::SETTING_MUSICLIBRARY_CLEANUP
;
272 constexpr const char* CSettings::SETTING_MUSICLIBRARY_EXPORT
;
273 constexpr const char* CSettings::SETTING_MUSICLIBRARY_EXPORT_FILETYPE
;
274 constexpr const char* CSettings::SETTING_MUSICLIBRARY_EXPORT_FOLDER
;
275 constexpr const char* CSettings::SETTING_MUSICLIBRARY_EXPORT_ITEMS
;
276 constexpr const char* CSettings::SETTING_MUSICLIBRARY_EXPORT_UNSCRAPED
;
277 constexpr const char* CSettings::SETTING_MUSICLIBRARY_EXPORT_OVERWRITE
;
278 constexpr const char* CSettings::SETTING_MUSICLIBRARY_EXPORT_ARTWORK
;
279 constexpr const char* CSettings::SETTING_MUSICLIBRARY_EXPORT_SKIPNFO
;
280 constexpr const char* CSettings::SETTING_MUSICLIBRARY_IMPORT
;
281 constexpr const char* CSettings::SETTING_MUSICPLAYER_AUTOPLAYNEXTITEM
;
282 constexpr const char* CSettings::SETTING_MUSICPLAYER_QUEUEBYDEFAULT
;
283 constexpr const char* CSettings::SETTING_MUSICPLAYER_SEEKSTEPS
;
284 constexpr const char* CSettings::SETTING_MUSICPLAYER_SEEKDELAY
;
285 constexpr const char* CSettings::SETTING_MUSICPLAYER_REPLAYGAINTYPE
;
286 constexpr const char* CSettings::SETTING_MUSICPLAYER_REPLAYGAINPREAMP
;
287 constexpr const char* CSettings::SETTING_MUSICPLAYER_REPLAYGAINNOGAINPREAMP
;
288 constexpr const char* CSettings::SETTING_MUSICPLAYER_REPLAYGAINAVOIDCLIPPING
;
289 constexpr const char* CSettings::SETTING_MUSICPLAYER_CROSSFADE
;
290 constexpr const char* CSettings::SETTING_MUSICPLAYER_CROSSFADEALBUMTRACKS
;
291 constexpr const char* CSettings::SETTING_MUSICPLAYER_VISUALISATION
;
292 constexpr const char* CSettings::SETTING_MUSICFILES_SELECTACTION
;
293 constexpr const char* CSettings::SETTING_MUSICFILES_USETAGS
;
294 constexpr const char* CSettings::SETTING_MUSICFILES_TRACKFORMAT
;
295 constexpr const char* CSettings::SETTING_MUSICFILES_NOWPLAYINGTRACKFORMAT
;
296 constexpr const char* CSettings::SETTING_MUSICFILES_LIBRARYTRACKFORMAT
;
297 constexpr const char* CSettings::SETTING_MUSICFILES_FINDREMOTETHUMBS
;
298 constexpr const char* CSettings::SETTING_AUDIOCDS_AUTOACTION
;
299 constexpr const char* CSettings::SETTING_AUDIOCDS_USECDDB
;
300 constexpr const char* CSettings::SETTING_AUDIOCDS_RECORDINGPATH
;
301 constexpr const char* CSettings::SETTING_AUDIOCDS_TRACKPATHFORMAT
;
302 constexpr const char* CSettings::SETTING_AUDIOCDS_ENCODER
;
303 constexpr const char* CSettings::SETTING_AUDIOCDS_SETTINGS
;
304 constexpr const char* CSettings::SETTING_AUDIOCDS_EJECTONRIP
;
305 constexpr const char* CSettings::SETTING_MYMUSIC_SONGTHUMBINVIS
;
306 constexpr const char* CSettings::SETTING_MYMUSIC_DEFAULTLIBVIEW
;
307 constexpr const char* CSettings::SETTING_PICTURES_USETAGS
;
308 constexpr const char* CSettings::SETTING_PICTURES_GENERATETHUMBS
;
309 constexpr const char* CSettings::SETTING_PICTURES_SHOWVIDEOS
;
310 constexpr const char* CSettings::SETTING_PICTURES_DISPLAYRESOLUTION
;
311 constexpr const char* CSettings::SETTING_SLIDESHOW_STAYTIME
;
312 constexpr const char* CSettings::SETTING_SLIDESHOW_DISPLAYEFFECTS
;
313 constexpr const char* CSettings::SETTING_SLIDESHOW_SHUFFLE
;
314 constexpr const char* CSettings::SETTING_SLIDESHOW_HIGHQUALITYDOWNSCALING
;
315 constexpr const char* CSettings::SETTING_WEATHER_CURRENTLOCATION
;
316 constexpr const char* CSettings::SETTING_WEATHER_ADDON
;
317 constexpr const char* CSettings::SETTING_WEATHER_ADDONSETTINGS
;
318 constexpr const char* CSettings::SETTING_SERVICES_DEVICENAME
;
319 constexpr const char* CSettings::SETTING_SERVICES_DEVICEUUID
;
320 constexpr const char* CSettings::SETTING_SERVICES_UPNP
;
321 constexpr const char* CSettings::SETTING_SERVICES_UPNPSERVER
;
322 constexpr const char* CSettings::SETTING_SERVICES_UPNPANNOUNCE
;
323 constexpr const char* CSettings::SETTING_SERVICES_UPNPLOOKFOREXTERNALSUBTITLES
;
324 constexpr const char* CSettings::SETTING_SERVICES_UPNPCONTROLLER
;
325 constexpr const char* CSettings::SETTING_SERVICES_UPNPRENDERER
;
326 constexpr const char* CSettings::SETTING_SERVICES_WEBSERVER
;
327 constexpr const char* CSettings::SETTING_SERVICES_WEBSERVERPORT
;
328 constexpr const char* CSettings::SETTING_SERVICES_WEBSERVERAUTHENTICATION
;
329 constexpr const char* CSettings::SETTING_SERVICES_WEBSERVERUSERNAME
;
330 constexpr const char* CSettings::SETTING_SERVICES_WEBSERVERPASSWORD
;
331 constexpr const char* CSettings::SETTING_SERVICES_WEBSERVERSSL
;
332 constexpr const char* CSettings::SETTING_SERVICES_WEBSKIN
;
333 constexpr const char* CSettings::SETTING_SERVICES_ESENABLED
;
334 constexpr const char* CSettings::SETTING_SERVICES_ESPORT
;
335 constexpr const char* CSettings::SETTING_SERVICES_ESPORTRANGE
;
336 constexpr const char* CSettings::SETTING_SERVICES_ESMAXCLIENTS
;
337 constexpr const char* CSettings::SETTING_SERVICES_ESALLINTERFACES
;
338 constexpr const char* CSettings::SETTING_SERVICES_ESINITIALDELAY
;
339 constexpr const char* CSettings::SETTING_SERVICES_ESCONTINUOUSDELAY
;
340 constexpr const char* CSettings::SETTING_SERVICES_ZEROCONF
;
341 constexpr const char* CSettings::SETTING_SERVICES_AIRPLAY
;
342 constexpr const char* CSettings::SETTING_SERVICES_AIRPLAYVOLUMECONTROL
;
343 constexpr const char* CSettings::SETTING_SERVICES_USEAIRPLAYPASSWORD
;
344 constexpr const char* CSettings::SETTING_SERVICES_AIRPLAYPASSWORD
;
345 constexpr const char* CSettings::SETTING_SERVICES_AIRPLAYVIDEOSUPPORT
;
346 constexpr const char* CSettings::SETTING_SMB_WINSSERVER
;
347 constexpr const char* CSettings::SETTING_SMB_WORKGROUP
;
348 constexpr const char* CSettings::SETTING_SMB_MINPROTOCOL
;
349 constexpr const char* CSettings::SETTING_SMB_MAXPROTOCOL
;
350 constexpr const char* CSettings::SETTING_SMB_LEGACYSECURITY
;
351 constexpr const char* CSettings::SETTING_SERVICES_WSDISCOVERY
;
352 constexpr const char* CSettings::SETTING_VIDEOSCREEN_MONITOR
;
353 constexpr const char* CSettings::SETTING_VIDEOSCREEN_SCREEN
;
354 constexpr const char* CSettings::SETTING_VIDEOSCREEN_WHITELIST
;
355 constexpr const char* CSettings::SETTING_VIDEOSCREEN_RESOLUTION
;
356 constexpr const char* CSettings::SETTING_VIDEOSCREEN_SCREENMODE
;
357 constexpr const char* CSettings::SETTING_VIDEOSCREEN_FAKEFULLSCREEN
;
358 constexpr const char* CSettings::SETTING_VIDEOSCREEN_BLANKDISPLAYS
;
359 constexpr const char* CSettings::SETTING_VIDEOSCREEN_STEREOSCOPICMODE
;
360 constexpr const char* CSettings::SETTING_VIDEOSCREEN_PREFEREDSTEREOSCOPICMODE
;
361 constexpr const char* CSettings::SETTING_VIDEOSCREEN_NOOFBUFFERS
;
362 constexpr const char* CSettings::SETTING_VIDEOSCREEN_3DLUT
;
363 constexpr const char* CSettings::SETTING_VIDEOSCREEN_DISPLAYPROFILE
;
364 constexpr const char* CSettings::SETTING_VIDEOSCREEN_GUICALIBRATION
;
365 constexpr const char* CSettings::SETTING_VIDEOSCREEN_TESTPATTERN
;
366 constexpr const char* CSettings::SETTING_VIDEOSCREEN_LIMITEDRANGE
;
367 constexpr const char* CSettings::SETTING_VIDEOSCREEN_FRAMEPACKING
;
368 constexpr const char* CSettings::SETTING_VIDEOSCREEN_10BITSURFACES
;
369 constexpr const char* CSettings::SETTING_VIDEOSCREEN_GUISDRPEAKLUMINANCE
;
370 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_AUDIODEVICE
;
371 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_CHANNELS
;
372 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_CONFIG
;
373 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_SAMPLERATE
;
374 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_STEREOUPMIX
;
375 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_MAINTAINORIGINALVOLUME
;
376 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_PROCESSQUALITY
;
377 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_ATEMPOTHRESHOLD
;
378 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_STREAMSILENCE
;
379 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_STREAMNOISE
;
380 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_GUISOUNDMODE
;
381 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_GUISOUNDVOLUME
;
382 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_PASSTHROUGH
;
383 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_PASSTHROUGHDEVICE
;
384 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_AC3PASSTHROUGH
;
385 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_AC3TRANSCODE
;
386 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_EAC3PASSTHROUGH
;
387 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_DTSPASSTHROUGH
;
388 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_TRUEHDPASSTHROUGH
;
389 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_DTSHDPASSTHROUGH
;
390 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_DTSHDCOREFALLBACK
;
391 constexpr const char* CSettings::SETTING_AUDIOOUTPUT_VOLUMESTEPS
;
392 constexpr const char* CSettings::SETTING_INPUT_PERIPHERALS
;
393 constexpr const char* CSettings::SETTING_INPUT_PERIPHERALLIBRARIES
;
394 constexpr const char* CSettings::SETTING_INPUT_ENABLEMOUSE
;
395 constexpr const char* CSettings::SETTING_INPUT_ASKNEWCONTROLLERS
;
396 constexpr const char* CSettings::SETTING_INPUT_CONTROLLERCONFIG
;
397 constexpr const char* CSettings::SETTING_INPUT_RUMBLENOTIFY
;
398 constexpr const char* CSettings::SETTING_INPUT_TESTRUMBLE
;
399 constexpr const char* CSettings::SETTING_INPUT_CONTROLLERPOWEROFF
;
400 constexpr const char* CSettings::SETTING_INPUT_APPLEREMOTEMODE
;
401 constexpr const char* CSettings::SETTING_INPUT_APPLEREMOTEALWAYSON
;
402 constexpr const char* CSettings::SETTING_INPUT_APPLEREMOTESEQUENCETIME
;
403 constexpr const char* CSettings::SETTING_INPUT_SIRIREMOTEIDLETIMERENABLED
;
404 constexpr const char* CSettings::SETTING_INPUT_SIRIREMOTEIDLETIME
;
405 constexpr const char* CSettings::SETTING_INPUT_SIRIREMOTEHORIZONTALSENSITIVITY
;
406 constexpr const char* CSettings::SETTING_INPUT_SIRIREMOTEVERTICALSENSITIVITY
;
407 constexpr const char* CSettings::SETTING_INPUT_TVOSUSEKODIKEYBOARD
;
408 constexpr const char* CSettings::SETTING_NETWORK_USEHTTPPROXY
;
409 constexpr const char* CSettings::SETTING_NETWORK_HTTPPROXYTYPE
;
410 constexpr const char* CSettings::SETTING_NETWORK_HTTPPROXYSERVER
;
411 constexpr const char* CSettings::SETTING_NETWORK_HTTPPROXYPORT
;
412 constexpr const char* CSettings::SETTING_NETWORK_HTTPPROXYUSERNAME
;
413 constexpr const char* CSettings::SETTING_NETWORK_HTTPPROXYPASSWORD
;
414 constexpr const char* CSettings::SETTING_NETWORK_BANDWIDTH
;
415 constexpr const char* CSettings::SETTING_POWERMANAGEMENT_DISPLAYSOFF
;
416 constexpr const char* CSettings::SETTING_POWERMANAGEMENT_SHUTDOWNTIME
;
417 constexpr const char* CSettings::SETTING_POWERMANAGEMENT_SHUTDOWNSTATE
;
418 constexpr const char* CSettings::SETTING_POWERMANAGEMENT_WAKEONACCESS
;
419 constexpr const char* CSettings::SETTING_POWERMANAGEMENT_WAITFORNETWORK
;
420 constexpr const char* CSettings::SETTING_DEBUG_SHOWLOGINFO
;
421 constexpr const char* CSettings::SETTING_DEBUG_EXTRALOGGING
;
422 constexpr const char* CSettings::SETTING_DEBUG_SETEXTRALOGLEVEL
;
423 constexpr const char* CSettings::SETTING_DEBUG_SCREENSHOTPATH
;
424 constexpr const char* CSettings::SETTING_DEBUG_SHARE_LOG
;
425 constexpr const char* CSettings::SETTING_EVENTLOG_ENABLED
;
426 constexpr const char* CSettings::SETTING_EVENTLOG_ENABLED_NOTIFICATIONS
;
427 constexpr const char* CSettings::SETTING_EVENTLOG_SHOW
;
428 constexpr const char* CSettings::SETTING_MASTERLOCK_LOCKCODE
;
429 constexpr const char* CSettings::SETTING_MASTERLOCK_STARTUPLOCK
;
430 constexpr const char* CSettings::SETTING_MASTERLOCK_MAXRETRIES
;
431 constexpr const char* CSettings::SETTING_CACHE_HARDDISK
;
432 constexpr const char* CSettings::SETTING_CACHEVIDEO_DVDROM
;
433 constexpr const char* CSettings::SETTING_CACHEVIDEO_LAN
;
434 constexpr const char* CSettings::SETTING_CACHEVIDEO_INTERNET
;
435 constexpr const char* CSettings::SETTING_CACHEAUDIO_DVDROM
;
436 constexpr const char* CSettings::SETTING_CACHEAUDIO_LAN
;
437 constexpr const char* CSettings::SETTING_CACHEAUDIO_INTERNET
;
438 constexpr const char* CSettings::SETTING_CACHEDVD_DVDROM
;
439 constexpr const char* CSettings::SETTING_CACHEDVD_LAN
;
440 constexpr const char* CSettings::SETTING_CACHEUNKNOWN_INTERNET
;
441 constexpr const char* CSettings::SETTING_SYSTEM_PLAYLISTSPATH
;
442 constexpr const char* CSettings::SETTING_ADDONS_AUTOUPDATES
;
443 constexpr const char* CSettings::SETTING_ADDONS_NOTIFICATIONS
;
444 constexpr const char* CSettings::SETTING_ADDONS_SHOW_RUNNING
;
445 constexpr const char* CSettings::SETTING_ADDONS_ALLOW_UNKNOWN_SOURCES
;
446 constexpr const char* CSettings::SETTING_ADDONS_UPDATEMODE
;
447 constexpr const char* CSettings::SETTING_ADDONS_MANAGE_DEPENDENCIES
;
448 constexpr const char* CSettings::SETTING_ADDONS_REMOVE_ORPHANED_DEPENDENCIES
;
449 constexpr const char* CSettings::SETTING_GENERAL_ADDONFOREIGNFILTER
;
450 constexpr const char* CSettings::SETTING_GENERAL_ADDONBROKENFILTER
;
451 constexpr const char* CSettings::SETTING_SOURCE_VIDEOS
;
452 constexpr const char* CSettings::SETTING_SOURCE_MUSIC
;
453 constexpr const char* CSettings::SETTING_SOURCE_PICTURES
;
454 //! @todo: remove in c++17
456 bool CSettings::Initialize()
458 std::unique_lock
<CCriticalSection
> lock(m_critical
);
462 // register custom setting types
463 InitializeSettingTypes();
464 // register custom setting controls
465 InitializeControls();
467 // option fillers and conditions need to be
468 // initialized before the setting definitions
469 InitializeOptionFillers();
470 InitializeConditions();
472 // load the settings definitions
473 if (!InitializeDefinitions())
476 GetSettingsManager()->SetInitialized();
478 InitializeISettingsHandlers();
479 InitializeISubSettings();
480 InitializeISettingCallbacks();
482 m_initialized
= true;
487 void CSettings::RegisterSubSettings(ISubSettings
* subSettings
)
489 if (subSettings
== nullptr)
492 std::unique_lock
<CCriticalSection
> lock(m_critical
);
493 m_subSettings
.insert(subSettings
);
496 void CSettings::UnregisterSubSettings(ISubSettings
* subSettings
)
498 if (subSettings
== nullptr)
501 std::unique_lock
<CCriticalSection
> lock(m_critical
);
502 m_subSettings
.erase(subSettings
);
505 bool CSettings::Load()
507 const std::shared_ptr
<CProfileManager
> profileManager
= CServiceBroker::GetSettingsComponent()->GetProfileManager();
509 return Load(profileManager
->GetSettingsFile());
512 bool CSettings::Load(const std::string
&file
)
515 bool updated
= false;
516 if (!XFILE::CFile::Exists(file
) || !xmlDoc
.LoadFile(file
) ||
517 !Load(xmlDoc
.RootElement(), updated
))
519 CLog::Log(LOGERROR
, "CSettings: unable to load settings from {}, creating new default settings",
527 // if the settings had to be updated, we need to save the changes
534 bool CSettings::Load(const TiXmlElement
* root
)
536 bool updated
= false;
537 return Load(root
, updated
);
540 bool CSettings::Save()
542 const std::shared_ptr
<CProfileManager
> profileManager
= CServiceBroker::GetSettingsComponent()->GetProfileManager();
544 return Save(profileManager
->GetSettingsFile());
547 bool CSettings::Save(const std::string
&file
)
550 if (!SaveValuesToXml(xmlDoc
))
553 TiXmlElement
* root
= xmlDoc
.RootElement();
560 return xmlDoc
.SaveFile(file
);
563 bool CSettings::Save(TiXmlNode
* root
) const
565 std::unique_lock
<CCriticalSection
> lock(m_critical
);
566 // save any ISubSettings implementations
567 for (const auto& subSetting
: m_subSettings
)
569 if (!subSetting
->Save(root
))
576 bool CSettings::LoadSetting(const TiXmlNode
*node
, const std::string
&settingId
)
578 return GetSettingsManager()->LoadSetting(node
, settingId
);
581 bool CSettings::GetBool(const std::string
& id
) const
583 // Backward compatibility (skins use this setting)
584 if (StringUtils::EqualsNoCase(id
, "lookandfeel.enablemouse"))
585 return CSettingsBase::GetBool(CSettings::SETTING_INPUT_ENABLEMOUSE
);
587 return CSettingsBase::GetBool(id
);
590 void CSettings::Clear()
592 std::unique_lock
<CCriticalSection
> lock(m_critical
);
596 GetSettingsManager()->Clear();
598 for (auto& subSetting
: m_subSettings
)
601 m_initialized
= false;
604 bool CSettings::Load(const TiXmlElement
* root
, bool& updated
)
609 if (!CSettingsBase::LoadValuesFromXml(root
, updated
))
612 return Load(static_cast<const TiXmlNode
*>(root
));
615 bool CSettings::Load(const TiXmlNode
* settings
)
618 std::unique_lock
<CCriticalSection
> lock(m_critical
);
619 for (const auto& subSetting
: m_subSettings
)
620 ok
&= subSetting
->Load(settings
);
625 bool CSettings::Initialize(const std::string
&file
)
628 if (!xmlDoc
.LoadFile(file
.c_str()))
630 CLog::Log(LOGERROR
, "CSettings: error loading settings definition from {}, Line {}\n{}", file
,
631 xmlDoc
.ErrorRow(), xmlDoc
.ErrorDesc());
635 CLog::Log(LOGDEBUG
, "CSettings: loaded settings definition from {}", file
);
637 return InitializeDefinitionsFromXml(xmlDoc
);
640 bool CSettings::InitializeDefinitions()
642 if (!Initialize(SETTINGS_XML_FOLDER
"settings.xml"))
644 CLog::Log(LOGFATAL
, "Unable to load settings definitions");
647 #if defined(TARGET_WINDOWS)
648 if (CFile::Exists(SETTINGS_XML_FOLDER
"windows.xml") && !Initialize(SETTINGS_XML_FOLDER
"windows.xml"))
649 CLog::Log(LOGFATAL
, "Unable to load windows-specific settings definitions");
650 #if defined(TARGET_WINDOWS_DESKTOP)
651 if (CFile::Exists(SETTINGS_XML_FOLDER
"win32.xml") && !Initialize(SETTINGS_XML_FOLDER
"win32.xml"))
652 CLog::Log(LOGFATAL
, "Unable to load win32-specific settings definitions");
653 #elif defined(TARGET_WINDOWS_STORE)
654 if (CFile::Exists(SETTINGS_XML_FOLDER
"win10.xml") && !Initialize(SETTINGS_XML_FOLDER
"win10.xml"))
655 CLog::Log(LOGFATAL
, "Unable to load win10-specific settings definitions");
657 #elif defined(TARGET_ANDROID)
658 if (CFile::Exists(SETTINGS_XML_FOLDER
"android.xml") && !Initialize(SETTINGS_XML_FOLDER
"android.xml"))
659 CLog::Log(LOGFATAL
, "Unable to load android-specific settings definitions");
660 #elif defined(TARGET_FREEBSD)
661 if (CFile::Exists(SETTINGS_XML_FOLDER
"freebsd.xml") && !Initialize(SETTINGS_XML_FOLDER
"freebsd.xml"))
662 CLog::Log(LOGFATAL
, "Unable to load freebsd-specific settings definitions");
663 #elif defined(TARGET_LINUX)
664 if (CFile::Exists(SETTINGS_XML_FOLDER
"linux.xml") && !Initialize(SETTINGS_XML_FOLDER
"linux.xml"))
665 CLog::Log(LOGFATAL
, "Unable to load linux-specific settings definitions");
666 #elif defined(TARGET_DARWIN)
667 if (CFile::Exists(SETTINGS_XML_FOLDER
"darwin.xml") && !Initialize(SETTINGS_XML_FOLDER
"darwin.xml"))
668 CLog::Log(LOGFATAL
, "Unable to load darwin-specific settings definitions");
669 #if defined(TARGET_DARWIN_OSX)
670 if (CFile::Exists(SETTINGS_XML_FOLDER
"darwin_osx.xml") && !Initialize(SETTINGS_XML_FOLDER
"darwin_osx.xml"))
671 CLog::Log(LOGFATAL
, "Unable to load osx-specific settings definitions");
672 #elif defined(TARGET_DARWIN_IOS)
673 if (CFile::Exists(SETTINGS_XML_FOLDER
"darwin_ios.xml") && !Initialize(SETTINGS_XML_FOLDER
"darwin_ios.xml"))
674 CLog::Log(LOGFATAL
, "Unable to load ios-specific settings definitions");
675 #elif defined(TARGET_DARWIN_TVOS)
676 if (CFile::Exists(SETTINGS_XML_FOLDER
"darwin_tvos.xml") &&
677 !Initialize(SETTINGS_XML_FOLDER
"darwin_tvos.xml"))
678 CLog::Log(LOGFATAL
, "Unable to load tvos-specific settings definitions");
682 #if defined(PLATFORM_SETTINGS_FILE)
683 if (CFile::Exists(SETTINGS_XML_FOLDER
DEF_TO_STR_VALUE(PLATFORM_SETTINGS_FILE
)) && !Initialize(SETTINGS_XML_FOLDER
DEF_TO_STR_VALUE(PLATFORM_SETTINGS_FILE
)))
684 CLog::Log(LOGFATAL
, "Unable to load platform-specific settings definitions ({})",
685 DEF_TO_STR_VALUE(PLATFORM_SETTINGS_FILE
));
688 // load any custom visibility and default values before loading the special
689 // appliance.xml so that appliances are able to overwrite even those values
690 InitializeVisibility();
691 InitializeDefaults();
693 if (CFile::Exists(SETTINGS_XML_FOLDER
"appliance.xml") && !Initialize(SETTINGS_XML_FOLDER
"appliance.xml"))
694 CLog::Log(LOGFATAL
, "Unable to load appliance-specific settings definitions");
699 void CSettings::InitializeSettingTypes()
701 GetSettingsManager()->RegisterSettingType("addon", this);
702 GetSettingsManager()->RegisterSettingType("date", this);
703 GetSettingsManager()->RegisterSettingType("path", this);
704 GetSettingsManager()->RegisterSettingType("time", this);
707 void CSettings::InitializeControls()
709 GetSettingsManager()->RegisterSettingControl("toggle", this);
710 GetSettingsManager()->RegisterSettingControl("spinner", this);
711 GetSettingsManager()->RegisterSettingControl("edit", this);
712 GetSettingsManager()->RegisterSettingControl("button", this);
713 GetSettingsManager()->RegisterSettingControl("list", this);
714 GetSettingsManager()->RegisterSettingControl("slider", this);
715 GetSettingsManager()->RegisterSettingControl("range", this);
716 GetSettingsManager()->RegisterSettingControl("title", this);
717 GetSettingsManager()->RegisterSettingControl("colorbutton", this);
720 void CSettings::InitializeVisibility()
722 // hide some settings if necessary
723 #if defined(TARGET_DARWIN_EMBEDDED)
724 std::shared_ptr
<CSettingString
> timezonecountry
= std::static_pointer_cast
<CSettingString
>(GetSettingsManager()->GetSetting(CSettings::SETTING_LOCALE_TIMEZONECOUNTRY
));
725 std::shared_ptr
<CSettingString
> timezone
= std::static_pointer_cast
<CSettingString
>(GetSettingsManager()->GetSetting(CSettings::SETTING_LOCALE_TIMEZONE
));
727 timezonecountry
->SetRequirementsMet(false);
728 timezone
->SetRequirementsMet(false);
732 void CSettings::InitializeDefaults()
734 // set some default values if necessary
735 #if defined(TARGET_POSIX)
736 std::shared_ptr
<CSettingString
> timezonecountry
= std::static_pointer_cast
<CSettingString
>(GetSettingsManager()->GetSetting(CSettings::SETTING_LOCALE_TIMEZONECOUNTRY
));
737 std::shared_ptr
<CSettingString
> timezone
= std::static_pointer_cast
<CSettingString
>(GetSettingsManager()->GetSetting(CSettings::SETTING_LOCALE_TIMEZONE
));
739 if (timezonecountry
->IsVisible())
740 timezonecountry
->SetDefault(g_timezone
.GetCountryByTimezone(g_timezone
.GetOSConfiguredTimezone()));
741 if (timezone
->IsVisible())
742 timezone
->SetDefault(g_timezone
.GetOSConfiguredTimezone());
743 #endif // defined(TARGET_POSIX)
745 #if defined(TARGET_WINDOWS)
746 // We prefer a fake fullscreen mode (window covering the screen rather than dedicated fullscreen)
747 // as it works nicer with switching to other applications. However on some systems vsync is broken
748 // when we do this (eg non-Aero on ATI in particular) and on others (AppleTV) we can't get XBMC to
750 if (g_sysinfo
.IsAeroDisabled())
752 auto setting
= GetSettingsManager()->GetSetting(CSettings::SETTING_VIDEOSCREEN_FAKEFULLSCREEN
);
754 CLog::Log(LOGERROR
, "Failed to load setting for: {}",
755 CSettings::SETTING_VIDEOSCREEN_FAKEFULLSCREEN
);
757 std::static_pointer_cast
<CSettingBool
>(setting
)->SetDefault(false);
761 if (CServiceBroker::GetAppParams()->IsStandAlone())
764 GetSettingsManager()->GetSetting(CSettings::SETTING_POWERMANAGEMENT_SHUTDOWNSTATE
);
766 CLog::Log(LOGERROR
, "Failed to load setting for: {}",
767 CSettings::SETTING_POWERMANAGEMENT_SHUTDOWNSTATE
);
769 std::static_pointer_cast
<CSettingInt
>(setting
)->SetDefault(POWERSTATE_SHUTDOWN
);
772 // Initialize deviceUUID if not already set, used in zeroconf advertisements.
773 std::shared_ptr
<CSettingString
> deviceUUID
= std::static_pointer_cast
<CSettingString
>(GetSettingsManager()->GetSetting(CSettings::SETTING_SERVICES_DEVICEUUID
));
774 if (deviceUUID
->GetValue().empty())
776 const std::string
& uuid
= StringUtils::CreateUUID();
777 auto setting
= GetSettingsManager()->GetSetting(CSettings::SETTING_SERVICES_DEVICEUUID
);
779 CLog::Log(LOGERROR
, "Failed to load setting for: {}", CSettings::SETTING_SERVICES_DEVICEUUID
);
781 std::static_pointer_cast
<CSettingString
>(setting
)->SetValue(uuid
);
785 void CSettings::InitializeOptionFillers()
787 // register setting option fillers
789 GetSettingsManager()->RegisterSettingOptionsFiller("audiocdactions", MEDIA_DETECT::CAutorun::SettingOptionAudioCdActionsFiller
);
791 GetSettingsManager()->RegisterSettingOptionsFiller("charsets", CCharsetConverter::SettingOptionsCharsetsFiller
);
792 GetSettingsManager()->RegisterSettingOptionsFiller("fonts", GUIFontManager::SettingOptionsFontsFiller
);
793 GetSettingsManager()->RegisterSettingOptionsFiller(
794 "subtitlesfonts", SUBTITLES::CSubtitlesSettings::SettingOptionsSubtitleFontsFiller
);
795 GetSettingsManager()->RegisterSettingOptionsFiller("languagenames", CLangInfo::SettingOptionsLanguageNamesFiller
);
796 GetSettingsManager()->RegisterSettingOptionsFiller("refreshchangedelays", CDisplaySettings::SettingOptionsRefreshChangeDelaysFiller
);
797 GetSettingsManager()->RegisterSettingOptionsFiller("refreshrates", CDisplaySettings::SettingOptionsRefreshRatesFiller
);
798 GetSettingsManager()->RegisterSettingOptionsFiller("regions", CLangInfo::SettingOptionsRegionsFiller
);
799 GetSettingsManager()->RegisterSettingOptionsFiller("shortdateformats", CLangInfo::SettingOptionsShortDateFormatsFiller
);
800 GetSettingsManager()->RegisterSettingOptionsFiller("longdateformats", CLangInfo::SettingOptionsLongDateFormatsFiller
);
801 GetSettingsManager()->RegisterSettingOptionsFiller("timeformats", CLangInfo::SettingOptionsTimeFormatsFiller
);
802 GetSettingsManager()->RegisterSettingOptionsFiller("24hourclockformats", CLangInfo::SettingOptions24HourClockFormatsFiller
);
803 GetSettingsManager()->RegisterSettingOptionsFiller("speedunits", CLangInfo::SettingOptionsSpeedUnitsFiller
);
804 GetSettingsManager()->RegisterSettingOptionsFiller("temperatureunits", CLangInfo::SettingOptionsTemperatureUnitsFiller
);
805 GetSettingsManager()->RegisterSettingOptionsFiller("rendermethods", CBaseRenderer::SettingOptionsRenderMethodsFiller
);
806 GetSettingsManager()->RegisterSettingOptionsFiller("modes", CDisplaySettings::SettingOptionsModesFiller
);
807 GetSettingsManager()->RegisterSettingOptionsFiller("resolutions", CDisplaySettings::SettingOptionsResolutionsFiller
);
808 GetSettingsManager()->RegisterSettingOptionsFiller("screens", CDisplaySettings::SettingOptionsDispModeFiller
);
809 GetSettingsManager()->RegisterSettingOptionsFiller("stereoscopicmodes", CDisplaySettings::SettingOptionsStereoscopicModesFiller
);
810 GetSettingsManager()->RegisterSettingOptionsFiller("preferedstereoscopicviewmodes", CDisplaySettings::SettingOptionsPreferredStereoscopicViewModesFiller
);
811 GetSettingsManager()->RegisterSettingOptionsFiller("monitors", CDisplaySettings::SettingOptionsMonitorsFiller
);
812 GetSettingsManager()->RegisterSettingOptionsFiller("cmsmodes", CDisplaySettings::SettingOptionsCmsModesFiller
);
813 GetSettingsManager()->RegisterSettingOptionsFiller("cmswhitepoints", CDisplaySettings::SettingOptionsCmsWhitepointsFiller
);
814 GetSettingsManager()->RegisterSettingOptionsFiller("cmsprimaries", CDisplaySettings::SettingOptionsCmsPrimariesFiller
);
815 GetSettingsManager()->RegisterSettingOptionsFiller("cmsgammamodes", CDisplaySettings::SettingOptionsCmsGammaModesFiller
);
816 GetSettingsManager()->RegisterSettingOptionsFiller("videoseeksteps", CSeekHandler::SettingOptionsSeekStepsFiller
);
817 GetSettingsManager()->RegisterSettingOptionsFiller("startupwindows", ADDON::CSkinInfo::SettingOptionsStartupWindowsFiller
);
818 GetSettingsManager()->RegisterSettingOptionsFiller("audiostreamlanguages", CLangInfo::SettingOptionsAudioStreamLanguagesFiller
);
819 GetSettingsManager()->RegisterSettingOptionsFiller("subtitlestreamlanguages", CLangInfo::SettingOptionsSubtitleStreamLanguagesFiller
);
820 GetSettingsManager()->RegisterSettingOptionsFiller("subtitledownloadlanguages", CLangInfo::SettingOptionsSubtitleDownloadlanguagesFiller
);
821 GetSettingsManager()->RegisterSettingOptionsFiller("iso6391languages", CLangInfo::SettingOptionsISO6391LanguagesFiller
);
822 GetSettingsManager()->RegisterSettingOptionsFiller("skincolors", ADDON::CSkinInfo::SettingOptionsSkinColorsFiller
);
823 GetSettingsManager()->RegisterSettingOptionsFiller("skinfonts", ADDON::CSkinInfo::SettingOptionsSkinFontsFiller
);
824 GetSettingsManager()->RegisterSettingOptionsFiller("skinthemes", ADDON::CSkinInfo::SettingOptionsSkinThemesFiller
);
826 GetSettingsManager()->RegisterSettingOptionsFiller("timezonecountries", CPosixTimezone::SettingOptionsTimezoneCountriesFiller
);
827 GetSettingsManager()->RegisterSettingOptionsFiller("timezones", CPosixTimezone::SettingOptionsTimezonesFiller
);
829 GetSettingsManager()->RegisterSettingOptionsFiller("keyboardlayouts", CKeyboardLayoutManager::SettingOptionsKeyboardLayoutsFiller
);
832 void CSettings::UninitializeOptionFillers()
834 GetSettingsManager()->UnregisterSettingOptionsFiller("audiocdactions");
835 GetSettingsManager()->UnregisterSettingOptionsFiller("audiocdencoders");
836 GetSettingsManager()->UnregisterSettingOptionsFiller("charsets");
837 GetSettingsManager()->UnregisterSettingOptionsFiller("fontheights");
838 GetSettingsManager()->UnregisterSettingOptionsFiller("fonts");
839 GetSettingsManager()->UnregisterSettingOptionsFiller("subtitlesfonts");
840 GetSettingsManager()->UnregisterSettingOptionsFiller("languagenames");
841 GetSettingsManager()->UnregisterSettingOptionsFiller("refreshchangedelays");
842 GetSettingsManager()->UnregisterSettingOptionsFiller("refreshrates");
843 GetSettingsManager()->UnregisterSettingOptionsFiller("regions");
844 GetSettingsManager()->UnregisterSettingOptionsFiller("shortdateformats");
845 GetSettingsManager()->UnregisterSettingOptionsFiller("longdateformats");
846 GetSettingsManager()->UnregisterSettingOptionsFiller("timeformats");
847 GetSettingsManager()->UnregisterSettingOptionsFiller("24hourclockformats");
848 GetSettingsManager()->UnregisterSettingOptionsFiller("speedunits");
849 GetSettingsManager()->UnregisterSettingOptionsFiller("temperatureunits");
850 GetSettingsManager()->UnregisterSettingOptionsFiller("rendermethods");
851 GetSettingsManager()->UnregisterSettingOptionsFiller("resolutions");
852 GetSettingsManager()->UnregisterSettingOptionsFiller("screens");
853 GetSettingsManager()->UnregisterSettingOptionsFiller("stereoscopicmodes");
854 GetSettingsManager()->UnregisterSettingOptionsFiller("preferedstereoscopicviewmodes");
855 GetSettingsManager()->UnregisterSettingOptionsFiller("monitors");
856 GetSettingsManager()->UnregisterSettingOptionsFiller("cmsmodes");
857 GetSettingsManager()->UnregisterSettingOptionsFiller("cmswhitepoints");
858 GetSettingsManager()->UnregisterSettingOptionsFiller("cmsprimaries");
859 GetSettingsManager()->UnregisterSettingOptionsFiller("cmsgammamodes");
860 GetSettingsManager()->UnregisterSettingOptionsFiller("videoseeksteps");
861 GetSettingsManager()->UnregisterSettingOptionsFiller("shutdownstates");
862 GetSettingsManager()->UnregisterSettingOptionsFiller("startupwindows");
863 GetSettingsManager()->UnregisterSettingOptionsFiller("audiostreamlanguages");
864 GetSettingsManager()->UnregisterSettingOptionsFiller("subtitlestreamlanguages");
865 GetSettingsManager()->UnregisterSettingOptionsFiller("subtitledownloadlanguages");
866 GetSettingsManager()->UnregisterSettingOptionsFiller("iso6391languages");
867 GetSettingsManager()->UnregisterSettingOptionsFiller("skincolors");
868 GetSettingsManager()->UnregisterSettingOptionsFiller("skinfonts");
869 GetSettingsManager()->UnregisterSettingOptionsFiller("skinthemes");
870 #if defined(TARGET_LINUX)
871 GetSettingsManager()->UnregisterSettingOptionsFiller("timezonecountries");
872 GetSettingsManager()->UnregisterSettingOptionsFiller("timezones");
873 #endif // defined(TARGET_LINUX)
874 GetSettingsManager()->UnregisterSettingOptionsFiller("verticalsyncs");
875 GetSettingsManager()->UnregisterSettingOptionsFiller("keyboardlayouts");
878 void CSettings::InitializeConditions()
880 CSettingConditions::Initialize();
882 // add basic conditions
883 const std::set
<std::string
> &simpleConditions
= CSettingConditions::GetSimpleConditions();
884 for (std::set
<std::string
>::const_iterator itCondition
= simpleConditions
.begin(); itCondition
!= simpleConditions
.end(); ++itCondition
)
885 GetSettingsManager()->AddCondition(*itCondition
);
887 // add more complex conditions
888 const std::map
<std::string
, SettingConditionCheck
> &complexConditions
= CSettingConditions::GetComplexConditions();
889 for (std::map
<std::string
, SettingConditionCheck
>::const_iterator itCondition
= complexConditions
.begin(); itCondition
!= complexConditions
.end(); ++itCondition
)
890 GetSettingsManager()->AddDynamicCondition(itCondition
->first
, itCondition
->second
);
893 void CSettings::UninitializeConditions()
895 CSettingConditions::Deinitialize();
898 void CSettings::InitializeISettingsHandlers()
900 // register ISettingsHandler implementations
901 // The order of these matters! Handlers are processed in the order they were registered.
902 GetSettingsManager()->RegisterSettingsHandler(&CMediaSourceSettings::GetInstance());
904 GetSettingsManager()->RegisterSettingsHandler(&CUPnPSettings::GetInstance());
906 GetSettingsManager()->RegisterSettingsHandler(&CWakeOnAccess::GetInstance());
907 GetSettingsManager()->RegisterSettingsHandler(&CRssManager::GetInstance());
908 GetSettingsManager()->RegisterSettingsHandler(&g_langInfo
);
909 #if defined(TARGET_LINUX) && !defined(TARGET_ANDROID) && !defined(__UCLIBC__)
910 GetSettingsManager()->RegisterSettingsHandler(&g_timezone
);
912 GetSettingsManager()->RegisterSettingsHandler(&CMediaSettings::GetInstance());
915 void CSettings::UninitializeISettingsHandlers()
917 // unregister ISettingsHandler implementations
918 GetSettingsManager()->UnregisterSettingsHandler(&CMediaSettings::GetInstance());
919 #if defined(TARGET_LINUX)
920 GetSettingsManager()->UnregisterSettingsHandler(&g_timezone
);
921 #endif // defined(TARGET_LINUX)
922 GetSettingsManager()->UnregisterSettingsHandler(&g_langInfo
);
923 GetSettingsManager()->UnregisterSettingsHandler(&CRssManager::GetInstance());
924 GetSettingsManager()->UnregisterSettingsHandler(&CWakeOnAccess::GetInstance());
926 GetSettingsManager()->UnregisterSettingsHandler(&CUPnPSettings::GetInstance());
928 GetSettingsManager()->UnregisterSettingsHandler(&CMediaSourceSettings::GetInstance());
931 void CSettings::InitializeISubSettings()
933 // register ISubSettings implementations
934 RegisterSubSettings(&CDisplaySettings::GetInstance());
935 RegisterSubSettings(&CMediaSettings::GetInstance());
936 RegisterSubSettings(&CSkinSettings::GetInstance());
937 RegisterSubSettings(&g_sysinfo
);
938 RegisterSubSettings(&CViewStateSettings::GetInstance());
941 void CSettings::UninitializeISubSettings()
943 // unregister ISubSettings implementations
944 UnregisterSubSettings(&CDisplaySettings::GetInstance());
945 UnregisterSubSettings(&CMediaSettings::GetInstance());
946 UnregisterSubSettings(&CSkinSettings::GetInstance());
947 UnregisterSubSettings(&g_sysinfo
);
948 UnregisterSubSettings(&CViewStateSettings::GetInstance());
951 void CSettings::InitializeISettingCallbacks()
953 // register any ISettingCallback implementations
954 std::set
<std::string
> settingSet
;
955 settingSet
.insert(CSettings::SETTING_MUSICLIBRARY_CLEANUP
);
956 settingSet
.insert(CSettings::SETTING_MUSICLIBRARY_EXPORT
);
957 settingSet
.insert(CSettings::SETTING_MUSICLIBRARY_IMPORT
);
958 settingSet
.insert(CSettings::SETTING_MUSICFILES_TRACKFORMAT
);
959 settingSet
.insert(CSettings::SETTING_VIDEOLIBRARY_FLATTENTVSHOWS
);
960 settingSet
.insert(CSettings::SETTING_VIDEOLIBRARY_GROUPMOVIESETS
);
961 settingSet
.insert(CSettings::SETTING_VIDEOLIBRARY_CLEANUP
);
962 settingSet
.insert(CSettings::SETTING_VIDEOLIBRARY_IMPORT
);
963 settingSet
.insert(CSettings::SETTING_VIDEOLIBRARY_EXPORT
);
964 settingSet
.insert(CSettings::SETTING_VIDEOLIBRARY_SHOWUNWATCHEDPLOTS
);
965 GetSettingsManager()->RegisterCallback(&CMediaSettings::GetInstance(), settingSet
);
968 settingSet
.insert(CSettings::SETTING_VIDEOSCREEN_SCREEN
);
969 settingSet
.insert(CSettings::SETTING_VIDEOSCREEN_RESOLUTION
);
970 settingSet
.insert(CSettings::SETTING_VIDEOSCREEN_SCREENMODE
);
971 settingSet
.insert(CSettings::SETTING_VIDEOSCREEN_MONITOR
);
972 settingSet
.insert(CSettings::SETTING_VIDEOSCREEN_PREFEREDSTEREOSCOPICMODE
);
973 settingSet
.insert(CSettings::SETTING_VIDEOSCREEN_3DLUT
);
974 settingSet
.insert(CSettings::SETTING_VIDEOSCREEN_DISPLAYPROFILE
);
975 settingSet
.insert(CSettings::SETTING_VIDEOSCREEN_BLANKDISPLAYS
);
976 settingSet
.insert(CSettings::SETTING_VIDEOSCREEN_WHITELIST
);
977 settingSet
.insert(CSettings::SETTING_VIDEOSCREEN_10BITSURFACES
);
978 GetSettingsManager()->RegisterCallback(&CDisplaySettings::GetInstance(), settingSet
);
981 settingSet
.insert(CSettings::SETTING_SUBTITLES_CHARSET
);
982 settingSet
.insert(CSettings::SETTING_LOCALE_CHARSET
);
983 GetSettingsManager()->RegisterCallback(&g_charsetConverter
, settingSet
);
986 settingSet
.insert(CSettings::SETTING_LOCALE_AUDIOLANGUAGE
);
987 settingSet
.insert(CSettings::SETTING_LOCALE_SUBTITLELANGUAGE
);
988 settingSet
.insert(CSettings::SETTING_LOCALE_LANGUAGE
);
989 settingSet
.insert(CSettings::SETTING_LOCALE_COUNTRY
);
990 settingSet
.insert(CSettings::SETTING_LOCALE_SHORTDATEFORMAT
);
991 settingSet
.insert(CSettings::SETTING_LOCALE_LONGDATEFORMAT
);
992 settingSet
.insert(CSettings::SETTING_LOCALE_TIMEFORMAT
);
993 settingSet
.insert(CSettings::SETTING_LOCALE_USE24HOURCLOCK
);
994 settingSet
.insert(CSettings::SETTING_LOCALE_TEMPERATUREUNIT
);
995 settingSet
.insert(CSettings::SETTING_LOCALE_SPEEDUNIT
);
996 GetSettingsManager()->RegisterCallback(&g_langInfo
, settingSet
);
999 settingSet
.insert(CSettings::SETTING_MASTERLOCK_LOCKCODE
);
1000 GetSettingsManager()->RegisterCallback(&g_passwordManager
, settingSet
);
1003 settingSet
.insert(CSettings::SETTING_LOOKANDFEEL_RSSEDIT
);
1004 GetSettingsManager()->RegisterCallback(&CRssManager::GetInstance(), settingSet
);
1006 #if defined(TARGET_LINUX)
1008 settingSet
.insert(CSettings::SETTING_LOCALE_TIMEZONE
);
1009 settingSet
.insert(CSettings::SETTING_LOCALE_TIMEZONECOUNTRY
);
1010 GetSettingsManager()->RegisterCallback(&g_timezone
, settingSet
);
1013 #if defined(TARGET_DARWIN_OSX)
1015 settingSet
.insert(CSettings::SETTING_INPUT_APPLEREMOTEMODE
);
1016 settingSet
.insert(CSettings::SETTING_INPUT_APPLEREMOTEALWAYSON
);
1017 GetSettingsManager()->RegisterCallback(&XBMCHelper::GetInstance(), settingSet
);
1020 #if defined(TARGET_DARWIN_TVOS)
1022 settingSet
.insert(CSettings::SETTING_INPUT_SIRIREMOTEIDLETIMERENABLED
);
1023 settingSet
.insert(CSettings::SETTING_INPUT_SIRIREMOTEIDLETIME
);
1024 settingSet
.insert(CSettings::SETTING_INPUT_SIRIREMOTEHORIZONTALSENSITIVITY
);
1025 settingSet
.insert(CSettings::SETTING_INPUT_SIRIREMOTEVERTICALSENSITIVITY
);
1026 GetSettingsManager()->RegisterCallback(&CTVOSInputSettings::GetInstance(), settingSet
);
1030 settingSet
.insert(CSettings::SETTING_ADDONS_SHOW_RUNNING
);
1031 settingSet
.insert(CSettings::SETTING_ADDONS_MANAGE_DEPENDENCIES
);
1032 settingSet
.insert(CSettings::SETTING_ADDONS_REMOVE_ORPHANED_DEPENDENCIES
);
1033 settingSet
.insert(CSettings::SETTING_ADDONS_ALLOW_UNKNOWN_SOURCES
);
1034 GetSettingsManager()->RegisterCallback(&ADDON::CAddonSystemSettings::GetInstance(), settingSet
);
1037 settingSet
.insert(CSettings::SETTING_POWERMANAGEMENT_WAKEONACCESS
);
1038 GetSettingsManager()->RegisterCallback(&CWakeOnAccess::GetInstance(), settingSet
);
1040 #ifdef HAVE_LIBBLURAY
1042 settingSet
.insert(CSettings::SETTING_DISC_PLAYBACK
);
1043 GetSettingsManager()->RegisterCallback(&CDiscSettings::GetInstance(), settingSet
);
1047 void CSettings::UninitializeISettingCallbacks()
1049 GetSettingsManager()->UnregisterCallback(&CMediaSettings::GetInstance());
1050 GetSettingsManager()->UnregisterCallback(&CDisplaySettings::GetInstance());
1051 GetSettingsManager()->UnregisterCallback(&g_charsetConverter
);
1052 GetSettingsManager()->UnregisterCallback(&g_langInfo
);
1053 GetSettingsManager()->UnregisterCallback(&g_passwordManager
);
1054 GetSettingsManager()->UnregisterCallback(&CRssManager::GetInstance());
1055 #if defined(TARGET_LINUX)
1056 GetSettingsManager()->UnregisterCallback(&g_timezone
);
1057 #endif // defined(TARGET_LINUX)
1058 #if defined(TARGET_DARWIN_OSX)
1059 GetSettingsManager()->UnregisterCallback(&XBMCHelper::GetInstance());
1061 GetSettingsManager()->UnregisterCallback(&CWakeOnAccess::GetInstance());
1062 #ifdef HAVE_LIBBLURAY
1063 GetSettingsManager()->UnregisterCallback(&CDiscSettings::GetInstance());
1067 bool CSettings::Reset()
1069 const std::shared_ptr
<CProfileManager
> profileManager
= CServiceBroker::GetSettingsComponent()->GetProfileManager();
1071 const std::string settingsFile
= profileManager
->GetSettingsFile();
1073 // try to delete the settings file
1074 if (XFILE::CFile::Exists(settingsFile
, false) && !XFILE::CFile::Delete(settingsFile
))
1075 CLog::Log(LOGWARNING
, "Unable to delete old settings file at {}", settingsFile
);
1077 // unload any loaded settings
1080 // try to save the default settings
1083 CLog::Log(LOGWARNING
, "Failed to save the default settings to {}", settingsFile
);