Merge pull request #2757 from FernetMenta/pvrstream
authorRainer Hochecker <fernetmenta@online.de>
Sat, 25 May 2013 08:01:58 +0000 (01:01 -0700)
committerRainer Hochecker <fernetmenta@online.de>
Sat, 25 May 2013 08:01:58 +0000 (01:01 -0700)
pvr: fix channel switch for addons using other stream

58 files changed:
addons/metadata.album.universal/addon.xml
addons/metadata.artists.universal/addon.xml
addons/metadata.common.musicbrainz.org/addon.xml
language/English/strings.po
language/Swedish/langinfo.xml
lib/ffmpeg/libavcodec/vaapi.c
lib/ffmpeg/patches/0038-vaapi-don-t-unmap-non-existing-buffer.patch [new file with mode: 0644]
system/settings/darwin.xml
system/settings/darwin_ios.xml
system/settings/settings.xml
system/settings/win32.xml
tools/buildsteps/win32/prepare-env.bat
xbmc/Application.cpp
xbmc/GUIPassword.cpp
xbmc/LangInfo.cpp
xbmc/Util.cpp
xbmc/addons/Skin.cpp
xbmc/android/jni/BroadcastReceiver.cpp
xbmc/cores/AudioEngine/AEFactory.cpp
xbmc/epg/EpgContainer.cpp
xbmc/filesystem/CurlFile.cpp
xbmc/filesystem/CurlFile.h
xbmc/filesystem/MusicDatabaseDirectory.cpp
xbmc/filesystem/VideoDatabaseDirectory.cpp
xbmc/guilib/GUIAudioManager.cpp
xbmc/guilib/GUISliderControl.cpp
xbmc/guilib/GraphicContext.cpp
xbmc/input/SDLJoystick.cpp
xbmc/interfaces/Builtins.cpp
xbmc/linux/LinuxTimezone.cpp
xbmc/network/Network.cpp
xbmc/network/NetworkServices.cpp
xbmc/network/TCPServer.cpp
xbmc/network/Zeroconf.cpp
xbmc/network/upnp/UPnPServer.cpp
xbmc/osx/XBMCHelper.cpp
xbmc/peripherals/dialogs/GUIDialogPeripheralSettings.cpp
xbmc/powermanagement/PowerManager.cpp
xbmc/pvr/PVRManager.cpp
xbmc/pvr/channels/PVRChannelGroup.cpp
xbmc/settings/AdvancedSettings.cpp
xbmc/settings/DisplaySettings.cpp
xbmc/settings/DisplaySettings.h
xbmc/settings/ISettingCallback.h
xbmc/settings/Setting.cpp
xbmc/settings/Setting.h
xbmc/settings/SettingAddon.cpp
xbmc/settings/Settings.cpp
xbmc/settings/Settings.h
xbmc/settings/SettingsManager.cpp
xbmc/settings/SettingsManager.h
xbmc/settings/windows/GUIControlSettings.cpp
xbmc/settings/windows/GUIControlSettings.h
xbmc/settings/windows/GUIWindowSettingsCategory.cpp
xbmc/settings/windows/GUIWindowSettingsCategory.h
xbmc/utils/Weather.cpp
xbmc/win32/WIN32Util.h
xbmc/windowing/WinSystem.cpp

index 248230c..f9468c9 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.album.universal"
        name="Universal Album Scraper"
-       version="1.7.6"
+       version="1.7.7b"
        provider-name="Olympia, Team XBMC">
   <requires>
     <import addon="xbmc.metadata" version="2.1.0"/>
index 1bc15a7..e7045e3 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.artists.universal"
        name="Universal Artist Scraper"
-       version="2.6.5"
+       version="2.6.6b"
        provider-name="Olympia, Team XBMC">
   <requires>
     <import addon="xbmc.metadata" version="2.1.0"/>
index df66d41..a70f9cf 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.common.musicbrainz.org"
        name="musicbrainz"
-        version="1.3.0"
+        version="1.3.1b"
        provider-name="Team XBMC">
   <requires>
     <import addon="xbmc.metadata" version="2.1.0"/>
index 11d46c2..de5b1b5 100644 (file)
@@ -15,7 +15,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: xbmc/addons/addon.cpp
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#0"
 msgid "Programs"
 msgstr ""
@@ -31,7 +31,7 @@ msgid "Music"
 msgstr ""
 
 #: Used in Confluence
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#3"
 msgid "Videos"
 msgstr ""
@@ -491,7 +491,7 @@ msgid "Objects"
 msgstr ""
 
 #: xbmc/addons/guidialogaddonsettings.cpp
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#128"
 msgid "General"
 msgstr ""
@@ -504,7 +504,7 @@ msgctxt "#130"
 msgid "System info"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#131"
 msgid "Display"
 msgstr ""
@@ -665,7 +665,7 @@ msgid "Disc present"
 msgstr ""
 
 #: xbmc/addons/addon.cpp
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#166"
 msgid "Skin"
 msgstr ""
@@ -678,12 +678,12 @@ msgstr ""
 
 #empty string with id 168
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#169"
 msgid "Resolution"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#170"
 msgid "Adjust display refresh rate to match video"
 msgstr ""
@@ -694,7 +694,7 @@ msgctxt "#172"
 msgid "Release date"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#173"
 msgid "Display 4:3 videos as"
 msgstr ""
@@ -800,7 +800,7 @@ msgid "Loading movie details"
 msgstr ""
 
 #: xbmc/addons/addon.cpp
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#199"
 msgid "Web interface"
 msgstr ""
@@ -830,7 +830,7 @@ msgid "Plot"
 msgstr ""
 
 #: xbmc/dialogs/GUIDialogPlayEject.cpp
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#208"
 msgid "Play"
 msgstr ""
@@ -849,7 +849,7 @@ msgctxt "#213"
 msgid "Calibrate user interface..."
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#214"
 msgid "Video calibration..."
 msgstr ""
@@ -909,12 +909,12 @@ msgctxt "#225"
 msgid "Vertical Shift"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#226"
 msgid "Test patterns..."
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#227"
 msgid "Lookup audio CD track names from freedb.org"
 msgstr ""
@@ -934,7 +934,7 @@ msgstr ""
 #: system/peripherals.xml
 #: xbmc/addons/guiviewstateaddonbrowser.cpp
 #: xbmc/dialogs/GUIDialogMediaSource.cpp
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#231"
 msgid "None"
 msgstr ""
@@ -971,7 +971,7 @@ msgctxt "#239"
 msgid "Clear playlist on finish"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#240"
 msgid "Display Mode"
 msgstr ""
@@ -984,7 +984,7 @@ msgctxt "#242"
 msgid "Windowed"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#243"
 msgid "Refresh Rate"
 msgstr ""
@@ -1003,7 +1003,7 @@ msgctxt "#247"
 msgid "Scripts"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#248"
 msgid "Language"
 msgstr ""
@@ -1013,7 +1013,7 @@ msgctxt "#249"
 msgid "Music"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#250"
 msgid "Visualization"
 msgstr ""
@@ -1022,7 +1022,7 @@ msgctxt "#251"
 msgid "Select destination directory"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#252"
 msgid "Output stereo to all speakers"
 msgstr ""
@@ -1031,7 +1031,7 @@ msgctxt "#253"
 msgid "Number of channels"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#254"
 msgid "- DTS capable receiver"
 msgstr ""
@@ -1049,7 +1049,7 @@ msgctxt "#257"
 msgid "Error"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#258"
 msgid "Enable tag reading"
 msgstr ""
@@ -1070,7 +1070,7 @@ msgctxt "#262"
 msgid "Scripts output"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#263"
 msgid "Allow control of XBMC via HTTP"
 msgstr ""
@@ -1161,17 +1161,17 @@ msgctxt "#284"
 msgid "No results found"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#285"
 msgid "Preferred audio language"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#286"
 msgid "Preferred subtitle language"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#287"
 msgid "Subtitles"
 msgstr ""
@@ -1180,7 +1180,7 @@ msgctxt "#288"
 msgid "Font"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#289"
 msgid "- Size"
 msgstr ""
@@ -1220,7 +1220,7 @@ msgctxt "#298"
 msgid "Bookmarks"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#299"
 msgid "- AAC capable receiver"
 msgstr ""
@@ -1247,7 +1247,7 @@ msgstr ""
 
 #: system/peripherals.xml
 #: xbmc/filesystem/AddonsDirectory.cpp
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#305"
 msgid "Enabled"
 msgstr ""
@@ -1356,7 +1356,7 @@ msgctxt "#333"
 msgid "Do you want to clean the library?"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#334"
 msgid "Clean library..."
 msgstr ""
@@ -1369,17 +1369,17 @@ msgctxt "#336"
 msgid "Framerate conversion"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#337"
 msgid "Audio output"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#338"
 msgid "Analog"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#339"
 msgid "Optical/Coax"
 msgstr ""
@@ -1412,22 +1412,22 @@ msgctxt "#345"
 msgid "Year"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#346"
 msgid "Boost volume level on downmix"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#347"
 msgid "- DTS-HD capable receiver"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#348"
 msgid "- Multichannel LPCM capable receiver"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#349"
 msgid "- TrueHD capable receiver"
 msgstr ""
@@ -1437,7 +1437,7 @@ msgctxt "#350"
 msgid "Programs"
 msgstr ""
 
-#: xbmc/settings/darwin.xml
+#: system/settings/darwin.xml
 msgctxt "#351"
 msgid "Off"
 msgstr ""
@@ -1454,17 +1454,17 @@ msgctxt "#354"
 msgid "Matrix trails"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#355"
 msgid "Screensaver time"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#356"
 msgid "Screensaver mode"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#357"
 msgid "Shutdown function timer"
 msgstr ""
@@ -1478,7 +1478,7 @@ msgctxt "#359"
 msgid "Recently added albums"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#360"
 msgid "Screensaver"
 msgstr ""
@@ -1495,7 +1495,7 @@ msgctxt "#363"
 msgid "Sort by: File"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#364"
 msgid "- Dolby Digital (AC3) capable receiver"
 msgstr ""
@@ -1746,7 +1746,7 @@ msgctxt "#417"
 msgid "View: Big icons"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#418"
 msgid "Low"
 msgstr ""
@@ -1755,7 +1755,7 @@ msgctxt "#419"
 msgid "High"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#420"
 msgid "HDMI"
 msgstr ""
@@ -1832,7 +1832,7 @@ msgctxt "#438"
 msgid "Opening file"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#439"
 msgid "Cache"
 msgstr ""
@@ -1871,7 +1871,7 @@ msgstr ""
 
 #empty string with id 448
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#449"
 msgid "Enabled"
 msgstr ""
@@ -1989,7 +1989,7 @@ msgctxt "#479"
 msgid "Skin & language"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#480"
 msgid "Appearance"
 msgstr ""
@@ -2020,7 +2020,7 @@ msgctxt "#488"
 msgid "Repeat folder"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#489"
 msgid "Play the next song automatically"
 msgstr ""
@@ -2051,7 +2051,7 @@ msgctxt "#496"
 msgid "Calibration"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#497"
 msgid "Show file extensions"
 msgstr ""
@@ -2104,7 +2104,7 @@ msgctxt "#511"
 msgid "Enable video mode switching"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#512"
 msgid "Startup window"
 msgstr ""
@@ -2239,12 +2239,12 @@ msgctxt "#544"
 msgid "Media info"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#545"
 msgid "Audio output device"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#546"
 msgid "Passthrough output device"
 msgstr ""
@@ -2473,17 +2473,17 @@ msgctxt "#600"
 msgid "Rip audio CD"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#601"
 msgid "Medium"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#602"
 msgid "Standard"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#603"
 msgid "Extreme"
 msgstr ""
@@ -2528,22 +2528,22 @@ msgstr ""
 
 #empty strings from id 614 to 619
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#620"
 msgid "Audio CDs"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#621"
 msgid "Encoder"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#622"
 msgid "Quality"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#623"
 msgid "Bitrate"
 msgstr ""
@@ -2566,12 +2566,12 @@ msgctxt "#629"
 msgid "View mode"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#630"
 msgid "Normal"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#631"
 msgid "Zoom"
 msgstr ""
@@ -2580,12 +2580,12 @@ msgctxt "#632"
 msgid "Stretch 4:3"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#633"
 msgid "Wide Zoom"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#634"
 msgid "Stretch 16:9"
 msgstr ""
@@ -2602,32 +2602,32 @@ msgctxt "#637"
 msgid "Replay gain"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#638"
 msgid "Replaygain volume adjustments"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#639"
 msgid "Use track levels"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#640"
 msgid "Use album levels"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#641"
 msgid "PreAmp Level - Replay gained files"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#642"
 msgid "PreAmp Level - Non replay gained files"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#643"
 msgid "Avoid clipping on replay gained files"
 msgstr ""
@@ -2644,12 +2644,12 @@ msgctxt "#646"
 msgid "Remove from library"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#647"
 msgid "Export video library"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#648"
 msgid "Import video library"
 msgstr ""
@@ -2720,12 +2720,12 @@ msgctxt "#664"
 msgid "Browse for Script"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#665"
 msgid "Compression level"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#666"
 msgid "- Verbose logging..."
 msgstr ""
@@ -2750,14 +2750,14 @@ msgctxt "#705"
 msgid "Network"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#706"
 msgid "- Server"
 msgstr ""
 
 #empty string with id 707
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#708"
 msgid "Use an HTTP proxy server to access the internet"
 msgstr ""
@@ -2778,39 +2778,39 @@ msgstr ""
 
 #empty string with id 714
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#715"
 msgid "- Assignment"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#716"
 msgid "Automatic (DHCP)"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#717"
 msgid "Manual (Static)"
 msgstr ""
 
 #empty string with id 718
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#719"
 msgid "- IP address"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#720"
 msgid "- Netmask"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#721"
 msgid "- Default gateway"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#722"
 msgid "- DNS server"
 msgstr ""
@@ -2841,7 +2841,7 @@ msgstr ""
 
 #empty string with id 729
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#730"
 msgid "- Port"
 msgstr ""
@@ -2852,7 +2852,7 @@ msgctxt "#732"
 msgid "Save & apply"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#733"
 msgid "- Password"
 msgstr ""
@@ -2861,37 +2861,37 @@ msgctxt "#734"
 msgid "No pass"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#735"
 msgid "- Character set"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#736"
 msgid "- Style"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#737"
 msgid "- Colour"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#738"
 msgid "Normal"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#739"
 msgid "Bold"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#740"
 msgid "Italics"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#741"
 msgid "Bold italics"
 msgstr ""
@@ -3004,7 +3004,7 @@ msgstr ""
 
 #empty string with id 771
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#772"
 msgid "Audio output"
 msgstr ""
@@ -3017,47 +3017,47 @@ msgctxt "#774"
 msgid "Slideshow folder"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#775"
 msgid "Network interface"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#776"
 msgid "- Wireless network name (ESSID)"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#777"
 msgid "- Wireless password"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#778"
 msgid "- Wireless security"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#779"
 msgid "Save and apply network interface settings"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#780"
 msgid "No encryption"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#781"
 msgid "WEP"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#782"
 msgid "WPA"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#783"
 msgid "WPA2"
 msgstr ""
@@ -3074,7 +3074,7 @@ msgctxt "#786"
 msgid "Network interface did not start successfully."
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#787"
 msgid "Interface disabled"
 msgstr ""
@@ -3088,37 +3088,37 @@ msgctxt "#789"
 msgid "Wireless network name (ESSID)"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#790"
 msgid "Remote control"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#791"
 msgid "Allow programs on this system to control XBMC"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#792"
 msgid "Port"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#793"
 msgid "Port range"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#794"
 msgid "Allow programs on other systems to control XBMC"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#795"
 msgid "Initial repeat delay (ms)"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#796"
 msgid "Continuous repeat delay (ms)"
 msgstr ""
@@ -3127,7 +3127,7 @@ msgctxt "#797"
 msgid "Maximum number of clients"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#798"
 msgid "Internet access"
 msgstr ""
@@ -3138,7 +3138,7 @@ msgstr ""
 
 #: xbmc/music/windows/GUIWindowMusicBase.cpp
 msgctxt "#800"
-msgid "Music library needs to rescan art from tags"
+msgid "Music library needs to rescan tags from files."
 msgstr ""
 
 #: xbmc/music/windows/GUIWindowMusicBase.cpp
@@ -3177,7 +3177,7 @@ msgctxt "#999"
 msgid "Add Videos..."
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#1000"
 msgid "- Preview"
 msgstr ""
@@ -3401,7 +3401,7 @@ msgctxt "#1047"
 msgid "Other..."
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#1048"
 msgid "- Username"
 msgstr ""
@@ -3421,32 +3421,32 @@ msgstr ""
 
 #empty strings from id 1052 to 1179
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#1180"
 msgid "Proxy type"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#1181"
 msgid "HTTP"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#1182"
 msgid "SOCKS4"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#1183"
 msgid "SOCKS4A"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#1184"
 msgid "SOCKS5"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#1185"
 msgid "SOCKS5 with remote dns resolving"
 msgstr ""
@@ -3463,7 +3463,7 @@ msgstr ""
 
 #empty string with id 1201
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#1202"
 msgid "Workgroup"
 msgstr ""
@@ -3478,7 +3478,7 @@ msgstr ""
 
 #empty strings from id 1205 to 1206
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#1207"
 msgid "WINS server"
 msgstr ""
@@ -3590,34 +3590,34 @@ msgstr ""
 
 #empty strings from id 1236 to 1258
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#1259"
 msgid "Zeroconf"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#1260"
 msgid "Announce these services to other systems via Zeroconf"
 msgstr ""
 
 #empty strings from id 1261 to 1269
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#1270"
 msgid "Allow XBMC to receive AirPlay content"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#1271"
 msgid "Device name"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#1272"
 msgid "- Use password protection"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#1273"
 msgid "AirPlay"
 msgstr ""
@@ -3917,7 +3917,7 @@ msgstr ""
 
 #strings through to 1449 reserved for weather translation
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#1450"
 msgid "Put display to sleep when idle"
 msgstr ""
@@ -4637,12 +4637,12 @@ msgctxt "#12377"
 msgid "This will reset any previously saved values"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#12378"
 msgid "Amount of time to display each image"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#12379"
 msgid "Use pan and zoom effects"
 msgstr ""
@@ -4717,7 +4717,7 @@ msgstr ""
 
 #empty strings from id 12906 to 12999
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13000"
 msgid "System"
 msgstr ""
@@ -4739,29 +4739,29 @@ msgid "- Minimum file duration"
 msgstr ""
 
 #: system/peripherals.xml
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13005"
 msgid "Shutdown"
 msgstr ""
 
 #empty strings from id 13006 to 13007
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13008"
 msgid "Shutdown function"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13009"
 msgid "Quit"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13010"
 msgid "Hibernate"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 #: system/peripherals.xml
 msgctxt "#13011"
 msgid "Suspend"
@@ -4775,7 +4775,7 @@ msgctxt "#13013"
 msgid "Reboot"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13014"
 msgid "Minimize"
 msgstr ""
@@ -4889,29 +4889,29 @@ msgctxt "#13100"
 msgid "Flicker filter"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13101"
 msgid "Let driver choose (requires restart)"
 msgstr ""
 
 #empty strings from id 13102 to 13104
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13105"
 msgid "Vertical blank sync"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13106"
 msgid "Disabled"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13107"
 msgid "Enabled during video playback"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13108"
 msgid "Always enabled"
 msgstr ""
@@ -4968,14 +4968,14 @@ msgctxt "#13121"
 msgid "VDPAU HQ Upscaling level"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13122"
 msgid "VDPAU Studio level color conversion"
 msgstr ""
 
 #empty strings from id 13123 to 13129
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13130"
 msgid "Blank other displays"
 msgstr ""
@@ -5253,7 +5253,7 @@ msgctxt "#13302"
 msgid "Fan speed override"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13303"
 msgid "- Fonts"
 msgstr ""
@@ -5262,17 +5262,17 @@ msgctxt "#13304"
 msgid "Enable flipping bi-directional strings"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13305"
 msgid "Show RSS news feeds"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13306"
 msgid "Show parent folder items"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13307"
 msgid "Track naming template"
 msgstr ""
@@ -5301,7 +5301,7 @@ msgctxt "#13313"
 msgid "Restart"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13314"
 msgid "Crossfade between songs"
 msgstr ""
@@ -5322,7 +5322,7 @@ msgctxt "#13318"
 msgid "Recursive slideshow"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13319"
 msgid "Randomize"
 msgstr ""
@@ -5339,7 +5339,7 @@ msgctxt "#13322"
 msgid "Right only"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13323"
 msgid "Enable karaoke support"
 msgstr ""
@@ -5356,7 +5356,7 @@ msgctxt "#13326"
 msgid "A/V delay"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13327"
 msgid "Karaoke"
 msgstr ""
@@ -5482,7 +5482,7 @@ msgctxt "#13359"
 msgid "Set artist thumb"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13360"
 msgid "Automatically generate thumbnails"
 msgstr ""
@@ -5541,7 +5541,7 @@ msgctxt "#13386"
 msgid "Use time based seeking"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13387"
 msgid "Track naming template - right"
 msgstr ""
@@ -5564,7 +5564,7 @@ msgctxt "#13391"
 msgid "Eject/Load"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13392"
 msgid "Use visualization if playing audio"
 msgstr ""
@@ -5595,12 +5595,12 @@ msgctxt "#13398"
 msgid "Shortcuts"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13399"
 msgid "Ignore articles when sorting (e.g. \"the\")"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13400"
 msgid "Crossfade between songs on the same album"
 msgstr ""
@@ -5620,7 +5620,7 @@ msgctxt "#13403"
 msgid "Clear default"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13404"
 msgid "Resume"
 msgstr ""
@@ -5662,17 +5662,17 @@ msgctxt "#13413"
 msgid "Downloading"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13414"
 msgid "Include artists who appear only on compilations"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13415"
 msgid "Render method"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13416"
 msgid "Auto detect"
 msgstr ""
@@ -5685,7 +5685,7 @@ msgctxt "#13418"
 msgid "Advanced shaders (GLSL)"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13419"
 msgid "Software"
 msgstr ""
@@ -5707,52 +5707,52 @@ msgctxt "#13423"
 msgid "Remember for this path"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13424"
 msgid "Use pixel buffer objects"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13425"
 msgid "Allow hardware acceleration (VDPAU)"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13426"
 msgid "Allow hardware acceleration (VAAPI)"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13427"
 msgid "Allow hardware acceleration (DXVA2)"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13428"
 msgid "Allow hardware acceleration (CrystalHD)"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13429"
 msgid "Allow hardware acceleration (VDADecoder)"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13430"
 msgid "Allow hardware acceleration (OpenMax)"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13431"
 msgid "Pixel Shaders"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13432"
 msgid "Allow hardware acceleration (VideoToolbox)"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13433"
 msgid "Play the next video automatically"
 msgstr ""
@@ -5763,59 +5763,59 @@ msgctxt "#13434"
 msgid "Play only this"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13435"
 msgid "Enable HQ Scalers for scalings above"
 msgstr ""
 
 #empty strings from id 13436 to 13499
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13500"
 msgid "A/V sync method"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13501"
 msgid "Audio clock"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13502"
 msgid "Video clock (Drop/Dupe audio)"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13503"
 msgid "Video clock (Resample audio)"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13504"
 msgid "Maximum resample amount (%)"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13505"
 msgid "Resample quality"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13506"
 msgid "Low(fast)"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13507"
 msgid "Medium"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13508"
 msgid "High"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13509"
 msgid "Really high(slow!)"
 msgstr ""
@@ -5856,7 +5856,7 @@ msgstr ""
 
 #empty strings from id 13517 to 13549
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#13550"
 msgid "Pause during refresh rate change"
 msgstr ""
@@ -5875,41 +5875,41 @@ msgstr ""
 
 #empty strings from id 13554 to 13599
 
-#: xbmc/settings/darwin.xml
+#: system/settings/darwin.xml
 msgctxt "#13600"
 msgid "Apple remote"
 msgstr ""
 
 #empty string with id 13601
 
-#: xbmc/settings/darwin.xml
+#: system/settings/darwin.xml
 msgctxt "#13602"
 msgid "Allow start of XBMC using the remote"
 msgstr ""
 
-#: xbmc/settings/darwin.xml
+#: system/settings/darwin.xml
 msgctxt "#13603"
 msgid "Sequence delay time"
 msgstr ""
 
 #empty strings from id 13604 to 13609
 
-#: xbmc/settings/darwin.xml
+#: system/settings/darwin.xml
 msgctxt "#13610"
 msgid "Disabled"
 msgstr ""
 
-#: xbmc/settings/darwin.xml
+#: system/settings/darwin.xml
 msgctxt "#13611"
 msgid "Standard"
 msgstr ""
 
-#: xbmc/settings/darwin.xml
+#: system/settings/darwin.xml
 msgctxt "#13612"
 msgid "Universal Remote"
 msgstr ""
 
-#: xbmc/settings/darwin.xml
+#: system/settings/darwin.xml
 msgctxt "#13613"
 msgid "Multi Remote (Harmony)"
 msgstr ""
@@ -6010,7 +6010,7 @@ msgctxt "#14021"
 msgid "Change area code 3"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14022"
 msgid "Library"
 msgstr ""
@@ -6023,56 +6023,56 @@ msgctxt "#14024"
 msgid "Enter the nearest large town"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14025"
 msgid "Video/Audio/DVD cache - Harddisk"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14026"
 msgid "Video cache - DVD-ROM"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14027"
 msgid "- Local Network"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14028"
 msgid "- Internet"
 msgstr ""
 
 #empty string with id 14029
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14030"
 msgid "Audio cache - DVD-ROM"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14031"
 msgid "- Local Network"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14032"
 msgid "- Internet"
 msgstr ""
 
 #empty string with id 14033
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14034"
 msgid "DVD cache - DVD-ROM"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14035"
 msgid "- Local Network"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14036"
 msgid "Services"
 msgstr ""
@@ -6091,7 +6091,7 @@ msgctxt "#14040"
 msgid "network setup.  Would you like to restart now?"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14041"
 msgid "Internet connection bandwidth limitation"
 msgstr ""
@@ -6102,37 +6102,37 @@ msgctxt "#14043"
 msgid "- Shutdown while playing"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14044"
 msgid "%i min"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14045"
 msgid "%i sec"
 msgstr ""
 
-#: xbmc/settings/darwin.xml
+#: system/settings/darwin.xml
 msgctxt "#14046"
 msgid "%i ms"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14047"
 msgid "%i %%"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14048"
 msgid "%i kbps"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14049"
 msgid "%i kb"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14050"
 msgid "%i.0 dB"
 msgstr ""
@@ -6167,12 +6167,12 @@ msgctxt "#14058"
 msgid "Film grain effect"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14059"
 msgid "Search for thumbnails on remote shares"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14060"
 msgid "Unknown type cache - Internet"
 msgstr ""
@@ -6217,7 +6217,7 @@ msgctxt "#14070"
 msgid "Apply changes now"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14071"
 msgid "Allow file renaming and deletion"
 msgstr ""
@@ -6244,74 +6244,74 @@ msgctxt "#14077"
 msgid "Remove from favourites"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14078"
 msgid "- Colours"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14079"
 msgid "Timezone country"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14080"
 msgid "Timezone"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14081"
 msgid "File lists"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14082"
 msgid "Show EXIF picture information"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14083"
 msgid "Use a fullscreen window rather than true fullscreen"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14084"
 msgid "Queue songs on selection"
 msgstr ""
 
 #empty string with id 14085
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14086"
 msgid "Playback"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14087"
 msgid "DVDs"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14088"
 msgid "Play DVDs automatically"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14089"
 msgid "Font to use for text subtitles"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14090"
 msgid "International"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14091"
 msgid "Character set"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14092"
 msgid "Debugging"
 msgstr ""
@@ -6324,27 +6324,27 @@ msgctxt "#14094"
 msgid "Input devices"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14095"
 msgid "Power saving"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14096"
 msgid "Rip"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14097"
 msgid "Audio CD Insert Action"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14098"
 msgid "Play"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#14099"
 msgid "Eject disc when CD ripping is complete"
 msgstr ""
@@ -6419,7 +6419,7 @@ msgctxt "#15107"
 msgid "Buffering..."
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#15108"
 msgid "Navigation sounds"
 msgstr ""
@@ -6430,12 +6430,12 @@ msgstr ""
 
 #empty string with id 15110
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#15111"
 msgid "- Theme"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#15112"
 msgid "Default theme"
 msgstr ""
@@ -6513,7 +6513,7 @@ msgstr ""
 
 #empty strings from id 15312 to 15999
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#16000"
 msgid "General"
 msgstr ""
@@ -6579,7 +6579,7 @@ msgctxt "#16017"
 msgid "Enter search string"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#16018"
 msgid "None"
 msgstr ""
@@ -6859,17 +6859,17 @@ msgstr ""
 
 #empty strings from id 17501 to 17996
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#17997"
 msgid "%i MByte"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#17998"
 msgid "%i hours"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#17999"
 msgid "%i days"
 msgstr ""
@@ -6951,7 +6951,7 @@ msgctxt "#19017"
 msgid "TV recordings"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19018"
 msgid "Default folder for PVR thumbnails"
 msgstr ""
@@ -7030,7 +7030,7 @@ msgctxt "#19036"
 msgid "This recording cannot be played. Check the log for details."
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19037"
 msgid "Show signal quality"
 msgstr ""
@@ -7055,7 +7055,7 @@ msgctxt "#19042"
 msgid "Are you sure you want to rename this timer?"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19043"
 msgid "Recording"
 msgstr ""
@@ -7145,7 +7145,7 @@ msgctxt "#19064"
 msgid "Go to end"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19065"
 msgid "Default EPG window"
 msgstr ""
@@ -7160,7 +7160,7 @@ msgctxt "#19068"
 msgid "This recording could not be deleted. Check the log for details."
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19069"
 msgid "EPG"
 msgstr ""
@@ -7171,12 +7171,12 @@ msgctxt "#19071"
 msgid "EPG update interval"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19072"
 msgid "Do not store the EPG in the database"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19073"
 msgid "Delay channel switch"
 msgstr ""
@@ -7334,7 +7334,7 @@ msgctxt "#19116"
 msgid "Disksize"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19117"
 msgid "Search for channels"
 msgstr ""
@@ -7534,7 +7534,7 @@ msgctxt "#19166"
 msgid "PVR information"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19167"
 msgid "Scan for missing icons"
 msgstr ""
@@ -7545,79 +7545,79 @@ msgctxt "#19169"
 msgid "Hide video information box"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19170"
 msgid "Timeout when starting playback"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19171"
 msgid "Start playback minimized"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19172"
 msgid "Instant recording duration"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19173"
 msgid "Default recording priority"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19174"
 msgid "Default recording lifetime"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19175"
 msgid "Margin at the start of a recording"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19176"
 msgid "Margin at the end of a recording"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19177"
 msgid "Playback"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19178"
 msgid "Show channel information when switching channels"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19179"
 msgid "Automatically hide channel information"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19180"
 msgid "TV"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19181"
 msgid "Menu/OSD"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19182"
 msgid "Days to display in the EPG"
 msgstr ""
 
 #empty string with id 19183
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19184"
 msgid "Channel information duration"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19185"
 msgid "Reset the PVR database"
 msgstr ""
@@ -7626,7 +7626,7 @@ msgctxt "#19186"
 msgid "All data in the PVR database is being erased"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19187"
 msgid "Reset the EPG database"
 msgstr ""
@@ -7635,7 +7635,7 @@ msgctxt "#19188"
 msgid "EPG is being reset"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19189"
 msgid "Continue last channel on startup"
 msgstr ""
@@ -7678,7 +7678,7 @@ msgctxt "#19198"
 msgid "Recording finished on: %s"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19199"
 msgid "Channel manager"
 msgstr ""
@@ -7767,7 +7767,7 @@ msgctxt "#19220"
 msgid "Channels in"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19221"
 msgid "Synchronise channel groups with backends"
 msgstr ""
@@ -7804,12 +7804,12 @@ msgctxt "#19229"
 msgid "Close channel OSD after switching channels"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19230"
 msgid "Prevent EPG updates while playing a TV stream"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19231"
 msgid "Always use the channel order from the backend(s)"
 msgstr ""
@@ -7818,12 +7818,12 @@ msgctxt "#19232"
 msgid "Clear search results"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19233"
 msgid "Display a notification on timer updates"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19234"
 msgid "Use backend channels numbers (only works with 1 enabled PVR addon)"
 msgstr ""
@@ -7864,27 +7864,27 @@ msgctxt "#19243"
 msgid "in order to use the PVR functionality."
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19244"
 msgid "Backend idle time"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19245"
 msgid "Set wakeup command (cmd [timestamp])"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19246"
 msgid "Wakeup before recording"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19247"
 msgid "Daily wakeup"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19248"
 msgid "Daily wakeup time (HH:MM:SS)"
 msgstr ""
@@ -7930,17 +7930,17 @@ msgctxt "#19258"
 msgid "Unlock channel"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19259"
 msgid "Parental control"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19260"
 msgid "Unlock duration"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19261"
 msgid "Change PIN"
 msgstr ""
@@ -7970,12 +7970,12 @@ msgctxt "#19267"
 msgid "Parental locked:"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19268"
 msgid "Do not show 'no information available' labels"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19269"
 msgid "Do not show 'connection lost' warnings"
 msgstr ""
@@ -8020,17 +8020,17 @@ msgctxt "#19278"
 msgid "Recording error"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19279"
 msgid "Client specific"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19280"
 msgid "Client specific settings"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#19281"
 msgid "Confirm channel switches by pressing OK"
 msgstr ""
@@ -8506,7 +8506,7 @@ msgstr ""
 
 #empty strings from id 19685 to 19999
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20000"
 msgid "Saved music folder"
 msgstr ""
@@ -8523,14 +8523,14 @@ msgctxt "#20003"
 msgid "Trainers folder"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20004"
 msgid "Screenshot folder"
 msgstr ""
 
 #empty string with id 20005
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20006"
 msgid "Playlists folder"
 msgstr ""
@@ -8615,7 +8615,7 @@ msgctxt "#20025"
 msgid "Scan all"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20026"
 msgid "Region"
 msgstr ""
@@ -8784,7 +8784,7 @@ msgctxt "#20075"
 msgid "Enter master lock code"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20076"
 msgid "Ask for master lock code on startup"
 msgstr ""
@@ -8881,7 +8881,7 @@ msgctxt "#20099"
 msgid "Can't rip CD or track while playing from CD"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20100"
 msgid "Master lock code and settings"
 msgstr ""
@@ -8919,7 +8919,7 @@ msgctxt "#20108"
 msgid "Root"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20109"
 msgid "- Zoom"
 msgstr ""
@@ -9236,7 +9236,7 @@ msgctxt "#20183"
 msgid "Reload skin"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20184"
 msgid "Rotate pictures using EXIF information"
 msgstr ""
@@ -9249,13 +9249,13 @@ msgctxt "#20186"
 msgid "Please wait"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20187"
 msgid "UPnP"
 msgstr ""
 
 #: xbmc/network/upnp/UPnPServer.cpp
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20188"
 msgid "Announce library updates via UPnP"
 msgstr ""
@@ -9268,22 +9268,22 @@ msgctxt "#20190"
 msgid "Custom"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20191"
 msgid "Enable debug logging"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20192"
 msgid "Download additional information during updates"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20193"
 msgid "Default service for album information"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20194"
 msgid "Default service for artist information"
 msgstr ""
@@ -9292,12 +9292,12 @@ msgctxt "#20195"
 msgid "Change scraper"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20196"
 msgid "Export music library"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20197"
 msgid "Import music library"
 msgstr ""
@@ -9674,7 +9674,7 @@ msgctxt "#20368"
 msgid "Prod code"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20369"
 msgid "Show plot for unwatched items"
 msgstr ""
@@ -9728,7 +9728,7 @@ msgctxt "#20381"
 msgid "Specials"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20382"
 msgid "Automatically grab season thumbs"
 msgstr ""
@@ -9820,7 +9820,7 @@ msgctxt "#20401"
 msgid "Play music video"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20402"
 msgid "Download actor thumbnails when adding to library"
 msgstr ""
@@ -9862,7 +9862,7 @@ msgctxt "#20411"
 msgid "Flatten"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20412"
 msgid "Flatten TV shows"
 msgstr ""
@@ -9894,22 +9894,22 @@ msgctxt "#20418"
 msgid "Writers"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20419"
 msgid "Replace file names with library titles"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20420"
 msgid "Never"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20421"
 msgid "If only one season"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20422"
 msgid "Always"
 msgstr ""
@@ -9954,7 +9954,7 @@ msgctxt "#20432"
 msgid "Exclude path from library updates"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20433"
 msgid "Extract thumbnails and video information"
 msgstr ""
@@ -10060,7 +10060,7 @@ msgctxt "#20457"
 msgid "Movie set"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#20458"
 msgid "Group movies in sets"
 msgstr ""
@@ -10117,7 +10117,7 @@ msgstr ""
 #empty strings from id 20470 to 21329
 #up to 21329 is reserved for the video db !! !
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21330"
 msgid "Show hidden files and directories"
 msgstr ""
@@ -10160,7 +10160,7 @@ msgctxt "#21359"
 msgid "Add media share..."
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21360"
 msgid "Share video and music libraries through UPnP"
 msgstr ""
@@ -10179,8 +10179,6 @@ msgctxt "#21363"
 msgid "Episode Bookmark created"
 msgstr ""
 
-
-
 #: xbmc/dialogs/GUIDialogFileBrowser.cpp
 msgctxt "#21364"
 msgid "Edit media share"
@@ -10191,7 +10189,7 @@ msgctxt "#21365"
 msgid "Remove media share"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21366"
 msgid "Subtitle folder"
 msgstr ""
@@ -10200,12 +10198,12 @@ msgctxt "#21367"
 msgid "Movie & alternate subtitle directory"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21368"
 msgid "Override ASS/SSA subtitles fonts"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21369"
 msgid "Enable mouse and Touch Screen support"
 msgstr ""
@@ -10218,12 +10216,12 @@ msgctxt "#21371"
 msgid "Thumbnail"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21372"
 msgid "Forced DVD player region"
 msgstr ""
 
-#: xbmc/settings/darwin.xml
+#: system/settings/darwin.xml
 msgctxt "#21373"
 msgid "Video output"
 msgstr ""
@@ -10260,7 +10258,7 @@ msgctxt "#21381"
 msgid "Enter name of new playlist"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21382"
 msgid "Show \"Add source\" buttons in file lists"
 msgstr ""
@@ -10385,24 +10383,24 @@ msgctxt "#21412"
 msgid "Scrapers"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21413"
 msgid "Default movie scraper"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21414"
 msgid "Default tvshow scraper"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21415"
 msgid "Default music video scraper"
 msgstr ""
 
 #empty string with id 21416
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21417"
 msgid "- Settings"
 msgstr ""
@@ -10537,12 +10535,12 @@ msgctxt "#21448"
 msgid "Subtitle language"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21449"
 msgid "Remote control sends keyboard presses"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21450"
 msgid "- Edit"
 msgstr ""
@@ -10585,32 +10583,32 @@ msgctxt "#21459"
 msgid "mixed"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21460"
 msgid "Subtitle location"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21461"
 msgid "Fixed"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21462"
 msgid "Bottom of video"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21463"
 msgid "Below video"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21464"
 msgid "Top of video"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21465"
 msgid "Above video"
 msgstr ""
@@ -10869,12 +10867,12 @@ msgctxt "#21880"
 msgid "Reference service"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21881"
 msgid "Allow control of XBMC via UPnP"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#21882"
 msgid "Attempt to skip introduction before DVD menu"
 msgstr ""
@@ -10958,17 +10956,17 @@ msgstr ""
 #empty strings from id 21901 to 21999
 #strings 21900 thru 21999 reserved for slideshow info
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#22000"
 msgid "Update library on startup"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#22001"
 msgid "Hide progress of library updates"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#22002"
 msgid "- DNS suffix"
 msgstr ""
@@ -11022,7 +11020,7 @@ msgctxt "#22013"
 msgid "Profile data"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#22014"
 msgid "Use dim if paused during video playback"
 msgstr ""
@@ -11051,12 +11049,12 @@ msgctxt "#22020"
 msgid "Guide"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#22021"
 msgid "Allowed error in aspect ratio to minimize black bars"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#22022"
 msgid "Show video files in listings"
 msgstr ""
@@ -11074,22 +11072,22 @@ msgstr ""
 #empty strings from id 22025 to 22029
 #strings 22030 thru 22060 reserved for karaoke
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#22030"
 msgid "Font"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#22031"
 msgid "- Size"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#22032"
 msgid "- Colours"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#22033"
 msgid "- Charset"
 msgstr ""
@@ -11102,17 +11100,17 @@ msgctxt "#22035"
 msgid "Export karaoke titles as CSV"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#22036"
 msgid "Import karaoke titles..."
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#22037"
 msgid "Show song selector automatically"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#22038"
 msgid "Export karaoke titles..."
 msgstr ""
@@ -11121,7 +11119,7 @@ msgctxt "#22039"
 msgid "Enter song number"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#22040"
 msgid "white/green"
 msgstr ""
@@ -11140,17 +11138,17 @@ msgstr ""
 
 #empty strings from id 22044 to 22078
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#22079"
 msgid "Default select action"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#22080"
 msgid "Choose"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#22081"
 msgid "Show Information"
 msgstr ""
@@ -11169,7 +11167,7 @@ msgctxt "#23049"
 msgid "Teletext not available"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#23050"
 msgid "Activate Teletext"
 msgstr ""
@@ -11190,7 +11188,7 @@ msgctxt "#23054"
 msgid "Running"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#23055"
 msgid "Scale Teletext to 4:3"
 msgstr ""
@@ -11335,7 +11333,7 @@ msgctxt "#24028"
 msgid "Weather.com (standard)"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#24029"
 msgid "Service for weather information"
 msgstr ""
@@ -12001,7 +11999,7 @@ msgid "Failed to start"
 msgstr ""
 
 #: xbmc/network/network.cpp
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#33101"
 msgid "Webserver"
 msgstr ""
@@ -12026,17 +12024,17 @@ msgstr ""
 #empty strings from id 33201 to 33999
 #translators: no need to add these to your language files
 
-#: xbmc\settings\guisettings.cpp
+#: system/settings/settings.xml
 msgctxt "#34000"
 msgid "Lame"
 msgstr ""
 
-#: xbmc\settings\guisettings.cpp
+#: system/settings/settings.xml
 msgctxt "#34001"
 msgid "Vorbis"
 msgstr ""
 
-#: xbmc\settings\guisettings.cpp
+#: system/settings/settings.xml
 msgctxt "#34002"
 msgid "Wav"
 msgstr ""
@@ -12051,64 +12049,64 @@ msgctxt "#34004"
 msgid "VAAPI"
 msgstr ""
 
-#: xbmc\settings\guisettings.cpp
+#: system/settings/settings.xml
 msgctxt "#34005"
 msgid "Flac"
 msgstr ""
 
 #empty strings from id 34006 to 34099
 
-#: xbmc\settings\guisettings.cpp
+#: system/settings/settings.xml
 msgctxt "#34100"
 msgid "Speaker Configuration"
 msgstr ""
 
-#: xbmc\settings\guisettings.cpp
+#: system/settings/settings.xml
 msgctxt "#34101"
 msgid "2.0"
 msgstr ""
 
-#: xbmc\settings\guisettings.cpp
+#: system/settings/settings.xml
 msgctxt "#34102"
 msgid "2.1"
 msgstr ""
 
-#: xbmc\settings\guisettings.cpp
+#: system/settings/settings.xml
 msgctxt "#34103"
 msgid "3.0"
 msgstr ""
 
-#: xbmc\settings\guisettings.cpp
+#: system/settings/settings.xml
 msgctxt "#34104"
 msgid "3.1"
 msgstr ""
 
-#: xbmc\settings\guisettings.cpp
+#: system/settings/settings.xml
 msgctxt "#34105"
 msgid "4.0"
 msgstr ""
 
-#: xbmc\settings\guisettings.cpp
+#: system/settings/settings.xml
 msgctxt "#34106"
 msgid "4.1"
 msgstr ""
 
-#: xbmc\settings\guisettings.cpp
+#: system/settings/settings.xml
 msgctxt "#34107"
 msgid "5.0"
 msgstr ""
 
-#: xbmc\settings\guisettings.cpp
+#: system/settings/settings.xml
 msgctxt "#34108"
 msgid "5.1"
 msgstr ""
 
-#: xbmc\settings\guisettings.cpp
+#: system/settings/settings.xml
 msgctxt "#34109"
 msgid "7.0"
 msgstr ""
 
-#: xbmc\settings\guisettings.cpp
+#: system/settings/settings.xml
 msgctxt "#34110"
 msgid "7.1"
 msgstr ""
@@ -12116,25 +12114,25 @@ msgstr ""
 #empty strings from id 34111 to 34119
 #34111-34119 reserved for future use
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#34120"
 msgid "Play GUI sounds"
 msgstr ""
 
 #. play GUI sounds
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#34121"
 msgid "Only when playback stopped"
 msgstr ""
 
 #. play GUI sounds
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#34122"
 msgid "Always"
 msgstr ""
 
 #. play GUI sounds
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#34123"
 msgid "Never"
 msgstr ""
@@ -12228,7 +12226,7 @@ msgstr ""
 #empty strings from id 34409 to 34999
 
 #: addons/skin.confluence/720p/DialogPeripheralManager.xml
-#: xbmc/settings/GUIDialogSettings.cpp
+#: system/settings/settings.xml
 msgctxt "#35000"
 msgid "Peripherals"
 msgstr ""
@@ -12281,7 +12279,7 @@ msgstr ""
 
 #empty strings from id 35010 to 35099
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#35100"
 msgid "Enable joystick and gamepad support"
 msgstr ""
@@ -12488,13 +12486,13 @@ msgstr ""
 #empty string with id 36034
 
 #. adjust refreshrate
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#36035"
 msgid "Always"
 msgstr ""
 
 #. adjust refreshrate
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#36036"
 msgid "On start/stop"
 msgstr ""
@@ -12528,11 +12526,1605 @@ msgctxt "#36041"
 msgid "* Item folder"
 msgstr ""
 
-#: xbmc/settings/settings.xml
+#: system/settings/settings.xml
 msgctxt "#36042"
 msgid "Use limited color range (16-235)"
 msgstr ""
 
+#empty strings from id 36043 to 36099
+
+#strings from 36100 to 36999 are reserved for settings descriptions
+
+#: system/settings/settings.xml
+msgctxt "#36101"
+msgid "Change the look and feel of the User Interface."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36102"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36103"
+msgid "Select the skin for the User Interface. This will define the look and feel of XBMC."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36104"
+msgid "Change specific skin settings. The available options are dependent on the skin used."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36105"
+msgid "Change the theme associated with your selected skin."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36106"
+msgid "Change the colours of your selected skin."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36107"
+msgid "Choose the fonts displayed in the User Interface. The font sets are configured by your skin."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36108"
+msgid "Resize the view of the GUI."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36109"
+msgid "Select the media window that XBMC displays on startup."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36110"
+msgid "Select or disable the sound scheme used in the User Interface."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36111"
+msgid "Turn this off to remove the scrolling RSS news ticker."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36112"
+msgid "Edit the RSS feeds."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36113"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36114"
+msgid "Chooses the language of the User Interface."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36115"
+msgid "Select the formats for temperature, time and date. The available options depend on the selected language."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36116"
+msgid "Choose which character set is used for displaying text in the GUI."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36117"
+msgid "Select country location."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36118"
+msgid "Select your current timezone."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36119"
+msgid "Select the default audio track when different language tracks are available."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36120"
+msgid "Select the default subtitles when different languages are available."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36121"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36122"
+msgid "Display the (..) item in lists for visiting the parent folder."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36123"
+msgid "Show file extensions on media files. For example, 'You Enjoy Myself.mp3' would be simply be shown as 'You Enjoy Myself'."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36124"
+msgid "Ignore certain tokens during sort operations. For example, 'The Simpsons' would simply be sorted as 'Simpsons'. To configure tokens, see http://wiki.xbmc.org/index.php?title=Settings/Appearance.
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36125"
+msgid "Allow files to be deleted and renamed through the user interface, via the contextual menu (press C on a keyboard, for example, to bring up this menu)."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36126"
+msgid "Show the add source button from root sections of the user interface."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36127"
+msgid "Show hidden files and directories."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36128"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36129"
+msgid "Set the amount of idle time required before displaying the screensaver."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36130"
+msgid "Select the screensaver. XBMC will force the 'Dim' screensaver when fullscreen video playback is paused or a dialog box is active."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36131"
+msgid "Change specific screensaver settings. The available options are dependent on the screensaver used."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36132"
+msgid "Preview the selected screensaver."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36133"
+msgid "If music is being played, XBMC will start the selected visualization instead of displaying the screensaver."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36134"
+msgid "Dim the display when media is paused. Not valid for the 'Dim' screensaver mode."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36135"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36136"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36137"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36138"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36139"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36140"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36141"
+msgid ""Show plot information for unwatched media in the Video Library.
+msgstr ""
+
+
+#: system/settings/settings.xml
+msgctxt "#36142"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36143"
+msgid "Get thumbnails for actors when scanning media."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36144"
+msgid "Remove the TV show season node, toggles between 'If only one season' (default), 'Always' and 'Never'."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36145"
+msgid "Group movies into 'Movie sets' when browsing the movie library."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36146"
+msgid "Check for new media files on XBMC startup."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36147"
+msgid "Hide the library scanning progress bar during scans."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36148"
+msgid "Remove items from your library that can't be found (either renamed, deleted, or on removable storage that is currently unplugged)."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36149"
+msgid "Export the Video Library database to XML files. This will optionally overwrite your current XML files."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36150"
+msgid "Import a XML file into the Video Library database."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36151"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36152"
+msgid "Enable automatic playback of the next file in the list of the selected item."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36153"
+msgid "Adjust the method used to process and display video."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36154"
+msgid ""
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36155"
+msgid "Enable hardware decoding of video files."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36156"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36157"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36158"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36159"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36160"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36161"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36162"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36163"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36164"
+msgid "Select when the refresh rate adjustments should take place."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36165"
+msgid "Pause for a small amount of time during a refresh rate change. Activate to automatically set the refresh rate which is best matched with the video that is playing. This potentially allows for perfectly smooth video reproduction, as video material can be recorded in a variety of frame rates which need to be properly matched by the refresh rate of the display in order to be displayed smoothly."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36166"
+msgid "Synchronize the video to the refresh rate of the monitor."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36167"
+msgid "Audio has to stay in sync, this can either be done by resampling, skipping/duplicating packets, or adjusting the clock if it gets out of sync too far."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36168"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36169"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36170"
+msgid "Allow video player to ignoring aspect ratio by a certain amount to fill a larger amount of the screen with video."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36171"
+msgid "Select the zoom level that 4:3 videos are shown on widescreen displays."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36172"
+msgid "VDPAU studio level conversion provides a way for advanced applications like XBMC to influence the colorspace conversion."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36173"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36174"
+msgid "Enable Teletext when watching a live TV stream."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36175"
+msgid "Scale Teletext to 4:3 ratio."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36176"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36177"
+msgid "Toggle between Choose, Play (default), Resume and Show Information. Choose will an select item, e.g. open a directory in files mode. Resume will automatically resume videos from the last position that you were viewing them, even after restarting the system."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36178"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36179"
+msgid "When a file is scanned into the library it will display the metadata title instead of the file name."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36180"
+msgid "Extract thumbnails and information, such as codecs and aspect ratio, to display in Library Mode."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36181"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36182"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36183"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36184"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36185"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36186"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36187"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36188"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36189"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36190"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36191"
+msgid "Set a custom directory for your subtitles. This can be a file share."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36192"
+msgid "Location of subtitles on the screen."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36193"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36194"
+msgid "Autorun DVD video when inserted in drive."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36195"
+msgid "Force a region for DVD playback."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36196"
+msgid "Attempt to skip 'unskippable' introductions before DVD menu."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36197"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36198"
+msgid "Select the default movie information source. See the Add-ons Manager for options."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36199"
+msgid "Select the default TV show information source. See the Add-ons Manager for options."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36200"
+msgid "Default scraper used for adding music videos to your library."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36201"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36202"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36203"
+msgid "Enable the Personal Video Recorder (PVR) features in XBMC. This requires that at least one PVR add-on is installed."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36204"
+msgid "Import channel groups from the PVR backend (if supported). Will delete user created groups if they're not found on the backend."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36205"
+msgid "Sort the channels by channel number on the server, but uses XBMC's own numbering for channels."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36206"
+msgid "Use numbering from the backend, instead of configuring them manually over XBMC."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36207"
+msgid "Open the channel manager, which allows modifying the channel order, channel name, icon, etc."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36208"
+msgid "Instruct the backend to search for channels (if supported)."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36209"
+msgid "Delete channel/EPG database and reimport the data from the backend afterwards."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36210"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36211"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36212"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36213"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36214"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36215"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36216"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36217"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36218"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36219"
+msgid "Default EPG window to show. Defaults to Timeline."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36220"
+msgid "Number of days of EPG data to import from backends. Defaults to 2 days."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36221"
+msgid "Time between EPG data imports from backends. Defaults to 120 minutes."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36222"
+msgid "Do not import EPG data while playing TV to minimise CPU usage."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36223"
+msgid "By default, EPG data is stored in a local database to speed up importing when XBMC is restarted."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36224"
+msgid "Hide "no information available" labels when no EPG data can be retrieved for a channel."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36225"
+msgid "Delete the EPG database in xbmc and reimport the data afterwards from the backend."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36226"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36227"
+msgid "Display stream of selected channel in a small box instead of fullscreen."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36228"
+msgid "Show the last viewed channel if switching to live tv."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36229"
+msgid "Display signal quality information in the codec information window (if supported by the add-on and backend)."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36230"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36231"
+msgid "Pressing a number button in full screen mode will automatically switch to the channel number that was entered after 1 second."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36232"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36233"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36234"
+msgid "Duration of the recording when pressing the record button, or when creating a new manual timer. Defaults to 180 minutes."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36235"
+msgid "Priority of the recording. Higher number means higher priority. Defaults to 50. Not supported by all add-ons and backends."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36236"
+msgid "Delete recording after this time. Defaults to 99 days. Not supported by all add-ons and backends."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36237"
+msgid "Start recordings before the actual time. Defaults to 2 minutes. Not supported by all add-ons and backends."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36238"
+msgid "End recordings after the actual time. Defaults to 10 minutes. Not supported by all add-ons and backends."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36239"
+msgid "Display a notification when timers are added, finished or removed by the backend."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36240"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36241"
+msgid "Execute the "wakeup command" below when XBMC exits or is going into hibernation mode. The timestamp of the next scheduled recording is passed as parameter."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36242"
+msgid "The command will not be executed when a recording will be started within this timeout. Defaults to 15 minutes."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36243"
+msgid "The command to execute. Defaults to '/usr/bin/setwakeup.sh'."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36244"
+msgid "Time to substract from the start time of the next scheduled recording. Defaults to 15 minutes."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36245"
+msgid "Execute the wakeup command every day at the given time."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36246"
+msgid "When to execute the daily wakeup command."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36247"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36248"
+msgid "Asks for a pin code to access parental locked channels. Channels can be marked as locked in the channels editor on the general tab. Parental locked channels can not be played or recorded without entering a pin code, and the EPG information is hidden for those channels."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36249"
+msgid "Enter a new pin code to unlock parental locked channels."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36250"
+msgid "Ask for the pin code again when trying to access a parental locked channel and the code hasn't been asked for this duration. Defaults to 300 seconds."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36251"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36252"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36253"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36254"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36255"
+msgid "Determine if artists that appear only on compilations are shown in the library artist view."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36256"
+msgid "Automatically fetch album and artist information via scrapers during scan."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36257"
+msgid "Select the default album information source"
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36258"
+msgid "Select the default artist information source. See the Add-ons Manager for options."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36259"
+msgid "Check for new and removed media files on XBMC startup."
+msgstr ""
+
+#empty strings from id 36260 to 36261
+
+#: system/settings/settings.xml
+msgctxt "#36262"
+msgid "Export the Music Library database to XML files. This will optionally overwrite your current XML files."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36263"
+msgid "Import a XML file into the Music Library database."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36264"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36265"
+msgid "XBMC automatically plays the next item in the current folder. For example, in Files View: After a track has been played, XBMC would automatically play the next track in the same folder."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36266"
+msgid "When songs are added to a playlist they are queued instead of playback starting immediately."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36267"
+msgid "XBMC will read the Replay Gain information encoded in your audio files by a program such as MP3Gain and normalize the sound levels accordingly."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36268"
+msgid "Default is 89dB per standard. Change with caution."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36269"
+msgid "Default is 89dB per standard. Change with caution."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36270"
+msgid "Reduce the volume of the file if clipping is likely to occur."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36271"
+msgid "Smoothly fade from one audio track to the next. You can set the amount of overlap from 1-15 seconds."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36272"
+msgid "Allow crassfading to occur when both tracks are from the same album."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36273"
+msgid "Select the visualization that will be displayed while listening to music."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36274"
+msgid "Read the tag information from song files. For large directories this can slow down read time, especially over a network."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36275"
+msgid "Control the way that the names of songs are displayed in the User Interface. In order to function properly, ID3 tags need to be enabled."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36276"
+msgid "Used for the information on the right-hand side of the UI. It is commonly used to display the length of tracks."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36277"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36278"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36279"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36280"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36281"
+msgid "XBMC will search for thumbs on remote shares and optical media. This can often slow down the listing of network folders."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36282"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36283"
+msgid "Autorun CDs when inserted in drive."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36284"
+msgid "Read the information belonging to an audio CD from an internet database."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36285"
+msgid "Select the location on your hard drive where ripped tracks will be saved to."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36286"
+msgid "Tags: [B]%N[/B]: TrackNumber, [B]%S[/B]: DiscNumber, [B]%A[/B]: Artist, [B]%T[/B]: Title, [B]%B[/B]: Album, [B]%G[/B]: Genre, [B]%Y[/B]: Year, [B]%F[/B]: FileName, [B]%D[/B]: Duration, [B]%J[/B]: Date, [B]%R[/B]: Rating, [B]%I[/B]: FileSize."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36287"
+msgid "Select which audio encoder to use when ripping."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36288"
+msgid "Select which quality you want to rip your files."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36289"
+msgid "Select which bitrate to use for the specified audio encoder for audio compression."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36290"
+msgid "For FLAC define compression level, default 5"
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36291"
+msgid "Auto eject disc after rip is complete."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36292"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36293"
+msgid "When playing any music file, XBMC will look for a matching .cdg file and display its graphics."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36294"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36295"
+msgid "Select the font used during karoake."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36296"
+msgid "Select the size of the font used during karoake."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36297"
+msgid "Select the font color used during karoake."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36298"
+msgid "Select the character set used during karoake."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36299"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36300"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36301"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36302"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36303"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36304"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36305"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36306"
+msgid "If EXIF information exists (date, time, camera used, etc.), it will be displayed."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36307"
+msgid "Automatically generate picture thumbnails when entering picture folder."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36308"
+msgid "Pictures will automatically rotate according to information in the EXIF tag, if found."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36309"
+msgid "Show video media in picture file lists, since most digital cameras nowadays have video recording capabilities."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36310"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36311"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36312"
+msgid "Select the amount of time that each image is displayed in a slideshow."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36313"
+msgid "Images in a slideshow will pan and zoom while displayed."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36314"
+msgid "View slideshow images in a random order."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36315"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36316"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36317"
+msgid "Select up to three locations for which the weather can be displayed."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36318"
+msgid "Specify the default weather information source. See the Add-ons Manager for options."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36319"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36320"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36321"
+msgid "Display name of the XBMC installation when using various network services."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36322"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36323"
+msgid "Enable the UPnP server. This will allow you to stream media to any UPnP client."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36324"
+msgid "When a manual or automatical library update occurs, notify UPnP clients."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36325"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36326"
+msgid "Enable the UPnP client. This will allow you to stream media from any UPnP server with a control point and control playback from that server."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36327"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36328"
+msgid "Enable remote users to control XBMC through the built-in webserver."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36329"
+msgid "Define the webserver port."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36330"
+msgid "Define the webserver username."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36331"
+msgid "Define webserver password."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36332"
+msgid "Select between web interfaces installed via the Add-on Manager."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36333"
+msgid ""
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36334"
+msgid "Allow programs on this computer to control XBMC via the Web Interface or the JSON-RPC interface protocol."
+msgstr "
+
+#: system/settings/settings.xml
+msgctxt "#36335"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36336"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36337"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36338"
+msgid "Allow programs on the network to control XBMC."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36339"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36340"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36341"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36342"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36343"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36344"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36345"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36346"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36347"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36348"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36349"
+msgid "No info available yet."
+msgstr ""
+
+#empty string id 36350
+
+#: system/settings/settings.xml
+msgctxt "#36351"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36352"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36353"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36354"
+msgid "The main benefit is for multi-screen configurations, so XBMC can be used without automatically minimizing other applications. Uses a bit more resources and playback may be slightly less smooth."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36355"
+msgid "In a multi-screen configuration, the screens where XBMC is not displayed are blacked out."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36356"
+msgid "Eliminate vertical tearing."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36357"
+msgid "Calibrate the User Interface by adjusting the overscan. Use this tool if the image being displayed is too large or small for your display."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36358"
+msgid "Test patterns for display hardware calibration."
+msgstr "Limits the used color range."
+
+#: system/settings/settings.xml
+msgctxt "#36359"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36360"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36361"
+msgid "Type of connection to the audio equipment."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36362"
+msgid "Select your physical speaker layout."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36363"
+msgid "Boost AC3 streams that have been downmixed to 2 channels."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36364"
+msgid "Upmix 2 channel stereo sources so the number of audio channels matches the number of speakers."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36365"
+msgid "Select this option if your receiver is capable of decoding AC3 streams."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36366"
+msgid "Select this option if your receiver is capable of decoding DTS streams."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36367"
+msgid "Select this option if your receiver is capable of decoding AAC streams."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36368"
+msgid "Select this option if your receiver is capable of decoding LPCM streams."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36369"
+msgid "Select this option if your receiver is capable of decoding TrueHD streams."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36370"
+msgid "Select this option if your receiver is capable of decoding DTS-HD streams."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36371"
+msgid "Select the device you use to play audio decoded by XBMC such as mp3's and FLAC."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36372"
+msgid "Select the device you use to play encoded formats, these are any of the formats checked above in the 'capable receiver' options."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36373"
+msgid "Configure how interface sounds are handled, such as menu navigation and important notifications."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36374"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36375"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36376"
+msgid "When activated, your keyboard arrows will move the selection on the virtual keyboard. When deactivated, they will move the cursor from your text."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36377"
+msgid "Use a mouse or touch screen device to control XBMC. Note: disabling will cause you to lose control over XBMC when no keyboard or remote is present."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36378"
+msgid "Use a joystick to control XBMC."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36379"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36380"
+msgid "If your internet connection uses a proxy, configure it here."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36381"
+msgid "Configure which proxy type is used."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36382"
+msgid "Configure the proxy server address."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36383"
+msgid "Configure the proxy server port."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36384"
+msgid "Configure the proxy server username."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36385"
+msgid "Configure the proxy server password."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36386"
+msgid "If you have limited bandwidth available, XBMC will try to keep within these limits."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36387"
+msgid "Turn off display when idle. Useful for TVs that turn off when there is no display signal detected, but you don't want to suspend/shutdown the whole computer."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36388"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36389"
+msgid "Define how long XBMC should idle before shutting down."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36390"
+msgid "Define what action XBMC should do when it has been idle for a long period of time."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36391"
+msgid "Turn debug logging on or off. Useful for troubleshooting."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36392"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36393"
+msgid "Folder used to save screenshots taken within XBMC."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36394"
+msgid "Specify additional libraries to be included in the debug log."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36395"
+msgid "Open the Master Lock dialog, where you can configure your Master Lock options."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36396"
+msgid "Define the PIN code used for the master lock."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36397"
+msgid "If enabled, the master lock code is required to unlock XBMC on startup "
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36398"
+msgid "Define the maximum number of retries before XBMC is closed down."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36399"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36400"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36401"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36402"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36403"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36404"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36405"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36406"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36407"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36408"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36409"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36410"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36411"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36412"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36413"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36414"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36415"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36416"
+msgid "Define the Apple remote standard used."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36417"
+msgid "No info available yet."
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#36418"
+msgid "No info available yet."
+msgstr ""
+
+#empty string 36419
+
+#: system/settings/settings.xml
+msgctxt "#36420"
+msgid "No info available yet."
+msgstr ""
+
+#empty strings from id 36421 to 36999
+#end reservation
+
 #: xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp
 msgctxt "#37000"
 msgid "(Visually Impaired)"
index 76a276c..dd9a4a7 100644 (file)
@@ -13,7 +13,7 @@
 
   <regions>
     <region name="Sweden" locale="SE">
-      <dateshort>D.M.YYYY</dateshort>
+      <dateshort>YYYY-MM-DD</dateshort>
       <datelong>'den 'D MMMM YYYY</datelong>
       <time symbolAM="" symbolPM="">HH:mm:ss</time>
       <tempunit>C</tempunit>
index a220a9d..3e203d6 100644 (file)
@@ -46,8 +46,10 @@ int ff_vaapi_render_picture(struct vaapi_context *vactx, VASurfaceID surface)
     VABufferID va_buffers[3];
     unsigned int n_va_buffers = 0;
 
+    if (vactx->pic_param_buf_id) {
     vaUnmapBuffer(vactx->display, vactx->pic_param_buf_id);
     va_buffers[n_va_buffers++] = vactx->pic_param_buf_id;
+    }
 
     if (vactx->iq_matrix_buf_id) {
         vaUnmapBuffer(vactx->display, vactx->iq_matrix_buf_id);
diff --git a/lib/ffmpeg/patches/0038-vaapi-don-t-unmap-non-existing-buffer.patch b/lib/ffmpeg/patches/0038-vaapi-don-t-unmap-non-existing-buffer.patch
new file mode 100644 (file)
index 0000000..0724a86
--- /dev/null
@@ -0,0 +1,30 @@
+From 28f92dfbd59197955f95a583a61a24428048f166 Mon Sep 17 00:00:00 2001
+From: Joakim Plate <elupus@ecce.se>
+Date: Wed, 22 May 2013 22:24:07 +0200
+Subject: [PATCH 1/2] vaapi: don't unmap non-existing buffer
+
+Some h264's can end up calling ff_vaapi_render_picture after a seek
+with no buffer allocated and vaUnmapBuffer will assert on a invalid
+buffer.
+---
+ libavcodec/vaapi.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/libavcodec/vaapi.c b/libavcodec/vaapi.c
+index a220a9d..b991cde 100644
+--- a/libavcodec/vaapi.c
++++ b/libavcodec/vaapi.c
+@@ -46,8 +46,10 @@ int ff_vaapi_render_picture(struct vaapi_context *vactx, VASurfaceID surface)
+     VABufferID va_buffers[3];
+     unsigned int n_va_buffers = 0;
++    if (vactx->pic_param_buf_id) {
+     vaUnmapBuffer(vactx->display, vactx->pic_param_buf_id);
+     va_buffers[n_va_buffers++] = vactx->pic_param_buf_id;
++    }
+     if (vactx->iq_matrix_buf_id) {
+         vaUnmapBuffer(vactx->display, vactx->iq_matrix_buf_id);
+-- 
+1.8.2
+
index 5d7e9d9..0f0919c 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <settings>
   <section id="system">
-    <category id="videoscreen" label="21373" help="">
+    <category id="videoscreen" label="21373" help="36350">
       <group id="1">
         <setting id="videoscreen.resolution" label="131" />
       </group>
@@ -21,7 +21,7 @@
     </category>
     <category id="input">
       <group id="1">
-        <setting id="input.appleremotemode" type="integer" label="13600" help="">
+        <setting id="input.appleremotemode" type="integer" label="13600" help="36416">
           <level>1</level>
           <default>1</default> <!-- APPLE_REMOTE_STANDARD -->
           <constraints>
           </constraints>
           <control type="spinner" format="string"/>
         </setting>
-        <setting id="input.appleremotealwayson" type="boolean" label="13602" help="">
+        <setting id="input.appleremotealwayson" type="boolean" label="13602" help="36417">
           <level>4</level>
           <default>false</default>
-          <control>
-            <dependencies>
-              <dependency type="enable" setting="input.appleremotemode" operator="!is">0</dependency> <!-- APPLE_REMOTE_DISABLED -->
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="input.appleremotemode" operator="!is">0</dependency> <!-- APPLE_REMOTE_DISABLED -->
+          </dependencies>
         </setting>
-        <setting id="input.appleremotesequencetime" type="integer" label="13603" help="">
+        <setting id="input.appleremotesequencetime" type="integer" label="13603" help="36418">
           <level>1</level>
           <default>500</default>
           <constraints>
             <minimum label="351">50</minimum>
             <step>50</step>
             <maximum>1000</maximum>
-            <formatlabel>14046</formatlabel>
-            <dependencies>
-              <dependency type="enable" id="input.appleremotemode">2</dependency> <!-- APPLE_REMOTE_UNIVERSAL -->
-            </dependencies>
           </constraints>
-          <control type="spinner" format="string"/>
+          <dependencies>
+            <dependency type="enable" id="input.appleremotemode">2</dependency> <!-- APPLE_REMOTE_UNIVERSAL -->
+          </dependencies>
+          <control type="spinner" format="string">
+            <formatlabel>14046</formatlabel>
+          </control>
         </setting>
       </group>
     </category>
index e322fd9..c6a1210 100644 (file)
@@ -16,7 +16,7 @@
     </category>
   </section>
   <section id="music">
-    <category id="audiocds" label="620" help="">
+    <category id="audiocds" label="620" help="36282">
       <visible>false</visible>
     </category>
   </section>
index 6b01612..043c0ad 100644 (file)
@@ -1,22 +1,22 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <settings>
-  <section id="appearance" label="480" help="">
-    <category id="lookandfeel" label="166" help="">
+  <section id="appearance" label="480" help="36101">
+    <category id="lookandfeel" label="166" help="36102">
       <group id="1">
-        <setting id="lookandfeel.skin" type="addon" label="166" help="">
+        <setting id="lookandfeel.skin" type="addon" label="166" help="36103">
           <level>0</level>
           <default>skin.confluence</default>
-          <addontype>xbmc.gui.skin</addontype>
+          <constraints>
+            <addontype>xbmc.gui.skin</addontype>
+          </constraints>
         </setting>
-        <setting id="lookandfeel.skinsettings" type="action" label="21417" help="">
+        <setting id="lookandfeel.skinsettings" type="action" label="21417" help="36104">
           <level>0</level>
-          <control type="button" format="action">
-            <dependencies>
-              <dependency type="enable" on="property" name="AddonHasSettings" setting="lookandfeel.skin" />
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" on="property" name="AddonHasSettings" setting="lookandfeel.skin" />
+          </dependencies>
         </setting>
-        <setting id="lookandfeel.skintheme" type="string" label="15111" help="">
+        <setting id="lookandfeel.skintheme" type="string" label="15111" help="36105">
           <level>1</level>
           <default>SKINDEFAULT</default>
           <constraints>
@@ -24,7 +24,7 @@
           </constraints>
           <control type="spinner" format="string" delayed="true" />
         </setting>
-        <setting id="lookandfeel.skincolors" type="string" label="14078" help="">
+        <setting id="lookandfeel.skincolors" type="string" label="14078" help="36106">
           <level>1</level>
           <default>SKINDEFAULT</default>
           <constraints>
@@ -32,7 +32,7 @@
           </constraints>
           <control type="spinner" format="string" delayed="true" />
         </setting>
-        <setting id="lookandfeel.font" type="string" label="13303" help="">
+        <setting id="lookandfeel.font" type="string" label="13303" help="36107">
           <level>1</level>
           <default>Default</default>
           <constraints>
           </constraints>
           <control type="spinner" format="string" delayed="true" />
         </setting>
-        <setting id="lookandfeel.skinzoom" type="integer" label="20109" help="">
+        <setting id="lookandfeel.skinzoom" type="integer" label="20109" help="36108">
           <level>2</level>
           <default>0</default>
           <constraints>
             <minimum>-20</minimum>
             <step>2</step>
             <maximum>20</maximum>
-            <formatlabel>14047</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14047</formatlabel>
+          </control>
         </setting>
-        <setting id="lookandfeel.startupwindow" type="integer" label="512" help="">
+        <setting id="lookandfeel.startupwindow" type="integer" label="512" help="36109">
           <level>0</level>
           <default>10000</default> <!-- WINDOW_HOME -->
           <constraints>
@@ -59,7 +60,7 @@
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="lookandfeel.soundskin" type="string" label="15108" help="">
+        <setting id="lookandfeel.soundskin" type="string" label="15108" help="36110">
           <level>0</level>
           <default>SKINDEFAULT</default>
           <constraints>
         </setting>
       </group>
       <group id="2">
-        <setting id="lookandfeel.enablerssfeeds" type="boolean" label="13305" help="">
+        <setting id="lookandfeel.enablerssfeeds" type="boolean" label="13305" help="36111">
           <level>1</level>
           <default>true</default>
         </setting>
-        <setting id="lookandfeel.rssedit" type="string" label="21450" help="">
+        <setting id="lookandfeel.rssedit" type="string" label="21450" help="36112">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
-          <control type="button" format="action">
-            <dependencies>
-              <dependency type="enable" setting="lookandfeel.enablerssfeeds">true</dependency>
-            </dependencies>
-          </control>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
+          <dependencies>
+            <dependency type="enable" setting="lookandfeel.enablerssfeeds">true</dependency>
+          </dependencies>
+          <control type="button" format="action" />
         </setting>
       </group>
     </category>
-    <category id="locale" label="14090" help="">
+    <category id="locale" label="14090" help="36113">
       <group id="1">
-        <setting id="locale.language" type="string" label="248" help="">
+        <setting id="locale.language" type="string" label="248" help="36114">
           <level>0</level>
           <default>English</default>
           <constraints>
           </constraints>
           <control type="spinner" format="string" delayed="true" />
         </setting>
-        <setting id="locale.country" type="string" label="20026" help="">
+        <setting id="locale.country" type="string" label="20026" help="36115">
           <level>0</level>
           <default>USA (12h)</default>
           <constraints>
             <options>regions</options>
           </constraints>
-          <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="update" setting="locale.language" />
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="update" setting="locale.language" />
+          </dependencies>
+          <control type="spinner" format="string" />
         </setting>
-        <setting id="locale.charset" type="string" label="14091" help="">
+        <setting id="locale.charset" type="string" label="14091" help="36116">
           <level>1</level>
           <default>DEFAULT</default>
           <constraints>
             <options>charsets</options>
           </constraints>
-          <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="update" setting="locale.language" />
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="update" setting="locale.language" />
+          </dependencies>
+          <control type="spinner" format="string" />
         </setting>
       </group>
       <group id="2">
-        <setting id="locale.timezonecountry" type="string" label="14079" help="">
+        <setting id="locale.timezonecountry" type="string" label="14079" help="36117">
           <level>2</level>
           <default>default</default> <!-- will be properly set on startup -->
           <constraints>
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="locale.timezone" type="string" label="14080" help="">
+        <setting id="locale.timezone" type="string" label="14080" help="36118">
           <level>2</level>
           <default>default</default> <!-- will be properly set on startup -->
           <constraints>
             <options>timezones</options>
           </constraints>
-          <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="update" setting="locale.timezonecountry" />
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="update" setting="locale.timezonecountry" />
+          </dependencies>
+          <control type="spinner" format="string" />
         </setting>
       </group>
       <group id="4">
-        <setting id="locale.audiolanguage" type="string" label="285" help="">
+        <setting id="locale.audiolanguage" type="string" label="285" help="36119">
           <level>1</level>
           <default>original</default>
           <constraints>
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="locale.subtitlelanguage" type="string" label="286" help="">
+        <setting id="locale.subtitlelanguage" type="string" label="286" help="36120">
           <level>1</level>
           <default>original</default>
           <constraints>
         </setting>
       </group>
     </category>
-    <category id="filelists" label="14081" help="">
+    <category id="filelists" label="14081" help="36121">
       <group id="1">
-        <setting id="filelists.showparentdiritems" type="boolean" label="13306" help="">
+        <setting id="filelists.showparentdiritems" type="boolean" label="13306" help="36122">
           <level>1</level>
           <default>true</default>
         </setting>
-        <setting id="filelists.showextensions" type="boolean" label="497" help="">
+        <setting id="filelists.showextensions" type="boolean" label="497" help="36123">
           <level>1</level>
           <default>true</default>
         </setting>
-        <setting id="filelists.ignorethewhensorting" type="boolean" label="13399" help="">
+        <setting id="filelists.ignorethewhensorting" type="boolean" label="13399" help="36124">
           <level>1</level>
           <default>true</default>
         </setting>
-        <setting id="filelists.allowfiledeletion" type="boolean" label="14071" help="">
+        <setting id="filelists.allowfiledeletion" type="boolean" label="14071" help="36125">
           <level>1</level>
           <default>false</default>
-          <control>
-            <dependencies>
-              <dependency type="enable">
-                <or>
-                  <condition on="property" operator="!is" name="ProfileHasFilesLocked" />
-                  <condition on="property" name="IsMasterUser" />
-                </or>
-              </dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable">
+              <or>
+                <condition on="property" operator="!is" name="ProfileHasFilesLocked" />
+                <condition on="property" name="IsMasterUser" />
+              </or>
+            </dependency>
+          </dependencies>
         </setting>
-        <setting id="filelists.showaddsourcebuttons" type="boolean" label="21382" help="">
+        <setting id="filelists.showaddsourcebuttons" type="boolean" label="21382" help="36126">
           <level>1</level>
           <default>true</default>
-          <control>
-            <dependencies>
-              <dependency type="enable">
-                <or>
-                  <condition on="property" name="ProfileCanWriteSources" />
-                  <condition on="property" name="IsMasterUser" />
-                </or>
-              </dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable">
+              <or>
+                <condition on="property" name="ProfileCanWriteSources" />
+                <condition on="property" name="IsMasterUser" />
+              </or>
+            </dependency>
+          </dependencies>
         </setting>
-        <setting id="filelists.showhidden" type="boolean" label="21330" help="">
+        <setting id="filelists.showhidden" type="boolean" label="21330" help="36127">
           <level>1</level>
           <default>false</default>
         </setting>
       </group>
     </category>
-    <category id="screensaver" label="360" help="355">
+    <category id="screensaver" label="360" help="36128">
       <group id="1">
-        <setting id="screensaver.mode" type="addon" label="356" help="">
+        <setting id="screensaver.mode" type="addon" label="356" help="36129">
           <level>0</level>
           <default>screensaver.xbmc.builtin.dim</default>
-          <addontype>xbmc.ui.screensaver</addontype>
-          <allowempty>true</allowempty>
+          <constraints>
+            <addontype>xbmc.ui.screensaver</addontype>
+            <allowempty>true</allowempty>
+          </constraints>
           <updates>
             <update type="change" />
           </updates>
         </setting>
-        <setting id="screensaver.settings" type="action" label="21417" help="">
+        <setting id="screensaver.settings" type="action" label="21417" help="36130">
           <level>0</level>
-          <control type="button" format="action">
-            <dependencies>
-              <dependency type="enable">
-                <and>
-                  <condition on="setting" setting="screensaver.mode" operator="!is"></condition>
-                  <condition on="property" name="AddonHasSettings" setting="screensaver.mode" />
-                </and>
-              </dependency>
-            </dependencies>
-          </control>
-        </setting>
-        <setting id="screensaver.preview" type="action" label="1000" help="">
+          <dependencies>
+            <dependency type="enable">
+              <and>
+                <condition on="setting" setting="screensaver.mode" operator="!is"></condition>
+                <condition on="property" name="AddonHasSettings" setting="screensaver.mode" />
+              </and>
+            </dependency>
+          </dependencies>
+        </setting>
+        <setting id="screensaver.preview" type="action" label="1000" help="36131">
           <level>0</level>
-          <control>
-            <dependencies>
-              <dependency type="enable" setting="screensaver.mode" operator="!is"></dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="screensaver.mode" operator="!is"></dependency>
+          </dependencies>
         </setting>
-        <setting id="screensaver.time" type="integer" label="355" help="">
+        <setting id="screensaver.time" type="integer" label="355" help="36132">
           <level>0</level>
           <default>3</default>
           <constraints>
             <minimum>1</minimum>
             <step>1</step>
             <maximum>60</maximum>
-            <formatlabel>14044</formatlabel>
           </constraints>
+          <dependencies>
+            <dependency type="enable" setting="screensaver.mode" operator="!is"></dependency>
+          </dependencies>
           <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="enable" setting="screensaver.mode" operator="!is"></dependency>
-            </dependencies>
+            <formatlabel>14044</formatlabel>
           </control>
         </setting>
       </group>
       <group id="2">
-        <setting id="screensaver.usemusicvisinstead" type="boolean" label="13392" help="">
+        <setting id="screensaver.usemusicvisinstead" type="boolean" label="13392" help="36133">
           <level>1</level>
           <default>true</default>
-          <control>
-            <dependencies>
-              <dependency type="enable" setting="screensaver.mode" operator="!is"></dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="screensaver.mode" operator="!is"></dependency>
+          </dependencies>
         </setting>
-        <setting id="screensaver.usedimonpause" type="boolean" label="22014" help="">
+        <setting id="screensaver.usedimonpause" type="boolean" label="22014" help="36134">
           <level>1</level>
           <default>true</default>
-          <control>
-            <dependencies>
-              <dependency type="enable">
-                <and>
-                  <condition setting="screensaver.mode" operator="!is">screensaver.xbmc.builtin.dim</condition>
-                  <condition setting="screensaver.mode" operator="!is"></condition>
-                </and>
-              </dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable">
+              <and>
+                <condition setting="screensaver.mode" operator="!is">screensaver.xbmc.builtin.dim</condition>
+                <condition setting="screensaver.mode" operator="!is"></condition>
+              </and>
+            </dependency>
+          </dependencies>
         </setting>
       </group>
     </category>
-    <category id="window" label="0" help="">
+    <category id="window" label="0" help="36135">
       <visible>false</visible>
       <group id="1">
-        <setting id="window.width" type="integer" label="0" help="">
+        <setting id="window.width" type="integer" label="0" help="36136">
           <level>4</level>
           <default>720</default>
         </setting>
-        <setting id="window.height" type="integer" label="0" help="">
+        <setting id="window.height" type="integer" label="0" help="36137">
           <level>4</level>
           <default>480</default>
         </setting>
       </group>
     </category>
   </section>
-  <section id="videos" label="3" help="">
-    <category id="videolibrary" label="14022" help="">
+  <section id="videos" label="3" help="36138">
+    <category id="videolibrary" label="14022" help="36139">
       <group id="1">
-        <setting id="videolibrary.enabled" type="boolean" label="24022" help="">
+        <setting id="videolibrary.enabled" type="boolean" label="24022" help="36140">
           <level>4</level>
           <default>true</default>
         </setting>
-        <setting id="videolibrary.showunwatchedplots" type="boolean" label="20369" help="">
+        <setting id="videolibrary.showunwatchedplots" type="boolean" label="20369" help="36141">
           <level>0</level>
           <default>true</default>
         </setting>
-        <setting id="videolibrary.seasonthumbs" type="boolean" label="20382" help="">
+        <setting id="videolibrary.seasonthumbs" type="boolean" label="20382" help="36142">
           <level>4</level>
           <default>true</default>
         </setting>
-        <setting id="videolibrary.actorthumbs" type="boolean" label="20402" help="">
+        <setting id="videolibrary.actorthumbs" type="boolean" label="20402" help="36143">
           <level>1</level>
           <default>true</default>
         </setting>
-        <setting id="videolibrary.flattentvshows" type="integer" label="20412" help="">
+        <setting id="videolibrary.flattentvshows" type="integer" label="20412" help="36144">
           <level>1</level>
           <default>1</default> <!-- if only one season -->
           <constraints>
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="videolibrary.groupmoviesets" type="boolean" label="20458" help="">
+        <setting id="videolibrary.groupmoviesets" type="boolean" label="20458" help="36145">
           <level>0</level>
           <default>false</default>
         </setting>
-        <setting id="videolibrary.updateonstartup" type="boolean" label="22000" help="">
+        <setting id="videolibrary.updateonstartup" type="boolean" label="22000" help="36146">
           <level>1</level>
           <default>false</default>
         </setting>
-        <setting id="videolibrary.backgroundupdate" type="boolean" label="22001" help="">
+        <setting id="videolibrary.backgroundupdate" type="boolean" label="22001" help="36147">
           <level>1</level>
           <default>false</default>
         </setting>
       </group>
       <group id="2">
-        <setting id="videolibrary.cleanup" type="action" label="334" help="">
+        <setting id="videolibrary.cleanup" type="action" label="334" help="36148">
           <level>2</level>
         </setting>
-        <setting id="videolibrary.export" type="action" label="647" help="">
+        <setting id="videolibrary.export" type="action" label="647" help="36149">
           <level>2</level>
         </setting>
-        <setting id="videolibrary.import" type="action" label="648" help="">
+        <setting id="videolibrary.import" type="action" label="648" help="36150">
           <level>2</level>
         </setting>
       </group>
     </category>
-    <category id="videoplayer" label="14086" help="">
+    <category id="videoplayer" label="14086" help="36151">
       <group id="1">
-        <setting id="videoplayer.autoplaynextitem" type="boolean" label="13433" help="">
+        <setting id="videoplayer.autoplaynextitem" type="boolean" label="13433" help="36152">
           <level>1</level>
           <default>false</default>
         </setting>
       </group>
       <group id="2">
-        <setting id="videoplayer.rendermethod" type="integer" label="13415" help="">
+        <setting id="videoplayer.rendermethod" type="integer" label="13415" help="36153">
           <level>2</level>
           <default>0</default> <!-- RENDER_METHOD_AUTO -->
           <constraints>
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="videoplayer.hqscalers" type="integer" label="13435" help="">
+        <setting id="videoplayer.hqscalers" type="integer" label="13435" help="36154">
           <level>2</level>
           <default>0</default>
           <constraints>
             <minimum>0</minimum>
             <step>10</step>
             <maximum>100</maximum>
-            <formatlabel>14047</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14047</formatlabel>
+          </control>
         </setting>
-        <setting id="videoplayer.usevdpau" type="boolean" label="13425" help="">
+        <setting id="videoplayer.usevdpau" type="boolean" label="13425" help="36155">
           <visible>HAVE_LIBVDPAU</visible>
           <level>2</level>
           <default>true</default>
         </setting>
-        <setting id="videoplayer.usevaapi" type="boolean" label="13426" help="">
+        <setting id="videoplayer.usevaapi" type="boolean" label="13426" help="36156">
           <visible>HAVE_LIBVA</visible>
           <level>2</level>
           <default>true</default>
         </setting>
-        <setting id="videoplayer.usedxva2" type="boolean" label="13427" help="">
+        <setting id="videoplayer.usedxva2" type="boolean" label="13427" help="36158">
           <visible>HasDXVA2</visible>
           <level>2</level>
           <default>true</default>
         </setting>
-        <setting id="videoplayer.usechd" type="boolean" label="13428" help="">
+        <setting id="videoplayer.usechd" type="boolean" label="13428" help="36159">
           <visible>HasCrystalHDDevice</visible>
           <level>2</level>
           <default>true</default>
         </setting>
-        <setting id="videoplayer.usevda" type="boolean" label="13429" help="">
+        <setting id="videoplayer.usevda" type="boolean" label="13429" help="36160">
           <visible>HasVDADecoder</visible>
           <level>2</level>
           <default>true</default>
         </setting>
-        <setting id="videoplayer.useomx" type="boolean" label="13430" help="">
+        <setting id="videoplayer.useomx" type="boolean" label="13430" help="36161">
           <visible>HAVE_LIBOPENMAX</visible>
           <level>2</level>
           <default>true</default>
         </setting>
-        <setting id="videoplayer.usevideotoolbox" type="boolean" label="13432" help="">
+        <setting id="videoplayer.usevideotoolbox" type="boolean" label="13432" help="36162">
           <visible>HasVideoToolBoxDecoder</visible>
           <level>2</level>
           <default>true</default>
         </setting>
-        <setting id="videoplayer.usepbo" type="boolean" label="13424" help="">
+        <setting id="videoplayer.usepbo" type="boolean" label="13424" help="36163">
           <visible>HAS_GL</visible>
           <level>4</level>
           <default>true</default>
         </setting>
-        <setting id="videoplayer.adjustrefreshrate" type="integer" label="170" help="">
+        <setting id="videoplayer.adjustrefreshrate" type="integer" label="170" help="36164">
           <level>2</level>
           <default>0</default> <!-- ADJUST_REFRESHRATE_OFF -->
           <constraints>
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="videoplayer.pauseafterrefreshchange" type="integer" label="13550" help="">
+        <setting id="videoplayer.pauseafterrefreshchange" type="integer" label="13550" help="36165">
           <level>2</level>
           <default>0</default>
           <constraints>
             <options>refreshchangedelays</options>
           </constraints>
-          <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="enable" setting="videoplayer.adjustrefreshrate" operator="!is">0</dependency> <!-- ADJUST_REFRESHRATE_OFF -->
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="videoplayer.adjustrefreshrate" operator="!is">0</dependency> <!-- ADJUST_REFRESHRATE_OFF -->
+          </dependencies>
+          <control type="spinner" format="string" />
         </setting>
-        <setting id="videoplayer.usedisplayasclock" type="boolean" label="13510" help="">
+        <setting id="videoplayer.usedisplayasclock" type="boolean" label="13510" help="36166">
           <level>2</level>
           <default>false</default>
         </setting>
-        <setting id="videoplayer.synctype" type="integer" label="13500" help="">
+        <setting id="videoplayer.synctype" type="integer" label="13500" help="36167">
           <level>2</level>
           <default>2</default> <!-- SYNC_RESAMPLE -->
           <constraints>
               <option label="13503">2</option> <!-- SYNC_RESAMPLE -->
             </options>
           </constraints>
-          <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="enable" setting="videoplayer.usedisplayasclock" operator="is">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="videoplayer.usedisplayasclock" operator="is">true</dependency>
+          </dependencies>
+          <control type="spinner" format="string" />
         </setting>
-        <setting id="videoplayer.maxspeedadjust" type="number" label="13504" help="">
+        <setting id="videoplayer.maxspeedadjust" type="number" label="13504" help="36168">
           <level>4</level>
           <default>5.0</default>
           <constraints>
             <step>0.1</step>
             <maximum>10.0</maximum>
           </constraints>
-          <control type="spinner" format="number">
-            <dependencies>
-              <dependency type="enable">
-                <and>
-                  <condition setting="videoplayer.usedisplayasclock" operator="is">true</condition>
-                  <condition setting="videoplayer.synctype" operator="is">2</condition> <!-- SYNC_RESAMPLE -->
-                </and>
-              </dependency>
-            </dependencies>
-          </control>
-        </setting>
-        <setting id="videoplayer.resamplequality" type="integer" label="13505" help="">
+          <dependencies>
+            <dependency type="enable">
+              <and>
+                <condition setting="videoplayer.usedisplayasclock" operator="is">true</condition>
+                <condition setting="videoplayer.synctype" operator="is">2</condition> <!-- SYNC_RESAMPLE -->
+              </and>
+            </dependency>
+          </dependencies>
+          <control type="spinner" format="number" />
+        </setting>
+        <setting id="videoplayer.resamplequality" type="integer" label="13505" help="36169">
           <level>4</level>
           <default>1</default> <!-- RESAMPLE_MID -->
           <constraints>
               <option label="13509">3</option> <!-- RESAMPLE_REALLYHIGH -->
             </options>
           </constraints>
-          <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="enable">
-                <and>
-                  <condition setting="videoplayer.usedisplayasclock" operator="is">true</condition>
-                  <condition setting="videoplayer.synctype" operator="is">2</condition> <!-- SYNC_RESAMPLE -->
-                </and>
-              </dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable">
+              <and>
+                <condition setting="videoplayer.usedisplayasclock" operator="is">true</condition>
+                <condition setting="videoplayer.synctype" operator="is">2</condition> <!-- SYNC_RESAMPLE -->
+              </and>
+            </dependency>
+          </dependencies>
+          <control type="spinner" format="string" />
         </setting>
-        <setting id="videoplayer.errorinaspect" type="integer" label="22021" help="">
+        <setting id="videoplayer.errorinaspect" type="integer" label="22021" help="36170">
           <level>2</level>
           <default>0</default>
           <constraints>
             <minimum label="231">0</minimum>
             <step>1</step>
             <maximum>20</maximum>
-            <formatlabel>14047</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14047</formatlabel>
+          </control>
         </setting>
-        <setting id="videoplayer.stretch43" type="integer" label="173" help="">
+        <setting id="videoplayer.stretch43" type="integer" label="173" help="36171">
           <level>1</level>
           <default>0</default> <!-- ViewModeNormal -->
           <constraints>
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="videoplayer.vdpau_allow_xrandr" type="boolean" label="13122" help="">
+        <setting id="videoplayer.vdpau_allow_xrandr" type="boolean" label="13122" help="36172">
           <visible>HAVE_LIBVDPAU</visible>
           <level>4</level>
           <default>false</default>
             <condition>HAVE_LIBVDPAU</condition>
           </and>
         </visible>
-        <setting id="videoplayer.vdpauUpscalingLevel" type="boolean" label="13121" help="">
+        <setting id="videoplayer.vdpauUpscalingLevel" type="boolean" label="13121" help="36173">
           <level>4</level>
           <default>false</default>
         </setting>
       </group>
       <group id="4">
-        <setting id="videoplayer.teletextenabled" type="boolean" label="23050" help="">
+        <setting id="videoplayer.teletextenabled" type="boolean" label="23050" help="36174">
           <level>1</level>
           <default>true</default>
         </setting>
-        <setting id="videoplayer.teletextscale" type="boolean" label="23055" help="">
+        <setting id="videoplayer.teletextscale" type="boolean" label="23055" help="36175">
           <level>1</level>
           <default>true</default>
         </setting>
       </group>
     </category>
-    <category id="myvideos" label="14081" help="">
+    <category id="myvideos" label="14081" help="36176">
       <group id="1">
-        <setting id="myvideos.selectaction" type="integer" label="22079" help="">
+        <setting id="myvideos.selectaction" type="integer" label="22079" help="36177">
           <level>1</level>
           <default>1</default> <!-- SELECT_ACTION_PLAY_OR_RESUME -->
           <constraints>
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="myvideos.extractflags" type="boolean" label="20433" help="">
+        <setting id="myvideos.extractflags" type="boolean" label="20433" help="36178">
           <level>1</level>
           <default>true</default>
         </setting>
-        <setting id="myvideos.replacelabels" type="boolean" label="20419" help="">
+        <setting id="myvideos.replacelabels" type="boolean" label="20419" help="36179">
           <level>1</level>
           <default>true</default>
         </setting>
-        <setting id="myvideos.extractthumb" type="boolean" label="20433" help="">
+        <setting id="myvideos.extractthumb" type="boolean" label="20433" help="36180">
           <level>4</level>
           <default>true</default>
         </setting>
       </group>
       <group id="2">
-        <setting id="myvideos.startwindow" type="integer" label="0" help="">
+        <setting id="myvideos.startwindow" type="integer" label="0" help="36181">
           <level>4</level>
           <default>100024</default> <!-- WINDOW_VIDEO_FILES -->
         </setting>
-        <setting id="myvideos.stackvideos" type="boolean" label="0" help="">
+        <setting id="myvideos.stackvideos" type="boolean" label="0" help="36182">
           <level>4</level>
           <default>false</default>
         </setting>
-        <setting id="myvideos.flatten" type="boolean" label="0" help="">
+        <setting id="myvideos.flatten" type="boolean" label="0" help="36183">
           <level>4</level>
           <default>false</default>
         </setting>
       </group>
     </category>
-    <category id="subtitles" label="287" help="">
+    <category id="subtitles" label="287" help="36184">
       <group id="1">
-        <setting id="subtitles.font" type="string" label="14089" help="">
+        <setting id="subtitles.font" type="string" label="14089" help="36185">
           <level>1</level>
           <default>arial.ttf</default>
           <constraints>
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="subtitles.height" type="integer" label="289" help="">
+        <setting id="subtitles.height" type="integer" label="289" help="36186">
           <level>1</level>
           <default>28</default>
           <constraints>
             <step>2</step>
             <maximum>74</maximum>
           </constraints>
-          <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="update" setting="subtitles.font" />
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="update" setting="subtitles.font" />
+          </dependencies>
+          <control type="spinner" format="string" />
         </setting>
-        <setting id="subtitles.style" type="integer" label="736" help="">
+        <setting id="subtitles.style" type="integer" label="736" help="36187">
           <level>1</level>
           <default>1</default> <!-- FONT_STYLE_BOLD -->
           <constraints>
               <option label="741">3</option> <!-- FONT_STYLE_BOLD | FONT_STYLE_ITALICS -->
             </options>
           </constraints>
-          <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="enable" on="property" name="IsUsingTTFSubtitles" setting="subtitles.font" />
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" on="property" name="IsUsingTTFSubtitles" setting="subtitles.font" />
+          </dependencies>
+          <control type="spinner" format="string" />
         </setting>
-        <setting id="subtitles.color" type="integer" label="737" help="">
+        <setting id="subtitles.color" type="integer" label="737" help="36188">
           <level>1</level>
           <default>1</default> <!-- White -->
           <constraints>
               <option label="767">7</option> <!-- Grey -->
             </options>
           </constraints>
-          <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="enable" on="property" name="IsUsingTTFSubtitles" setting="subtitles.font" />
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" on="property" name="IsUsingTTFSubtitles" setting="subtitles.font" />
+          </dependencies>
+          <control type="spinner" format="string" />
         </setting>
-        <setting id="subtitles.charset" type="string" label="735" help="">
+        <setting id="subtitles.charset" type="string" label="735" help="36189">
           <level>1</level>
           <default>DEFAULT</default>
           <constraints>
             <options>charsets</options>
           </constraints>
-          <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="enable" on="property" name="IsUsingTTFSubtitles" setting="subtitles.font" />
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" on="property" name="IsUsingTTFSubtitles" setting="subtitles.font" />
+          </dependencies>
+          <control type="spinner" format="string" />
         </setting>
-        <setting id="subtitles.overrideassfonts" type="boolean" label="21368" help="">
+        <setting id="subtitles.overrideassfonts" type="boolean" label="21368" help="36190">
           <level>1</level>
           <default>false</default>
         </setting>
       </group>
       <group id="2">
-        <setting id="subtitles.custompath" type="path" label="21366" help="">
+        <setting id="subtitles.custompath" type="path" label="21366" help="36191">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
-          <heading>657</heading>
           <constraints>
+            <allowempty>true</allowempty>
             <writable>false</writable>
             <sources>
               <source>videos</source>
             </sources>
           </constraints>
-          <control type="button" format="path" />
+          <control type="button" format="path">
+            <heading>657</heading>
+          </control>
         </setting>
-        <setting id="subtitles.align" type="integer" label="21460" help="">
+        <setting id="subtitles.align" type="integer" label="21460" help="36192">
           <level>1</level>
           <default>0</default> <!-- SUBTITLE_ALIGN_MANUAL -->
           <constraints>
         </setting>
       </group>
     </category>
-    <category id="dvds" label="14087" help="">
+    <category id="dvds" label="14087" help="36193">
       <group id="1">
-        <setting id="dvds.autorun" type="boolean" label="14088" help="">
+        <setting id="dvds.autorun" type="boolean" label="14088" help="36194">
           <level>0</level>
           <default>false</default>
         </setting>
-        <setting id="dvds.playerregion" type="integer" label="21372" help="">
+        <setting id="dvds.playerregion" type="integer" label="21372" help="36195">
           <level>2</level>
           <default>0</default>
           <constraints>
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="dvds.automenu" type="boolean" label="21882" help="">
+        <setting id="dvds.automenu" type="boolean" label="21882" help="36196">
           <level>1</level>
           <default>false</default>
         </setting>
       </group>
     </category>
-    <category id="scrapers" label="0" help="">
+    <category id="scrapers" label="0" help="36197">
       <visible>false</visible>
       <group id="1">
-        <setting id="scrapers.moviesdefault" type="addon" label="21413" help="">
+        <setting id="scrapers.moviesdefault" type="addon" label="21413" help="36198">
           <level>4</level>
           <default>metadata.themoviedb.org</default>
-          <addontype>xbmc.metadata.scraper.movies</addontype>
+          <constraints>
+            <addontype>xbmc.metadata.scraper.movies</addontype>
+          </constraints>
         </setting>
-        <setting id="scrapers.tvshowsdefault" type="addon" label="21414" help="">
+        <setting id="scrapers.tvshowsdefault" type="addon" label="21414" help="36199">
           <level>4</level>
           <default>metadata.tvdb.com</default>
-          <addontype>xbmc.metadata.scraper.tvshows</addontype>
+          <constraints>
+            <addontype>xbmc.metadata.scraper.tvshows</addontype>
+          </constraints>
         </setting>
-        <setting id="scrapers.musicvideosdefault" type="addon" label="21415" help="">
+        <setting id="scrapers.musicvideosdefault" type="addon" label="21415" help="36200">
           <level>4</level>
           <default>metadata.musicvideos.theaudiodb.com</default>
-          <addontype>xbmc.metadata.scraper.musicvideos</addontype>
+          <constraints>
+            <addontype>xbmc.metadata.scraper.musicvideos</addontype>
+          </constraints>
           <updates>
             <update type="change" />
           </updates>
       </group>
     </category>
   </section>
-  <section id="pvr" label="19180" help="">
-    <category id="pvrmanager" label="128" help="">
+  <section id="pvr" label="19180" help="36201">
+    <category id="pvrmanager" label="128" help="36202">
       <group id="1">
-        <setting id="pvrmanager.enabled" type="boolean" label="449" help="">
+        <setting id="pvrmanager.enabled" type="boolean" label="449" help="36203">
           <level>1</level>
           <default>false</default>
         </setting>
       </group>
       <group id="2">
-        <setting id="pvrmanager.syncchannelgroups" type="boolean" label="19221" help="">
+        <setting id="pvrmanager.syncchannelgroups" type="boolean" label="19221" help="36204">
           <level>1</level>
           <default>true</default>
         </setting>
-        <setting id="pvrmanager.backendchannelorder" type="boolean" label="19231" help="">
+        <setting id="pvrmanager.backendchannelorder" type="boolean" label="19231" help="36205">
           <level>2</level>
           <default>true</default>
         </setting>
-        <setting id="pvrmanager.usebackendchannelnumbers" type="boolean" label="19234" help="">
+        <setting id="pvrmanager.usebackendchannelnumbers" type="boolean" label="19234" help="36206">
           <level>2</level>
           <default>false</default>
         </setting>
       </group>
       <group id="3">
-        <setting id="pvrmanager.channelmanager" type="action" label="19199" help="">
+        <setting id="pvrmanager.channelmanager" type="action" label="19199" help="36207">
           <level>1</level>
-          <control>
-            <dependencies>
-              <dependency type="enable" setting="pvrmanager.enabled">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="pvrmanager.enabled">true</dependency>
+          </dependencies>
         </setting>
-        <setting id="pvrmanager.channelscan" type="action" label="19117" help="">
+        <setting id="pvrmanager.channelscan" type="action" label="19117" help="36208">
           <level>1</level>
-          <control>
-            <dependencies>
-              <dependency type="enable" setting="pvrmanager.enabled">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="pvrmanager.enabled">true</dependency>
+          </dependencies>
         </setting>
-        <setting id="pvrmanager.resetdb" type="action" label="19185" help="">
+        <setting id="pvrmanager.resetdb" type="action" label="19185" help="36209">
           <level>2</level>
         </setting>
       </group>
       <group id="4">
-        <setting id="pvrmanager.hideconnectionlostwarning" type="boolean" label="19269" help="">
+        <setting id="pvrmanager.hideconnectionlostwarning" type="boolean" label="19269" help="36210">
           <level>1</level>
           <default>false</default>
         </setting>
       </group>
     </category>
-    <category id="pvrmenu" label="19181" help="">
+    <category id="pvrmenu" label="19181" help="36211">
       <group id="1">
-        <setting id="pvrmenu.infoswitch" type="boolean" label="19178" help="">
+        <setting id="pvrmenu.infoswitch" type="boolean" label="19178" help="36212">
           <level>1</level>
           <default>true</default>
         </setting>
-        <setting id="pvrmenu.infotimeout" type="boolean" label="19179" help="">
+        <setting id="pvrmenu.infotimeout" type="boolean" label="19179" help="36213">
           <level>1</level>
           <default>true</default>
         </setting>
-        <setting id="pvrmenu.closechannelosdonswitch" type="boolean" label="19229" help="">
+        <setting id="pvrmenu.closechannelosdonswitch" type="boolean" label="19229" help="36214">
           <level>1</level>
           <default>false</default>
         </setting>
-        <setting id="pvrmenu.infotime" type="integer" label="19184" help="">
+        <setting id="pvrmenu.infotime" type="integer" label="19184" help="36215">
           <level>1</level>
           <default>5</default>
           <constraints>
             <minimum>1</minimum>
             <step>1</step>
             <maximum>10</maximum>
-            <formatlabel>14045</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14045</formatlabel>
+          </control>
         </setting>
       </group>
       <group id="2">
-        <setting id="pvrmenu.iconpath" type="path" label="19018" help="">
+        <setting id="pvrmenu.iconpath" type="path" label="19018" help="36216">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
-          <heading>657</heading>
           <constraints>
+            <allowempty>true</allowempty>
             <writable>false</writable>
           </constraints>
-          <control type="button" format="path" />
+          <control type="button" format="path">
+            <heading>657</heading>
+          </control>
         </setting>
-        <setting id="pvrmenu.searchicons" type="action" label="19167" help="">
+        <setting id="pvrmenu.searchicons" type="action" label="19167" help="36217">
           <level>1</level>
-          <control>
-            <dependencies>
-              <dependency type="enable" setting="pvrmanager.enabled">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="pvrmanager.enabled">true</dependency>
+          </dependencies>
         </setting>
       </group>
     </category>
-    <category id="epg" label="19069" help="">
+    <category id="epg" label="19069" help="36218">
       <group id="1">
-        <setting id="epg.defaultguideview" type="integer" label="19065" help="">
+        <setting id="epg.defaultguideview" type="integer" label="19065" help="36219">
           <level>1</level>
           <default>3</default> <!-- GUIDE_VIEW_TIMELINE -->
           <constraints>
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="epg.daystodisplay" type="integer" label="19182" help="">
+        <setting id="epg.daystodisplay" type="integer" label="19182" help="36220">
           <level>1</level>
           <default>3</default>
           <constraints>
             <minimum>1</minimum>
             <step>1</step>
             <maximum>14</maximum>
-            <formatlabel>17999</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>17999</formatlabel>
+          </control>
         </setting>
       </group>
       <group id="2">
-        <setting id="epg.epgupdate" type="integer" label="19071" help="">
+        <setting id="epg.epgupdate" type="integer" label="19071" help="36221">
           <level>1</level>
           <default>120</default>
           <constraints>
             <minimum>15</minimum>
             <step>15</step>
             <maximum>2880</maximum>
-            <formatlabel>14044</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14044</formatlabel>
+          </control>
         </setting>
-        <setting id="epg.preventupdateswhileplayingtv" type="boolean" label="19230" help="">
+        <setting id="epg.preventupdateswhileplayingtv" type="boolean" label="19230" help="36222">
           <level>1</level>
           <default>false</default>
         </setting>
-        <setting id="epg.ignoredbforclient" type="boolean" label="19072" help="">
+        <setting id="epg.ignoredbforclient" type="boolean" label="19072" help="36223">
           <level>1</level>
           <default>false</default>
         </setting>
-        <setting id="epg.hidenoinfoavailable" type="boolean" label="19268" help="">
+        <setting id="epg.hidenoinfoavailable" type="boolean" label="19268" help="36224">
           <level>1</level>
           <default>true</default>
         </setting>
-        <setting id="epg.resetepg" type="action" label="19187" help="">
+        <setting id="epg.resetepg" type="action" label="19187" help="36225">
           <level>1</level>
         </setting>
       </group>
     </category>
-    <category id="pvrplayback" label="19177" help="">
+    <category id="pvrplayback" label="19177" help="36226">
       <group id="1">
-        <setting id="pvrplayback.playminimized" type="boolean" label="19171" help="">
+        <setting id="pvrplayback.playminimized" type="boolean" label="19171" help="36227">
           <level>1</level>
           <default>true</default>
         </setting>
-        <setting id="pvrplayback.startlast" type="integer" label="19189" help="">
+        <setting id="pvrplayback.startlast" type="integer" label="19189" help="36228">
           <level>1</level>
           <default>0</default> <!-- START_LAST_CHANNEL_OFF -->
           <constraints>
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="pvrplayback.signalquality" type="boolean" label="19037" help="">
+        <setting id="pvrplayback.signalquality" type="boolean" label="19037" help="36229">
           <level>1</level>
           <default>true</default>
         </setting>
       </group>
       <group id="2">
-        <setting id="pvrplayback.scantime" type="integer" label="19170" help="">
+        <setting id="pvrplayback.scantime" type="integer" label="19170" help="36230">
           <level>1</level>
           <default>10</default>
           <constraints>
             <minimum>1</minimum>
             <step>1</step>
             <maximum>60</maximum>
-            <formatlabel>14045</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14045</formatlabel>
+          </control>
         </setting>
-        <setting id="pvrplayback.confirmchannelswitch" type="boolean" label="19281" help="">
+        <setting id="pvrplayback.confirmchannelswitch" type="boolean" label="19281" help="36231">
           <level>1</level>
           <default>false</default>
         </setting>
-        <setting id="pvrplayback.channelentrytimeout" type="integer" label="19073" help="">
+        <setting id="pvrplayback.channelentrytimeout" type="integer" label="19073" help="36232">
           <level>1</level>
           <default>0</default>
           <constraints>
             <minimum>0</minimum>
             <step>250</step>
             <maximum>10000</maximum>
-            <formatlabel>14046</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14046</formatlabel>
+          </control>
         </setting>
       </group>
     </category>
-    <category id="pvrrecord" label="19043" help="">
+    <category id="pvrrecord" label="19043" help="36233">
       <group id="1">
-        <setting id="pvrrecord.instantrecordtime" type="integer" label="19172" help="">
+        <setting id="pvrrecord.instantrecordtime" type="integer" label="19172" help="36234">
           <level>1</level>
           <default>120</default>
           <constraints>
             <minimum>1</minimum>
             <step>1</step>
             <maximum>720</maximum>
-            <formatlabel>14044</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14044</formatlabel>
+          </control>
         </setting>
-        <setting id="pvrrecord.defaultpriority" type="integer" label="19173" help="">
+        <setting id="pvrrecord.defaultpriority" type="integer" label="19173" help="36235">
           <level>1</level>
           <default>50</default>
           <constraints>
           </constraints>
           <control type="spinner" format="integer" />
         </setting>
-        <setting id="pvrrecord.defaultlifetime" type="integer" label="19174" help="">
+        <setting id="pvrrecord.defaultlifetime" type="integer" label="19174" help="36236">
           <level>1</level>
           <default>99</default>
           <constraints>
             <minimum>1</minimum>
             <step>1</step>
             <maximum>365</maximum>
-            <formatlabel>17999</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>17999</formatlabel>
+          </control>
         </setting>
-        <setting id="pvrrecord.marginstart" type="integer" label="19175" help="">
+        <setting id="pvrrecord.marginstart" type="integer" label="19175" help="36237">
           <level>1</level>
           <default>0</default>
           <constraints>
             <minimum>0</minimum>
             <step>1</step>
             <maximum>60</maximum>
-            <formatlabel>14044</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14044</formatlabel>
+          </control>
         </setting>
-        <setting id="pvrrecord.marginend" type="integer" label="19176" help="">
+        <setting id="pvrrecord.marginend" type="integer" label="19176" help="36238">
           <level>1</level>
           <default>0</default>
           <constraints>
             <minimum>0</minimum>
             <step>1</step>
             <maximum>60</maximum>
-            <formatlabel>14044</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14044</formatlabel>
+          </control>
         </setting>
       </group>
       <group id="2">
-        <setting id="pvrrecord.timernotifications" type="boolean" label="19233" help="">
+        <setting id="pvrrecord.timernotifications" type="boolean" label="19233" help="36239">
           <level>1</level>
           <default>true</default>
         </setting>
       </group>
     </category>
-    <category id="pvrpowermanagement" label="14095" help="">
+    <category id="pvrpowermanagement" label="14095" help="36240">
       <group id="1">
-        <setting id="pvrpowermanagement.enabled" type="boolean" label="305" help="">
+        <setting id="pvrpowermanagement.enabled" type="boolean" label="305" help="36241">
           <level>1</level>
           <default>false</default>
         </setting>
       </group>
       <group id="2">
-        <setting id="pvrpowermanagement.backendidletime" type="integer" label="19244" help="">
+        <setting id="pvrpowermanagement.backendidletime" type="integer" label="19244" help="36242">
           <level>1</level>
           <default>15</default>
           <constraints>
             <minimum label="351">0</minimum>
             <step>5</step>
             <maximum>360</maximum>
-            <formatlabel>14044</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14044</formatlabel>
+          </control>
         </setting>
-        <setting id="pvrpowermanagement.setwakeupcmd" type="string" label="19245" help="">
+        <setting id="pvrpowermanagement.setwakeupcmd" type="string" label="19245" help="36243">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
           <control type="edit" format="string" />
         </setting>
-        <setting id="pvrpowermanagement.prewakeup" type="integer" label="19246" help="">
+        <setting id="pvrpowermanagement.prewakeup" type="integer" label="19246" help="36244">
           <level>1</level>
           <default>15</default>
           <constraints>
             <minimum label="351">0</minimum>
             <step>1</step>
             <maximum>60</maximum>
-            <formatlabel>14044</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14044</formatlabel>
+          </control>
         </setting>
       </group>
       <group id="3">
-        <setting id="pvrpowermanagement.dailywakeup" type="boolean" label="19247" help="">
+        <setting id="pvrpowermanagement.dailywakeup" type="boolean" label="19247" help="36245">
           <level>1</level>
           <default>false</default>
         </setting>
-        <setting id="pvrpowermanagement.dailywakeuptime" type="string" label="19248" help="">
+        <setting id="pvrpowermanagement.dailywakeuptime" type="string" label="19248" help="36246">
           <level>1</level>
           <default>00:00:00</default>
           <control type="edit" format="string" />
         </setting>
       </group>
     </category>
-    <category id="pvrparental" label="19259" help="">
+    <category id="pvrparental" label="19259" help="36247">
       <access>CheckPVRParentalPin</access>
       <group id="1">
-        <setting id="pvrparental.enabled" type="boolean" label="449" help="">
+        <setting id="pvrparental.enabled" type="boolean" label="449" help="36248">
           <level>1</level>
           <default>false</default>
         </setting>
       </group>
       <group id="2">
-        <setting id="pvrparental.pin" type="string" label="19261" help="">
+        <setting id="pvrparental.pin" type="string" label="19261" help="36249">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
-          <control type="edit" format="integer" attributes="hidden,new" delayed="false">
-            <dependencies>
-              <dependency type="enable" setting="pvrparental.enabled">true</dependency>
-            </dependencies>
-          </control>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
+          <dependencies>
+            <dependency type="enable" setting="pvrparental.enabled">true</dependency>
+          </dependencies>
+          <control type="edit" format="integer" attributes="hidden,new" delayed="false" />
         </setting>
-        <setting id="pvrparental.duration" type="integer" label="19260" help="">
+        <setting id="pvrparental.duration" type="integer" label="19260" help="36250">
           <level>1</level>
           <default>300</default>
           <constraints>
             <minimum>5</minimum>
             <step>5</step>
             <maximum>1200</maximum>
-            <formatlabel>14045</formatlabel>
           </constraints>
+          <dependencies>
+            <dependency type="enable" setting="pvrparental.enabled">true</dependency>
+          </dependencies>
           <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="enable" setting="pvrparental.enabled">true</dependency>
-            </dependencies>
+            <formatlabel>14045</formatlabel>
           </control>
         </setting>
       </group>
     </category>
-    <category id="pvrclient" label="19279" help="">
+    <category id="pvrclient" label="19279" help="36251">
       <group id="1">
-        <setting id="pvrclient.menuhook" type="action" label="19280" help="">
+        <setting id="pvrclient.menuhook" type="action" label="19280" help="36252">
           <level>1</level>
         </setting>
       </group>
     </category>
   </section>
-  <section id="music" label="2" help="">
-    <category id="musiclibrary" label="14022" help="">
+  <section id="music" label="2" help="36253">
+    <category id="musiclibrary" label="14022" help="36138">
       <group id="1">
-        <setting id="musiclibrary.enabled" type="boolean" label="24022" help="">
+        <setting id="musiclibrary.enabled" type="boolean" label="24022" help="36254">
           <level>4</level>
           <default>true</default>
         </setting>
-        <setting id="musiclibrary.showcompilationartists" type="boolean" label="13414" help="">
+        <setting id="musiclibrary.showcompilationartists" type="boolean" label="13414" help="36255">
           <level>1</level>
           <default>true</default>
         </setting>
       </group>
       <group id="2">
-        <setting id="musiclibrary.downloadinfo" type="boolean" label="20192" help="">
+        <setting id="musiclibrary.downloadinfo" type="boolean" label="20192" help="36256">
           <level>0</level>
           <default>false</default>
         </setting>
-        <setting id="musiclibrary.albumsscraper" type="addon" label="20193" help="">
+        <setting id="musiclibrary.albumsscraper" type="addon" label="20193" help="36257">
           <level>1</level>
           <default>metadata.album.universal</default>
-          <addontype>xbmc.metadata.scraper.albums</addontype>
+          <constraints>
+            <addontype>xbmc.metadata.scraper.albums</addontype>
+          </constraints>
         </setting>
-        <setting id="musiclibrary.artistsscraper" type="addon" label="20194" help="">
+        <setting id="musiclibrary.artistsscraper" type="addon" label="20194" help="36258">
           <level>1</level>
           <default>metadata.artists.universal</default>
-          <addontype>xbmc.metadata.scraper.artists</addontype>
+          <constraints>
+            <addontype>xbmc.metadata.scraper.artists</addontype>
+          </constraints>
         </setting>
-        <setting id="musiclibrary.updateonstartup" type="boolean" label="22000" help="">
+        <setting id="musiclibrary.updateonstartup" type="boolean" label="22000" help="36259">
           <level>1</level>
           <default>false</default>
         </setting>
-        <setting id="musiclibrary.backgroundupdate" type="boolean" label="22001" help="">
+        <setting id="musiclibrary.backgroundupdate" type="boolean" label="22001" help="36147">
           <level>1</level>
           <default>false</default>
         </setting>
       </group>
       <group id="3">
-        <setting id="musiclibrary.cleanup" type="action" label="334" help="">
+        <setting id="musiclibrary.cleanup" type="action" label="334" help="36148">
           <level>2</level>
         </setting>
-        <setting id="musiclibrary.export" type="action" label="20196" help="">
+        <setting id="musiclibrary.export" type="action" label="20196" help="36262">
           <level>2</level>
         </setting>
-        <setting id="musiclibrary.import" type="action" label="20197" help="">
+        <setting id="musiclibrary.import" type="action" label="20197" help="36263">
           <level>2</level>
         </setting>
       </group>
     </category>
-    <category id="musicplayer" label="14086" help="">
+    <category id="musicplayer" label="14086" help="36264">
       <group id="1">
-        <setting id="musicplayer.autoplaynextitem" type="boolean" label="489" help="">
+        <setting id="musicplayer.autoplaynextitem" type="boolean" label="489" help="36265">
           <level>0</level>
           <default>true</default>
         </setting>
-        <setting id="musicplayer.queuebydefault" type="boolean" label="14084" help="">
+        <setting id="musicplayer.queuebydefault" type="boolean" label="14084" help="36266">
           <level>1</level>
           <default>false</default>
         </setting>
       </group>
       <group id="2">
-        <setting id="musicplayer.replaygaintype" type="integer" label="638" help="">
+        <setting id="musicplayer.replaygaintype" type="integer" label="638" help="36267">
           <level>2</level>
           <default>1</default> <!-- REPLAY_GAIN_ALBUM -->
           <constraints>
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="musicplayer.replaygainpreamp" type="integer" label="641" help="">
+        <setting id="musicplayer.replaygainpreamp" type="integer" label="641" help="36268">
           <level>2</level>
           <default>89</default>
           <constraints>
             <minimum>77</minimum>
             <step>1</step>
             <maximum>101</maximum>
-            <formatlabel>14050</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14050</formatlabel>
+          </control>
         </setting>
-        <setting id="musicplayer.replaygainnogainpreamp" type="integer" label="642" help="">
+        <setting id="musicplayer.replaygainnogainpreamp" type="integer" label="642" help="36269">
           <level>2</level>
           <default>89</default>
           <constraints>
             <minimum>77</minimum>
             <step>1</step>
             <maximum>101</maximum>
-            <formatlabel>14050</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14050</formatlabel>
+          </control>
         </setting>
-        <setting id="musicplayer.replaygainavoidclipping" type="boolean" label="643" help="">
+        <setting id="musicplayer.replaygainavoidclipping" type="boolean" label="643" help="36270">
           <level>2</level>
           <default>false</default>
         </setting>
       </group>
       <group id="3">
-        <setting id="musicplayer.crossfade" type="integer" label="13314" help="">
+        <setting id="musicplayer.crossfade" type="integer" label="13314" help="36271">
           <level>1</level>
           <default>0</default>
           <constraints>
             <minimum label="351">0</minimum>
             <step>1</step>
             <maximum>15</maximum>
-            <formatlabel>14045</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14045</formatlabel>
+          </control>
         </setting>
-        <setting id="musicplayer.crossfadealbumtracks" type="boolean" label="13400" help="">
+        <setting id="musicplayer.crossfadealbumtracks" type="boolean" label="13400" help="36272">
           <level>1</level>
           <default>true</default>
-          <control>
-            <dependencies>
-              <dependency type="enable">
-                <and>
-                  <condition setting="musicplayer.crossfade" operator="!is">0</condition>
-                </and>
-              </dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable">
+              <and>
+                <condition setting="musicplayer.crossfade" operator="!is">0</condition>
+              </and>
+            </dependency>
+          </dependencies>
         </setting>
       </group>
       <group id="4">
-        <setting id="musicplayer.visualisation" type="addon" label="250" help="">
+        <setting id="musicplayer.visualisation" type="addon" label="250" help="36273">
           <level>0</level>
           <default>visualization.glspectrum</default>
-          <addontype>xbmc.player.musicviz</addontype>
-          <allowempty>true</allowempty>
+          <constraints>
+            <addontype>xbmc.player.musicviz</addontype>
+            <allowempty>true</allowempty>
+          </constraints>
         </setting>
       </group>
     </category>
-    <category id="musicfiles" label="14081" help="">
+    <category id="musicfiles" label="14081" help="36274">
       <group id="1">
-        <setting id="musicfiles.usetags" type="boolean" label="258" help="">
+        <setting id="musicfiles.usetags" type="boolean" label="258" help="36274">
           <level>0</level>
           <default>true</default>
         </setting>
-        <setting id="musicfiles.trackformat" type="string" label="13307" help="">
+        <setting id="musicfiles.trackformat" type="string" label="13307" help="36275">
           <level>2</level>
           <default>[%N. ]%A - %T</default>
-          <heading>16016</heading>
-          <control type="edit" format="string" />
+          <control type="edit" format="string">
+            <heading>16016</heading>
+          </control>
         </setting>
-        <setting id="musicfiles.trackformatright" type="string" label="13387" help="">
+        <setting id="musicfiles.trackformatright" type="string" label="13387" help="36276">
           <level>2</level>
           <default>%D</default>
-          <heading>16016</heading>
-          <control type="edit" format="string" />
+          <control type="edit" format="string">
+            <heading>16016</heading>
+          </control>
         </setting>
-        <setting id="musicfiles.nowplayingtrackformat" type="string" label="13307" help="">
+        <setting id="musicfiles.nowplayingtrackformat" type="string" label="13307" help="36277">
           <level>4</level>
           <default></default>
-          <allowempty>true</allowempty>
-          <heading>16016</heading>
-          <control type="edit" format="string" />
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
+          <control type="edit" format="string">
+            <heading>16016</heading>
+          </control>
         </setting>
-        <setting id="musicfiles.nowplayingtrackformatright" type="string" label="13387" help="">
+        <setting id="musicfiles.nowplayingtrackformatright" type="string" label="13387" help="36278">
           <level>4</level>
           <default></default>
-          <allowempty>true</allowempty>
-          <heading>16016</heading>
-          <control type="edit" format="string" />
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
+          <control type="edit" format="string">
+            <heading>16016</heading>
+          </control>
         </setting>
-        <setting id="musicfiles.librarytrackformat" type="string" label="13307" help="">
+        <setting id="musicfiles.librarytrackformat" type="string" label="13307" help="36279">
           <level>4</level>
           <default></default>
-          <allowempty>true</allowempty>
-          <heading>16016</heading>
-          <control type="edit" format="string" />
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
+          <control type="edit" format="string">
+            <heading>16016</heading>
+          </control>
         </setting>
-        <setting id="musicfiles.librarytrackformatright" type="string" label="13387" help="">
+        <setting id="musicfiles.librarytrackformatright" type="string" label="13387" help="36280">
           <level>4</level>
           <default></default>
-          <allowempty>true</allowempty>
-          <heading>16016</heading>
-          <control type="edit" format="string" />
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
+          <control type="edit" format="string">
+            <heading>16016</heading>
+          </control>
         </setting>
-        <setting id="musicfiles.findremotethumbs" type="boolean" label="14059" help="">
+        <setting id="musicfiles.findremotethumbs" type="boolean" label="14059" help="36281">
           <level>0</level>
           <default>true</default>
         </setting>
       </group>
     </category>
-    <category id="audiocds" label="620" help="">
+    <category id="audiocds" label="620" help="36282">
       <group id="1">
-        <setting id="audiocds.autoaction" type="integer" label="14097" help="">
+        <setting id="audiocds.autoaction" type="integer" label="14097" help="36283">
           <level>1</level>
           <default>0</default> <!-- AUTOCD_NONE -->
           <constraints>
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="audiocds.usecddb" type="boolean" label="227" help="">
+        <setting id="audiocds.usecddb" type="boolean" label="227" help="36284">
           <level>1</level>
           <default>true</default>
         </setting>
       </group>
       <group id="2">
-        <setting id="audiocds.recordingpath" type="path" label="20000" help="">
+        <setting id="audiocds.recordingpath" type="path" label="20000" help="36285">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
-          <heading>657</heading>
-          <control type="button" format="path" />
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
+          <control type="button" format="path">
+            <heading>657</heading>
+          </control>
         </setting>
-        <setting id="audiocds.trackpathformat" type="string" label="13307" help="">
+        <setting id="audiocds.trackpathformat" type="string" label="13307" help="36286">
           <level>2</level>
-          <default>%A - %B/[%N. ][%A - ]%T</default>
-          <heading>16016</heading>
-          <control type="edit" format="string" />
+          <default>%A/%A - %B/[%N. ][%A - ]%T</default>
+          <control type="edit" format="string">
+            <heading>16016</heading>
+          </control>
         </setting>
-        <setting id="audiocds.encoder" type="integer" label="621" help="">
+        <setting id="audiocds.encoder" type="integer" label="621" help="36287">
           <level>2</level>
           <default>3</default> <!-- CDDARIP_ENCODER_FLAC -->
           <constraints>
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="audiocds.quality" type="integer" label="622" help="">
+        <setting id="audiocds.quality" type="integer" label="622" help="36288">
           <level>2</level>
           <default>0</default> <!-- CDDARIP_QUALITY_CBR -->
           <constraints>
               <option label="603">3</option> <!-- CDDARIP_QUALITY_EXTREME -->
             </options>
           </constraints>
-          <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="enable">
-                <and>
-                  <condition setting="audiocds.encoder" operator="!is">2</condition> <!-- CDDARIP_ENCODER_WAV -->
-                  <condition setting="audiocds.encoder" operator="!is">3</condition> <!-- CDDARIP_ENCODER_FLAC -->
-                </and>
-              </dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable">
+              <and>
+                <condition setting="audiocds.encoder" operator="!is">2</condition> <!-- CDDARIP_ENCODER_WAV -->
+                <condition setting="audiocds.encoder" operator="!is">3</condition> <!-- CDDARIP_ENCODER_FLAC -->
+              </and>
+            </dependency>
+          </dependencies>
+          <control type="spinner" format="string" />
         </setting>
-        <setting id="audiocds.bitrate" type="integer" label="623" help="">
+        <setting id="audiocds.bitrate" type="integer" label="623" help="36289">
           <level>2</level>
           <default>192</default>
           <constraints>
             <minimum>128</minimum>
             <step>32</step>
             <maximum>320</maximum>
-            <formatlabel>14048</formatlabel>
           </constraints>
+          <dependencies>
+            <dependency type="enable">
+              <and>
+                <condition setting="audiocds.encoder" operator="!is">2</condition> <!-- CDDARIP_ENCODER_WAV -->
+                <condition setting="audiocds.encoder" operator="!is">3</condition> <!-- CDDARIP_ENCODER_FLAC -->
+                <condition setting="audiocds.quality" operator="is">0</condition> <!-- CDDARIP_QUALITY_CBR -->
+              </and>
+            </dependency>
+          </dependencies>
           <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="enable">
-                <and>
-                  <condition setting="audiocds.encoder" operator="!is">2</condition> <!-- CDDARIP_ENCODER_WAV -->
-                  <condition setting="audiocds.encoder" operator="!is">3</condition> <!-- CDDARIP_ENCODER_FLAC -->
-                  <condition setting="audiocds.quality" operator="is">0</condition> <!-- CDDARIP_QUALITY_CBR -->
-                </and>
-              </dependency>
-            </dependencies>
+            <formatlabel>14048</formatlabel>
           </control>
         </setting>
-        <setting id="audiocds.compressionlevel" type="integer" label="665" help="">
+        <setting id="audiocds.compressionlevel" type="integer" label="665" help="36290">
           <level>2</level>
           <default>5</default>
           <constraints>
             <step>1</step>
             <maximum>8</maximum>
           </constraints>
-          <control type="spinner" format="integer">
-            <dependencies>
-              <dependency type="enable" setting="audiocds.encoder">3</dependency> <!-- CDDARIP_ENCODER_FLAC -->
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="audiocds.encoder">3</dependency> <!-- CDDARIP_ENCODER_FLAC -->
+          </dependencies>
+          <control type="spinner" format="integer" />
         </setting>
-        <setting id="audiocds.ejectonrip" type="boolean" label="14099" help="">
+        <setting id="audiocds.ejectonrip" type="boolean" label="14099" help="36291">
           <level>1</level>
           <default>true</default>
         </setting>
       </group>
     </category>
-    <category id="karaoke" label="13327" help="">
+    <category id="karaoke" label="13327" help="36292">
       <visible>HAS_KARAOKE</visible>
       <group id="1">
-        <setting id="karaoke.enabled" type="boolean" label="13323" help="">
+        <setting id="karaoke.enabled" type="boolean" label="13323" help="36293">
           <level>2</level>
           <default>false</default>
         </setting>
-        <setting id="karaoke.autopopupselector" type="boolean" label="22037" help="">
+        <setting id="karaoke.autopopupselector" type="boolean" label="22037" help="36294">
           <level>2</level>
           <default>false</default>
-          <control>
-            <dependencies>
-              <dependency type="enable" setting="karaoke.enabled">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="karaoke.enabled">true</dependency>
+          </dependencies>
         </setting>
       </group>
       <group id="2">
-        <setting id="karaoke.font" type="string" label="22030" help="">
+        <setting id="karaoke.font" type="string" label="22030" help="36295">
           <level>2</level>
           <default>arial.ttf</default>
           <constraints>
             <options>fonts</options>
           </constraints>
-          <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="enable" setting="karaoke.enabled">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="karaoke.enabled">true</dependency>
+          </dependencies>
+          <control type="spinner" format="string" />
         </setting>
-        <setting id="karaoke.fontheight" type="integer" label="22031" help="">
+        <setting id="karaoke.fontheight" type="integer" label="22031" help="36296">
           <level>2</level>
           <default>36</default>
           <constraints>
             <step>2</step>
             <maximum>74</maximum>
           </constraints>
-          <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="enable" setting="karaoke.enabled">true</dependency>
-              <dependency type="update" setting="karaoke.font" />
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="karaoke.enabled">true</dependency>
+            <dependency type="update" setting="karaoke.font" />
+          </dependencies>
+          <control type="spinner" format="string" />
         </setting>
-        <setting id="karaoke.fontcolors" type="integer" label="22032" help="">
+        <setting id="karaoke.fontcolors" type="integer" label="22032" help="36297">
           <level>2</level>
           <default>0</default> <!-- white/green -->
           <constraints>
               <option label="22043">3</option> <!-- black/white -->
             </options>
           </constraints>
-          <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="enable" setting="karaoke.enabled">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="karaoke.enabled">true</dependency>
+          </dependencies>
+          <control type="spinner" format="string" />
         </setting>
-        <setting id="karaoke.charset" type="string" label="22033" help="">
+        <setting id="karaoke.charset" type="string" label="22033" help="36298">
           <level>2</level>
           <default>DEFAULT</default>
           <constraints>
             <options>charsets</options>
           </constraints>
-          <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="enable" setting="karaoke.enabled">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="karaoke.enabled">true</dependency>
+          </dependencies>
+          <control type="spinner" format="string" />
         </setting>
       </group>
       <group id="3">
-        <setting id="karaoke.export" type="action" label="22038" help="">
+        <setting id="karaoke.export" type="action" label="22038" help="36299">
           <level>2</level>
-          <control>
-            <dependencies>
-              <dependency type="enable" setting="karaoke.enabled">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="karaoke.enabled">true</dependency>
+          </dependencies>
         </setting>
-        <setting id="karaoke.importcsv" type="action" label="22036" help="">
+        <setting id="karaoke.importcsv" type="action" label="22036" help="36300">
           <level>2</level>
-          <control>
-            <dependencies>
-              <dependency type="enable" setting="karaoke.enabled">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="karaoke.enabled">true</dependency>
+          </dependencies>
         </setting>
       </group>
     </category>
     <category id="mymusic" label="0" help="0">
       <group id="1">
-        <setting id="mymusic.startwindow" type="integer" label="0" help="">
+        <setting id="mymusic.startwindow" type="integer" label="0" help="36301">
           <level>4</level>
           <default>10501</default> <!-- WINDOW_MUSIC_FILES -->
         </setting>
-        <setting id="mymusic.songthumbinvis" type="boolean" label="0" help="">
+        <setting id="mymusic.songthumbinvis" type="boolean" label="0" help="36302">
           <level>4</level>
           <default>false</default>
         </setting>
-        <setting id="mymusic.defaultlibview" type="string" label="0" help="">
+        <setting id="mymusic.defaultlibview" type="string" label="0" help="36303">
           <level>4</level>
           <default></default>
-          <allowempty>true</allowempty>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
         </setting>
       </group>
     </category>
   </section>
-  <section id="pictures" label="1" help="">
-    <category id="pictures" label="14081" help="">
+  <section id="pictures" label="1" help="36304">
+    <category id="pictures" label="14081" help="36305">
       <group id="1">
-        <setting id="pictures.usetags" type="boolean" label="14082" help="">
+        <setting id="pictures.usetags" type="boolean" label="14082" help="36306">
           <level>0</level>
           <default>true</default>
         </setting>
-        <setting id="pictures.generatethumbs" type="boolean" label="13360" help="">
+        <setting id="pictures.generatethumbs" type="boolean" label="13360" help="36307">
           <level>1</level>
           <default>true</default>
         </setting>
-        <setting id="pictures.useexifrotation" type="boolean" label="20184" help="">
+        <setting id="pictures.useexifrotation" type="boolean" label="20184" help="36308">
           <level>1</level>
           <default>true</default>
         </setting>
-        <setting id="pictures.showvideos" type="boolean" label="22022" help="">
+        <setting id="pictures.showvideos" type="boolean" label="22022" help="36309">
           <level>1</level>
           <default>true</default>
         </setting>
-        <setting id="pictures.displayresolution" type="integer" label="169" help="">
+        <setting id="pictures.displayresolution" type="integer" label="169" help="36310">
           <visible>false</visible> <!-- not properly respected -->
           <level>1</level>
           <default>14</default> <!-- RES_AUTORES -->
         </setting>
       </group>
     </category>
-    <category id="slideshow" label="108" help="">
+    <category id="slideshow" label="108" help="36311">
       <group id="1">
-        <setting id="slideshow.staytime" type="integer" label="12378" help="">
+        <setting id="slideshow.staytime" type="integer" label="12378" help="36312">
           <level>0</level>
           <default>5</default>
           <constraints>
             <minimum>1</minimum>
             <step>1</step>
             <maximum>100</maximum>
-            <formatlabel>14045</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14045</formatlabel>
+          </control>
         </setting>
-        <setting id="slideshow.displayeffects" type="boolean" label="12379" help="">
+        <setting id="slideshow.displayeffects" type="boolean" label="12379" help="36313">
           <level>0</level>
           <default>true</default>
         </setting>
-        <setting id="slideshow.shuffle" type="boolean" label="13319" help="">
+        <setting id="slideshow.shuffle" type="boolean" label="13319" help="36314">
           <level>2</level>
           <default>false</default>
         </setting>
       </group>
     </category>
   </section>
-  <section id="weather" label="8" help="">
-    <category id="weather" label="16000" help="">
+  <section id="weather" label="8" help="36315">
+    <category id="weather" label="16000" help="36316">
       <group id="1">
-        <setting id="weather.currentlocation" type="integer" label="0" help="">
+        <setting id="weather.currentlocation" type="integer" label="0" help="36317">
           <level>4</level>
           <default>1</default>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="weather.addon" type="addon" label="24029" help="">
+        <setting id="weather.addon" type="addon" label="24029" help="36318">
           <level>0</level>
           <default>weather.wunderground</default>
-          <addontype>xbmc.python.weather</addontype>
-          <allowempty>true</allowempty>
+          <constraints>
+            <addontype>xbmc.python.weather</addontype>
+            <allowempty>true</allowempty>
+          </constraints>
         </setting>
-        <setting id="weather.addonsettings" type="action" label="21417" help="">
+        <setting id="weather.addonsettings" type="action" label="21417" help="36103">
           <level>0</level>
-          <control type="button" format="action">
-            <dependencies>
-              <dependency type="enable" on="property" name="AddonHasSettings" setting="weather.addon" />
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" on="property" name="AddonHasSettings" setting="weather.addon" />
+          </dependencies>
         </setting>
       </group>
     </category>
   </section>
-  <section id="services" label="14036" help="">
-    <category id="general" label="16000" help="">
+  <section id="services" label="14036" help="36319">
+    <category id="general" label="16000" help="36320">
       <group id="1">
-        <setting id="services.devicename" type="string" label="1271" help="">
+        <setting id="services.devicename" type="string" label="1271" help="36321">
           <level>0</level>
           <default>XBMC</default>
           <control type="edit" format="string" />
         </setting>
       </group>
     </category>
-    <category id="upnp" label="20187" help="">
+    <category id="upnp" label="20187" help="36322">
       <group id="1">
-        <setting id="services.upnpserver" type="boolean" label="21360" help="">
+        <setting id="services.upnpserver" type="boolean" label="21360" help="36323">
           <level>0</level>
           <default>false</default>
         </setting>
-        <setting id="services.upnpannounce" type="boolean" label="20188" help="">
+        <setting id="services.upnpannounce" type="boolean" label="20188" help="36324">
           <level>2</level>
           <default>true</default>
-          <control>
-            <dependencies>
-              <dependency type="enable" setting="services.upnpserver">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="services.upnpserver">true</dependency>
+          </dependencies>
         </setting>
-        <setting id="services.upnprenderer" type="boolean" label="21881" help="">
+        <setting id="services.upnprenderer" type="boolean" label="21881" help="36325">
           <level>1</level>
           <default>false</default>
         </setting>
-        <setting id="services.upnpcontroller" type="boolean" label="21361" help="">
+        <setting id="services.upnpcontroller" type="boolean" label="21361" help="36326">
           <level>1</level>
           <default>false</default>
         </setting>
       </group>
     </category>
-    <category id="webserver" label="33101" help="">
+    <category id="webserver" label="33101" help="36327">
       <visible>HAS_WEB_SERVER</visible>
       <group id="1">
-        <setting id="services.webserver" type="boolean" label="263" help="">
+        <setting id="services.webserver" type="boolean" label="263" help="36328">
           <level>1</level>
           <default>false</default>
         </setting>
-        <setting id="services.webserverport" type="integer" label="730" help="">
+        <setting id="services.webserverport" type="integer" label="730" help="36329">
           <level>2</level>
           <default>8080</default>
-          <heading>730</heading>
           <constraints>
             <minimum>1</minimum>
             <step>1</step>
           </constraints>
           <control type="edit" format="integer" />
         </setting>
-        <setting id="services.webserverusername" type="string" label="1048" help="">
+        <setting id="services.webserverusername" type="string" label="1048" help="36330">
           <level>2</level>
           <default>xbmc</default>
-          <allowempty>true</allowempty>
-          <control type="edit" format="string">
-            <dependencies>
-              <dependency type="enable" setting="services.webserver">true</dependency>
-            </dependencies>
-          </control>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
+          <dependencies>
+            <dependency type="enable" setting="services.webserver">true</dependency>
+          </dependencies>
+          <control type="edit" format="string" />
         </setting>
-        <setting id="services.webserverpassword" type="string" label="733" help="">
+        <setting id="services.webserverpassword" type="string" label="733" help="36331">
           <level>2</level>
           <default></default>
-          <allowempty>true</allowempty>
-          <heading>730</heading>
-          <control type="edit" format="string" attributes="hidden">
-            <dependencies>
-              <dependency type="enable" setting="services.webserver">true</dependency>
-            </dependencies>
-          </control>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
+          <dependencies>
+            <dependency type="enable" setting="services.webserver">true</dependency>
+          </dependencies>
+          <control type="edit" format="string" attributes="hidden" />
         </setting>
-        <setting id="services.webskin" type="addon" label="199" help="">
+        <setting id="services.webskin" type="addon" label="199" help="36332">
           <level>1</level>
           <default>webinterface.default</default>
-          <addontype>xbmc.gui.webinterface</addontype>
+          <constraints>
+            <addontype>xbmc.gui.webinterface</addontype>
+          </constraints>
         </setting>
       </group>
     </category>
-    <category id="remotecontrol" label="790" help="">
+    <category id="remotecontrol" label="790" help="36333">
       <visible>
         <or>
           <condition>HAS_EVENT_SERVER</condition>
         </or>
       </visible>
       <group id="1">
-        <setting id="services.esenabled" type="boolean" label="791" help="">
+        <setting id="services.esenabled" type="boolean" label="791" help="36334">
           <level>1</level>
           <default>true</default>
         </setting>
-        <setting id="services.esport" type="integer" label="792" help="">
+        <setting id="services.esport" type="integer" label="792" help="36335">
           <visible>HAS_EVENT_SERVER</visible>
           <level>4</level>
           <default>9777</default>
             <step>1</step>
             <maximum>65535</maximum>
           </constraints>
-          <control type="edit" format="integer">
-            <dependencies>
-              <dependency type="enable" setting="services.esenabled">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="services.esenabled">true</dependency>
+          </dependencies>
+          <control type="edit" format="integer" />
         </setting>
-        <setting id="services.esportrange" type="integer" label="793" help="">
+        <setting id="services.esportrange" type="integer" label="793" help="36336">
           <visible>HAS_EVENT_SERVER</visible>
           <level>4</level>
           <default>10</default>
             <step>1</step>
             <maximum>100</maximum>
           </constraints>
-          <control type="spinner" format="integer">
-            <dependencies>
-              <dependency type="enable" setting="services.esenabled">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="services.esenabled">true</dependency>
+          </dependencies>
+          <control type="spinner" format="integer" />
         </setting>
-        <setting id="services.esmaxclients" type="integer" label="797" help="">
+        <setting id="services.esmaxclients" type="integer" label="797" help="36337">
           <visible>HAS_EVENT_SERVER</visible>
           <level>4</level>
           <default>20</default>
             <step>1</step>
             <maximum>100</maximum>
           </constraints>
-          <control type="spinner" format="integer">
-            <dependencies>
-              <dependency type="enable" setting="services.esenabled">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="services.esenabled">true</dependency>
+          </dependencies>
+          <control type="spinner" format="integer" />
         </setting>
-        <setting id="services.esallinterfaces" type="boolean" label="794" help="">
+        <setting id="services.esallinterfaces" type="boolean" label="794" help="36338">
           <level>1</level>
           <default>false</default>
-          <control>
-            <dependencies>
-              <dependency type="enable" setting="services.esenabled">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="services.esenabled">true</dependency>
+          </dependencies>
         </setting>
-        <setting id="services.esinitialdelay" type="integer" label="795" help="">
+        <setting id="services.esinitialdelay" type="integer" label="795" help="36339">
           <visible>HAS_EVENT_SERVER</visible>
           <level>4</level>
           <default>750</default>
             <step>5</step>
             <maximum>10000</maximum>
           </constraints>
-          <control type="spinner" format="integer">
-            <dependencies>
-              <dependency type="enable" setting="services.esenabled">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="services.esenabled">true</dependency>
+          </dependencies>
+          <control type="spinner" format="integer" />
         </setting>
-        <setting id="services.escontinuousdelay" type="integer" label="796" help="">
+        <setting id="services.escontinuousdelay" type="integer" label="796" help="36340">
           <visible>HAS_EVENT_SERVER</visible>
           <level>4</level>
           <default>25</default>
             <step>5</step>
             <maximum>10000</maximum>
           </constraints>
-          <control type="spinner" format="integer">
-            <dependencies>
-              <dependency type="enable" setting="services.esenabled">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="services.esenabled">true</dependency>
+          </dependencies>
+          <control type="spinner" format="integer" />
         </setting>
       </group>
     </category>
-    <category id="zeroconf" label="1259" help="">
+    <category id="zeroconf" label="1259" help="36341">
       <visible>HAS_ZEROCONF</visible>
       <group id="1">
-        <setting id="services.zeroconf" type="boolean" label="1260" help="">
+        <setting id="services.zeroconf" type="boolean" label="1260" help="36342">
           <level>2</level>
           <default>true</default>
         </setting>
       </group>
     </category>
-    <category id="airplay" label="1273" help="">
+    <category id="airplay" label="1273" help="36343">
       <visible>HAS_AIRPLAY</visible>
       <group id="1">
-        <setting id="services.airplay" type="boolean" label="1270" help="">
+        <setting id="services.airplay" type="boolean" label="1270" help="36343">
           <level>1</level>
           <default>false</default>
         </setting>
-        <setting id="services.useairplaypassword" type="boolean" label="1272" help="">
+        <setting id="services.useairplaypassword" type="boolean" label="1272" help="36344">
           <level>1</level>
           <default>false</default>
-          <control>
-            <dependencies>
-              <dependency type="enable" setting="services.airplay">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="services.airplay">true</dependency>
+          </dependencies>
         </setting>
-        <setting id="services.airplaypassword" type="string" label="733" help="">
+        <setting id="services.airplaypassword" type="string" label="733" help="36345">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
-          <heading>733</heading>
-          <control type="edit" format="string" attributes="hidden">
-            <dependencies>
-              <dependency type="enable" setting="services.useairplaypassword">true</dependency>
-            </dependencies>
-          </control>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
+          <dependencies>
+            <dependency type="enable" setting="services.useairplaypassword">true</dependency>
+          </dependencies>
+          <control type="edit" format="string" attributes="hidden" />
         </setting>
       </group>
     </category>
-    <category id="smb" label="1200" help="">
+    <category id="smb" label="1200" help="36346">
       <group id="1">
-        <setting id="smb.winsserver" type="string" label="1207" help="">
+        <setting id="smb.winsserver" type="string" label="1207" help="36347">
           <level>2</level>
           <default>0.0.0.0</default>
           <control type="edit" format="ip" />
         </setting>
-        <setting id="smb.workgroup" type="string" label="1202" help="">
+        <setting id="smb.workgroup" type="string" label="1202" help="36348">
           <level>2</level>
           <default>WORKGROUP</default>
-          <heading>1202</heading>
           <control type="edit" format="string" />
         </setting>
       </group>
     </category>
   </section>
-  <section id="system" label="13000" help="">
-    <category id="videoscreen" label="21373" help="">
+  <section id="system" label="13000" help="36349">
+    <category id="videoscreen" label="21373" help="36350">
       <group id="1">
-        <setting id="videoscreen.screen" type="integer" label="240" help="">
+        <setting id="videoscreen.screen" type="integer" label="240" help="36351">
           <level>0</level>
           <default>0</default>
           <constraints>
             <options>screens</options>
           </constraints>
+          <dependencies>
+            <dependency type="update" setting="videoscreen.screenmode" />
+          </dependencies>
           <control type="spinner" format="string" delayed="true" />
         </setting>
-        <setting id="videoscreen.resolution" type="integer" label="169" help="">
+        <setting id="videoscreen.resolution" type="integer" label="169" help="36352">
           <level>0</level>
           <default>16</default> <!-- RES_DESKTOP -->
           <constraints>
             <options>resolutions</options>
           </constraints>
-          <control type="spinner" format="string" delayed="true">
-            <dependencies>
-              <dependency type="enable" setting="videoscreen.screen" operator="!is">-1</dependency> <!-- DM_WINDOWED -->
-              <dependency type="update" setting="videoscreen.screen" />
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="videoscreen.screen" operator="!is">-1</dependency> <!-- DM_WINDOWED -->
+            <dependency type="update" setting="videoscreen.screen" />
+          </dependencies>
+          <control type="spinner" format="string" delayed="true" />
         </setting>
-        <setting id="videoscreen.screenmode" type="string" label="243" help="">
+        <setting id="videoscreen.screenmode" type="string" label="243" help="36353">
           <visible>IsStandAlone</visible>
           <level>0</level>
           <default>DESKTOP</default>
           <updates>
             <update type="change" />
           </updates>
-          <control type="spinner" format="string" delayed="true">
-            <dependencies>
-              <dependency type="enable" setting="videoscreen.screen" operator="!is">-1</dependency> <!-- DM_WINDOWED -->
-              <dependency type="update" setting="videoscreen.screen" />
-              <dependency type="update" setting="videoscreen.resolution" />
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="videoscreen.screen" operator="!is">-1</dependency> <!-- DM_WINDOWED -->
+            <dependency type="update" setting="videoscreen.screen" />
+            <dependency type="update" setting="videoscreen.resolution" />
+          </dependencies>
+          <control type="spinner" format="string" delayed="true" />
         </setting>
-        <setting id="videoscreen.fakefullscreen" type="boolean" label="14083" help="">
+        <setting id="videoscreen.fakefullscreen" type="boolean" label="14083" help="36354">
           <level>2</level>
           <default>true</default>
-          <control>
-            <dependencies>
-              <dependency type="enable" setting="videoscreen.screen" operator="!is">-1</dependency> <!-- DM_WINDOWED -->
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="videoscreen.screen" operator="!is">-1</dependency> <!-- DM_WINDOWED -->
+          </dependencies>
         </setting>
-        <setting id="videoscreen.blankdisplays" type="boolean" label="13130" help="">
+        <setting id="videoscreen.blankdisplays" type="boolean" label="13130" help="36355">
           <level>1</level>
           <default>false</default>
-          <control>
-            <dependencies>
-              <dependency type="enable" on="property" name="IsFullscreen" />
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" on="property" name="IsFullscreen" />
+          </dependencies>
         </setting>
       </group>
       <group id="2">
-        <setting id="videoscreen.vsync" type="integer" label="13105" help="">
+        <setting id="videoscreen.vsync" type="integer" label="13105" help="36356">
           <level>2</level>
           <default>3</default> <!-- VSYNC_DRIVER -->
           <constraints>
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="videoscreen.guicalibration" type="action" label="214" help="">
+        <setting id="videoscreen.guicalibration" type="action" label="214" help="36357">
           <level>1</level>
         </setting>
-        <setting id="videoscreen.testpattern" type="action" label="226" help="">
+        <setting id="videoscreen.testpattern" type="action" label="226" help="36358">
           <visible>HAS_GL</visible>
           <level>1</level>
         </setting>
-        <setting id="videoscreen.limitedrange" type="boolean" label="36042" help="">
+        <setting id="videoscreen.limitedrange" type="boolean" label="36042" help="36359">
           <visible>
             <or>
               <condition>HAS_GL</condition>
         </setting>
       </group>
     </category>
-    <category id="audiooutput" label="772" help="">
+    <category id="audiooutput" label="772" help="36360">
       <group id="1">
-        <setting id="audiooutput.mode" type="integer" label="337" help="">
+        <setting id="audiooutput.mode" type="integer" label="337" help="36361">
           <level>1</level>
           <default>0</default> <!-- AUDIO_ANALOG -->
           <constraints>
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="audiooutput.channels" type="integer" label="34100" help="">
+        <setting id="audiooutput.channels" type="integer" label="34100" help="36362">
           <level>0</level>
           <default>1</default> <!-- AE_CH_LAYOUT_2_0 -->
           <constraints>
           </updates>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="audiooutput.normalizelevels" type="boolean" label="346" help="">
+        <setting id="audiooutput.normalizelevels" type="boolean" label="346" help="36363">
           <level>2</level>
           <default>true</default>
         </setting>
-        <setting id="audiooutput.stereoupmix" type="boolean" label="252" help="">
+        <setting id="audiooutput.stereoupmix" type="boolean" label="252" help="36364">
           <level>2</level>
           <default>false</default>
         </setting>
-        <setting id="audiooutput.ac3passthrough" type="boolean" label="364" help="">
+        <setting id="audiooutput.ac3passthrough" type="boolean" label="364" help="36365">
           <level>2</level>
           <default>true</default>
-          <control>
-            <dependencies>
-              <dependency type="enable">
-                <or>
-                  <condition setting="audiooutput.mode">1</condition> <!-- AUDIO_IEC958 -->
-                  <condition setting="audiooutput.mode">2</condition> <!-- AUDIO_HDMI -->
-                </or>
-              </dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable">
+              <or>
+                <condition setting="audiooutput.mode">1</condition> <!-- AUDIO_IEC958 -->
+                <condition setting="audiooutput.mode">2</condition> <!-- AUDIO_HDMI -->
+              </or>
+            </dependency>
+          </dependencies>
         </setting>
-        <setting id="audiooutput.dtspassthrough" type="boolean" label="254" help="">
+        <setting id="audiooutput.dtspassthrough" type="boolean" label="254" help="36366">
           <level>2</level>
           <default>true</default>
-          <control>
-            <dependencies>
-              <dependency type="enable">
-                <or>
-                  <condition setting="audiooutput.mode">1</condition> <!-- AUDIO_IEC958 -->
-                  <condition setting="audiooutput.mode">2</condition> <!-- AUDIO_HDMI -->
-                </or>
-              </dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable">
+              <or>
+                <condition setting="audiooutput.mode">1</condition> <!-- AUDIO_IEC958 -->
+                <condition setting="audiooutput.mode">2</condition> <!-- AUDIO_HDMI -->
+              </or>
+            </dependency>
+          </dependencies>
         </setting>
-        <setting id="audiooutput.passthroughaac" type="boolean" label="299" help="">
+        <setting id="audiooutput.passthroughaac" type="boolean" label="299" help="36367">
           <level>2</level>
           <default>false</default>
-          <control>
-            <dependencies>
-              <dependency type="enable">
-                <or>
-                  <condition setting="audiooutput.mode">1</condition> <!-- AUDIO_IEC958 -->
-                  <condition setting="audiooutput.mode">2</condition> <!-- AUDIO_HDMI -->
-                </or>
-              </dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable">
+              <or>
+                <condition setting="audiooutput.mode">1</condition> <!-- AUDIO_IEC958 -->
+                <condition setting="audiooutput.mode">2</condition> <!-- AUDIO_HDMI -->
+              </or>
+            </dependency>
+          </dependencies>
         </setting>
-        <setting id="audiooutput.multichannellpcm" type="boolean" label="348" help="">
+        <setting id="audiooutput.multichannellpcm" type="boolean" label="348" help="36368">
           <level>2</level>
           <default>true</default>
-          <control>
-            <dependencies>
-              <dependency type="enable" setting="audiooutput.mode">2</dependency> <!-- AUDIO_HDMI -->
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="audiooutput.mode">2</dependency> <!-- AUDIO_HDMI -->
+          </dependencies>
         </setting>
-        <setting id="audiooutput.truehdpassthrough" type="boolean" label="349" help="">
+        <setting id="audiooutput.truehdpassthrough" type="boolean" label="349" help="36369">
           <level>2</level>
           <default>true</default>
-          <control>
-            <dependencies>
-              <dependency type="enable" setting="audiooutput.mode">2</dependency> <!-- AUDIO_HDMI -->
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="audiooutput.mode">2</dependency> <!-- AUDIO_HDMI -->
+          </dependencies>
         </setting>
-        <setting id="audiooutput.dtshdpassthrough" type="boolean" label="347" help="">
+        <setting id="audiooutput.dtshdpassthrough" type="boolean" label="347" help="36370">
           <level>2</level>
           <default>true</default>
-          <control>
-            <dependencies>
-              <dependency type="enable">
-                <and>
-                  <condition setting="audiooutput.dtspassthrough">true</condition>
-                  <condition setting="audiooutput.mode">2</condition> <!-- AUDIO_HDMI -->
-                </and>
-              </dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable">
+              <and>
+                <condition setting="audiooutput.dtspassthrough">true</condition>
+                <condition setting="audiooutput.mode">2</condition> <!-- AUDIO_HDMI -->
+              </and>
+            </dependency>
+          </dependencies>
         </setting>
       </group>
       <group id="2">
-        <setting id="audiooutput.audiodevice" type="string" label="545" help="">
+        <setting id="audiooutput.audiodevice" type="string" label="545" help="36371">
           <level>2</level>
           <default>Default</default> <!-- will be properly set on startup -->
           <constraints>
           </constraints>
           <control type="spinner" format="string" />
         </setting>
-        <setting id="audiooutput.passthroughdevice" type="string" label="546" help="">
+        <setting id="audiooutput.passthroughdevice" type="string" label="546" help="36372">
           <level>2</level>
           <default>Default</default> <!-- will be properly set on startup -->
           <constraints>
             <options>audiodevicespassthrough</options>
           </constraints>
-          <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="enable">
-                <or>
-                  <condition setting="audiooutput.mode">1</condition> <!-- AUDIO_IEC958 -->
-                  <condition setting="audiooutput.mode">2</condition> <!-- AUDIO_HDMI -->
-                </or>
-              </dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable">
+              <or>
+                <condition setting="audiooutput.mode">1</condition> <!-- AUDIO_IEC958 -->
+                <condition setting="audiooutput.mode">2</condition> <!-- AUDIO_HDMI -->
+              </or>
+            </dependency>
+          </dependencies>
+          <control type="spinner" format="string" />
         </setting>
       </group>
       <group id="3">
-        <setting id="audiooutput.guisoundmode" type="integer" label="34120" help="">
+        <setting id="audiooutput.guisoundmode" type="integer" label="34120" help="36373">
           <level>0</level>
           <default>1</default> <!-- AE_SOUND_IDLE -->
           <constraints>
         </setting>
       </group>
     </category>
-    <category id="input" label="14094" help="">
+    <category id="input" label="14094" help="36374">
       <group id="1">
-        <setting id="input.peripherals" type="action" label="35000" help="">
+        <setting id="input.peripherals" type="action" label="35000" help="36375">
           <level>1</level>
-          <control>
-            <dependencies>
-              <dependency type="enable" on="property" name="HasPeripherals" />
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" on="property" name="HasPeripherals" />
+          </dependencies>
         </setting>
       </group>
       <group id="2">
-        <setting id="input.remoteaskeyboard" type="boolean" label="21449" help="">
+        <setting id="input.remoteaskeyboard" type="boolean" label="21449" help="36376">
           <level>2</level>
           <default>false</default>
         </setting>
-        <setting id="input.enablemouse" type="boolean" label="21369" help="">
+        <setting id="input.enablemouse" type="boolean" label="21369" help="36377">
           <level>0</level>
           <default>true</default>
         </setting>
-        <setting id="input.enablejoystick" type="boolean" label="35100" help="">
+        <setting id="input.enablejoystick" type="boolean" label="35100" help="36378">
           <visible>HAS_SDL_JOYSTICK</visible>
           <level>0</level>
           <default>true</default>
         </setting>
       </group>
     </category>
-    <category id="network" label="798" help="">
+    <category id="network" label="798" help="36379">
       <group id="1">
-        <setting id="network.usehttpproxy" type="boolean" label="708" help="">
+        <setting id="network.usehttpproxy" type="boolean" label="708" help="36380">
           <level>1</level>
           <default>false</default>
         </setting>
-        <setting id="network.httpproxytype" type="integer" label="1180" help="">
+        <setting id="network.httpproxytype" type="integer" label="1180" help="36381">
           <level>1</level>
           <default>0</default>
           <constraints>
               <option label="1185">4</option> <!-- PROXY_SOCKS5_REMOTE -->
             </options>
           </constraints>
-          <control type="spinner" format="string">
-            <dependencies>
-              <dependency type="enable" setting="network.usehttpproxy">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="network.usehttpproxy">true</dependency>
+          </dependencies>
+          <control type="spinner" format="string" />
         </setting>
-        <setting id="network.httpproxyserver" type="string" label="706" help="">
+        <setting id="network.httpproxyserver" type="string" label="706" help="36382">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
-          <control type="edit" format="string">
-            <dependencies>
-              <dependency type="enable" setting="network.usehttpproxy">true</dependency>
-            </dependencies>
-          </control>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
+          <dependencies>
+            <dependency type="enable" setting="network.usehttpproxy">true</dependency>
+          </dependencies>
+          <control type="edit" format="string" />
         </setting>
-        <setting id="network.httpproxyport" type="integer" label="730" help="">
+        <setting id="network.httpproxyport" type="integer" label="730" help="36383">
           <level>1</level>
           <default>8080</default>
-          <heading>707</heading>
           <constraints>
             <minimum>1</minimum>
             <step>1</step>
             <maximum>65535</maximum>
           </constraints>
-          <control type="edit" format="integer">
-            <dependencies>
-              <dependency type="enable" setting="network.usehttpproxy">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="network.usehttpproxy">true</dependency>
+          </dependencies>
+          <control type="edit" format="integer" />
         </setting>
-        <setting id="network.httpproxyusername" type="string" label="1048" help="">
+        <setting id="network.httpproxyusername" type="string" label="1048" help="36384">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
-          <control type="edit" format="string">
-            <dependencies>
-              <dependency type="enable" setting="network.usehttpproxy">true</dependency>
-            </dependencies>
-          </control>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
+          <dependencies>
+            <dependency type="enable" setting="network.usehttpproxy">true</dependency>
+          </dependencies>
+          <control type="edit" format="string" />
         </setting>
-        <setting id="network.httpproxypassword" type="string" label="733" help="">
+        <setting id="network.httpproxypassword" type="string" label="733" help="36385">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
-          <control type="edit" format="string" attributes="hidden">
-            <dependencies>
-              <dependency type="enable" setting="network.usehttpproxy">true</dependency>
-            </dependencies>
-          </control>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
+          <dependencies>
+            <dependency type="enable" setting="network.usehttpproxy">true</dependency>
+          </dependencies>
+          <control type="edit" format="string" attributes="hidden" />
         </setting>
       </group>
       <group id="2">
-        <setting id="network.bandwidth" type="integer" label="14041" help="">
+        <setting id="network.bandwidth" type="integer" label="14041" help="36386">
           <level>2</level>
           <default>0</default>
           <constraints>
             <minimum label="351">0</minimum>
             <step>512</step>
             <maximum>102400</maximum>
-            <formatlabel>14048</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14048</formatlabel>
+          </control>
         </setting>
       </group>
     </category>
-    <category id="powermanagement" label="14095" help="">
+    <category id="powermanagement" label="14095" help="36387">
       <group id="1">
-        <setting id="powermanagement.displaysoff" type="integer" label="1450" help="">
+        <setting id="powermanagement.displaysoff" type="integer" label="1450" help="36388">
           <level>0</level>
           <default>0</default>
           <constraints>
             <minimum label="351">0</minimum>
             <step>5</step>
             <maximum>120</maximum>
-            <formatlabel>14044</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14044</formatlabel>
+          </control>
         </setting>
-        <setting id="powermanagement.shutdowntime" type="integer" label="357" help="">
+        <setting id="powermanagement.shutdowntime" type="integer" label="357" help="36389">
           <level>2</level>
           <default>0</default>
           <constraints>
             <minimum label="351">0</minimum>
             <step>5</step>
             <maximum>120</maximum>
-            <formatlabel>14044</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14044</formatlabel>
+          </control>
         </setting>
-        <setting id="powermanagement.shutdownstate" type="integer" label="13008" help="">
+        <setting id="powermanagement.shutdownstate" type="integer" label="13008" help="36390">
           <level>2</level>
           <default>0</default> <!-- POWERSTATE_QUIT -->
           <constraints>
         </setting>
       </group>
     </category>
-    <category id="debug" label="14092" help="">
+    <category id="debug" label="14092" help="36391">
       <group id="1">
-        <setting id="debug.showloginfo" type="boolean" label="20191" help="">
+        <setting id="debug.showloginfo" type="boolean" label="20191" help="36392">
           <level>1</level>
           <default>false</default>
         </setting>
-        <setting id="debug.setextraloglevel" type="action" label="666" help="">
+        <setting id="debug.setextraloglevel" type="action" label="666" help="36394">
           <level>1</level>
-          <control type="button" format="action">
-            <dependencies>
-              <dependency type="enable" setting="debug.showloginfo">true</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="debug.showloginfo">true</dependency>
+          </dependencies>
         </setting>
         <setting id="debug.screenshotpath" type="path" label="20004" help="">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
-          <heading>657</heading>
-          <control type="button" format="path" />
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
+          <control type="button" format="path">
+            <heading>657</heading>
+          </control>
         </setting>
       </group>
     </category>
-    <category id="masterlock" label="12360" help="">
+    <category id="masterlock" label="12360" help="36395">
       <access>CheckMasterLock</access>
       <group id="1">
-        <setting id="masterlock.lockcode" type="string" label="20100" help="">
+        <setting id="masterlock.lockcode" type="string" label="20100" help="36396">
           <level>2</level>
           <default>-</default>
           <control type="button" format="action" />
         </setting>
-        <setting id="masterlock.startuplock" type="boolean" label="20076" help="">
+        <setting id="masterlock.startuplock" type="boolean" label="20076" help="36397">
           <level>2</level>
           <default>false</default>
-          <control>
-            <dependencies>
-              <dependency type="enable" on="property" name="ProfileLockMode" operator="!is">0</dependency>
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" on="property" name="ProfileLockMode" operator="!is">0</dependency>
+          </dependencies>
         </setting>
-        <setting id="masterlock.maxretries" type="integer" label="12364" help="">
+        <setting id="masterlock.maxretries" type="integer" label="12364" help="36398">
           <level>4</level>
           <default>3</default>
           <constraints>
         </setting>
       </group>
     </category>
-    <category id="cache" label="439" help="">
+    <category id="cache" label="439" help="36399">
       <visible>false</visible>
       <group id="1">
-        <setting id="cache.harddisk" type="integer" label="14025" help="">
+        <setting id="cache.harddisk" type="integer" label="14025" help="36400">
           <level>4</level>
           <default>256</default>
           <constraints>
             <minimum label="351">0</minimum>
             <step>256</step>
             <maximum>4096</maximum>
-            <formatlabel>14049</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14049</formatlabel>
+          </control>
         </setting>
       </group>
       <group id="2">
-        <setting id="cachevideo.dvdrom" type="integer" label="14026" help="">
+        <setting id="cachevideo.dvdrom" type="integer" label="14026" help="36401">
           <level>4</level>
           <default>2048</default>
           <constraints>
             <minimum label="351">0</minimum>
             <step>256</step>
             <maximum>16384</maximum>
-            <formatlabel>14049</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14049</formatlabel>
+          </control>
         </setting>
-        <setting id="cachevideo.lan" type="integer" label="14027" help="">
+        <setting id="cachevideo.lan" type="integer" label="14027" help="36402">
           <level>4</level>
           <default>2048</default>
           <constraints>
             <minimum label="351">0</minimum>
             <step>256</step>
             <maximum>16384</maximum>
-            <formatlabel>14049</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14049</formatlabel>
+          </control>
         </setting>
-        <setting id="cachevideo.internet" type="integer" label="14028" help="">
+        <setting id="cachevideo.internet" type="integer" label="14028" help="36403">
           <level>4</level>
           <default>4096</default>
           <constraints>
             <minimum label="351">0</minimum>
             <step>256</step>
             <maximum>16384</maximum>
-            <formatlabel>14049</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14049</formatlabel>
+          </control>
         </setting>
       </group>
       <group id="3">
-        <setting id="cacheaudio.dvdrom" type="integer" label="14030" help="">
+        <setting id="cacheaudio.dvdrom" type="integer" label="14030" help="36404">
           <level>4</level>
           <default>256</default>
           <constraints>
             <minimum label="351">0</minimum>
             <step>256</step>
             <maximum>4096</maximum>
-            <formatlabel>14049</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14049</formatlabel>
+          </control>
         </setting>
-        <setting id="cacheaudio.lan" type="integer" label="14031" help="">
+        <setting id="cacheaudio.lan" type="integer" label="14031" help="36405">
           <level>4</level>
           <default>256</default>
           <constraints>
             <minimum label="351">0</minimum>
             <step>256</step>
             <maximum>4096</maximum>
-            <formatlabel>14049</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14049</formatlabel>
+          </control>
         </setting>
-        <setting id="cacheaudio.internet" type="integer" label="14032" help="">
+        <setting id="cacheaudio.internet" type="integer" label="14032" help="36406">
           <level>4</level>
           <default>256</default>
           <constraints>
             <minimum label="351">0</minimum>
             <step>256</step>
             <maximum>4096</maximum>
-            <formatlabel>14049</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14049</formatlabel>
+          </control>
         </setting>
       </group>
       <group id="4">
-        <setting id="cachedvd.dvdrom" type="integer" label="14034" help="">
+        <setting id="cachedvd.dvdrom" type="integer" label="14034" help="36407">
           <level>4</level>
           <default>2048</default>
           <constraints>
             <minimum label="351">0</minimum>
             <step>256</step>
             <maximum>16384</maximum>
-            <formatlabel>14049</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14049</formatlabel>
+          </control>
         </setting>
-        <setting id="cachedvd.lan" type="integer" label="14060" help="">
+        <setting id="cachedvd.lan" type="integer" label="14060" help="36408">
           <level>4</level>
           <default>2048</default>
           <constraints>
             <minimum label="351">0</minimum>
             <step>256</step>
             <maximum>16384</maximum>
-            <formatlabel>14049</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14049</formatlabel>
+          </control>
         </setting>
       </group>
       <group id="5">
-        <setting id="cacheunknown.internet" type="integer" label="4096" help="">
+        <setting id="cacheunknown.internet" type="integer" label="4096" help="36409">
           <level>4</level>
           <default>4096</default>
           <constraints>
             <minimum label="351">0</minimum>
             <step>256</step>
             <maximum>16384</maximum>
-            <formatlabel>14049</formatlabel>
           </constraints>
-          <control type="spinner" format="string" />
+          <control type="spinner" format="string">
+            <formatlabel>14049</formatlabel>
+          </control>
         </setting>
       </group>
     </category>
-    <category id="paths" label="" help="">
+    <category id="paths" label="" help="36410">
       <group id="1">
-        <setting id="system.playlistspath" type="path" label="20006" help="">
+        <setting id="system.playlistspath" type="path" label="20006" help="36411">
           <level>4</level>
           <default></default>
-          <allowempty>true</allowempty>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
         </setting>
       </group>
     </category>
-    <category id="general" label="" help="">
+    <category id="general" label="" help="36412">
       <group id="1">
-        <setting id="general.addonautoupdate" type="boolean" label="0" help="">
+        <setting id="general.addonautoupdate" type="boolean" label="0" help="36413">
           <level>4</level>
           <default>true</default>
         </setting>
-        <setting id="general.addonnotifications" type="boolean" label="0" help="">
+        <setting id="general.addonnotifications" type="boolean" label="0" help="36414">
           <level>4</level>
           <default>true</default>
         </setting>
-        <setting id="general.addonforeignfilter" type="boolean" label="0" help="">
+        <setting id="general.addonforeignfilter" type="boolean" label="0" help="36415">
           <level>4</level>
           <default>false</default>
         </setting>
index 0daee41..01fb1bf 100644 (file)
@@ -27,7 +27,7 @@
         </setting>
       </group>
     </category>
-    <category id="smb" label="1200" help="">
+    <category id="smb" label="1200" help="36420">
       <visible>false</visible>
     </category>
   </section>
index 32ab40f..c55b667 100644 (file)
@@ -17,4 +17,8 @@ IF EXIST %WORKSPACE%\project\Win32BuildSetup\dependencies rmdir %WORKSPACE%\proj
 
 IF EXIST %WORKSPACE%\project\BuildDependencies\include rmdir %WORKSPACE%\project\BuildDependencies\include /S /Q
 IF EXIST %WORKSPACE%\project\BuildDependencies\lib rmdir %WORKSPACE%\project\BuildDependencies\lib /S /Q
-IF EXIST %WORKSPACE%\project\BuildDependencies\msys rmdir %WORKSPACE%\project\BuildDependencies\msys /S /Q
\ No newline at end of file
+IF EXIST %WORKSPACE%\project\BuildDependencies\msys rmdir %WORKSPACE%\project\BuildDependencies\msys /S /Q
+
+IF EXIST %WORKSPACE%\project\VS2010Express\XBMC rmdir %WORKSPACE%\project\VS2010Express\XBMC /S /Q
+IF EXIST %WORKSPACE%\project\VS2010Express\objs rmdir %WORKSPACE%\project\VS2010Express\objs /S /Q
+IF EXIST %WORKSPACE%\project\VS2010Express\libs rmdir %WORKSPACE%\project\VS2010Express\libs /S /Q
\ No newline at end of file
index 06f1100..a079ddf 100644 (file)
@@ -505,10 +505,7 @@ bool CApplication::OnEvent(XBMC_Event& newEvent)
         // when fullscreen, remain fullscreen and resize to the dimensions of the new screen
         RESOLUTION newRes = (RESOLUTION) g_Windowing.DesktopResolution(g_Windowing.GetCurrentScreen());
         if (newRes != g_graphicsContext.GetVideoResolution())
-        {
           CDisplaySettings::Get().SetCurrentResolution(newRes, true);
-          g_graphicsContext.SetVideoResolution(newRes);
-        }
       }
       else
 #endif
index 778f362..f6f345c 100644 (file)
@@ -30,6 +30,7 @@
 #include "profiles/dialogs/GUIDialogProfileSettings.h"
 #include "Util.h"
 #include "settings/MediaSourceSettings.h"
+#include "settings/Setting.h"
 #include "settings/Settings.h"
 #include "guilib/GUIWindowManager.h"
 #include "FileItem.h"
index 2b13731..c059563 100644 (file)
@@ -27,6 +27,7 @@
 #include "guilib/LocalizeStrings.h"
 #include "pvr/PVRManager.h"
 #include "settings/AdvancedSettings.h"
+#include "settings/Setting.h"
 #include "settings/Settings.h"
 #include "utils/CharsetConverter.h"
 #include "utils/log.h"
@@ -612,8 +613,21 @@ void CLangInfo::SettingOptionsRegionsFiller(const CSetting *setting, std::vector
   g_langInfo.GetRegionNames(regions);
   sort(regions.begin(), regions.end(), sortstringbyname());
 
+  bool match = false;
   for (unsigned int i = 0; i < regions.size(); ++i)
-    list.push_back(make_pair(regions[i], regions[i]));
+  {
+    CStdString region = regions[i];
+    list.push_back(make_pair(region, region));
+
+    if (!match && region.Equals(((CSettingString*)setting)->GetValue().c_str()))
+    {
+      match = true;
+      current = region;
+    }
+  }
+
+  if (!match && regions.size() > 0)
+    current = regions[0];
 }
 
 void CLangInfo::SettingOptionsLanguagesFillerGeneral(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string &current,
index 14db507..367b62c 100644 (file)
@@ -1637,6 +1637,15 @@ bool CUtil::Command(const CStdStringArray& arrArgs, bool waitExit)
   int n = 0;
   if (child == 0)
   {
+    if (!waitExit)
+    {
+      // fork again in order not to leave a zombie process
+      child = fork();
+      if (child == -1)
+        _exit(2);
+      else if (child != 0)
+        _exit(0);
+    }
     close(0);
     close(1);
     close(2);
@@ -1651,7 +1660,7 @@ bool CUtil::Command(const CStdStringArray& arrArgs, bool waitExit)
   }
   else
   {
-    if (waitExit) waitpid(child, &n, 0);
+    waitpid(child, &n, 0);
   }
 
   return (waitExit) ? (WEXITSTATUS(n) == 0) : true;
index 7ae1736..81b0a3a 100644 (file)
@@ -25,6 +25,7 @@
 #include "filesystem/File.h"
 #include "filesystem/SpecialProtocol.h"
 #include "guilib/WindowIDs.h"
+#include "settings/Setting.h"
 #include "settings/Settings.h"
 #include "utils/URIUtils.h"
 #include "utils/log.h"
index 0390036..902f156 100644 (file)
@@ -34,7 +34,14 @@ CJNIBroadcastReceiver::CJNIBroadcastReceiver(CJNIContext *context) : CJNIBase("o
 
 void CJNIBroadcastReceiver::InitializeBroadcastReceiver()
 {
-  m_object = new_object(jni_app_context->getClassLoader().loadClass(GetClassName()));
+  // Convert "the/class/name" to "the.class.name" as loadClass() expects it.
+  std::string className = GetClassName();
+  for (std::string::iterator it = className.begin(); it != className.end(); ++it)
+  {
+    if (*it == '/')
+      *it = '.';
+  }
+  m_object = new_object(jni_app_context->getClassLoader().loadClass(className));
   m_object.setGlobal();
 }
 
index ad2fe27..7141dd3 100644 (file)
@@ -343,7 +343,7 @@ void CAEFactory::SettingOptionsAudioDevicesFillerGeneral(const CSetting *setting
         firstDevice = sink->second;
 
 #if defined(TARGET_DARWIN)
-      list.push_back(StringSettingOption(sink->first, sink->first));
+      list.push_back(std::make_pair(sink->first, sink->first));
 #else
       list.push_back(std::make_pair(sink->first, sink->second));
 #endif
index 7307bbf..acb1062 100644 (file)
@@ -21,6 +21,7 @@
 #include "Application.h"
 #include "threads/SingleLock.h"
 #include "settings/AdvancedSettings.h"
+#include "settings/Setting.h"
 #include "settings/Settings.h"
 #include "dialogs/GUIDialogExtendedProgressBar.h"
 #include "dialogs/GUIDialogProgress.h"
index aae8c90..b25b871 100644 (file)
@@ -246,6 +246,7 @@ CCurlFile::CReadState::CReadState()
   m_bufferSize = 0;
   m_cancelled = false;
   m_bFirstLoop = true;
+  m_sendRange = true;
   m_headerdone = false;
   m_readBuffer = 0;
   m_isPaused = false;
@@ -308,8 +309,13 @@ void CCurlFile::CReadState::SetResume(void)
    * request header. If we don't the server may provide different content causing seeking to fail.
    * This only affects HTTP-like items, for FTP it's a null operation.
    */
-  if (m_filePos == 0)
+  if (m_sendRange && m_filePos == 0)
     g_curlInterface.easy_setopt(m_easyHandle, CURLOPT_RANGE, "0-");
+  else
+  {
+    g_curlInterface.easy_setopt(m_easyHandle, CURLOPT_RANGE, NULL);
+    m_sendRange = false;
+  }
 
   g_curlInterface.easy_setopt(m_easyHandle, CURLOPT_RESUME_FROM_LARGE, m_filePos);
 }
@@ -753,10 +759,7 @@ void CCurlFile::ParseAndCorrectUrl(CURL &url2)
       for(std::map<CStdString, CStdString>::const_iterator it = options.begin(); it != options.end(); ++it)
       {
         const CStdString &name = it->first;
-        CStdString value = it->second;
-
-        // url decode value
-        CURL::Decode(value);
+        const CStdString &value = it->second;
 
         if(name.Equals("auth"))
         {
@@ -902,6 +905,7 @@ bool CCurlFile::Open(const CURL& url)
   // setup common curl options
   SetCommonOptions(m_state);
   SetRequestHeaders(m_state);
+  m_state->m_sendRange = m_seekable;
 
   m_httpresponse = m_state->Connect(m_bufferSize);
   if( m_httpresponse < 0 || m_httpresponse >= 400)
@@ -1179,6 +1183,7 @@ int64_t CCurlFile::Seek(int64_t iFilePosition, int iWhence)
   SetRequestHeaders(m_state);
 
   m_state->m_filePos = nextPos;
+  m_state->m_sendRange = true;
 
   long response = m_state->Connect(m_bufferSize);
   if(response < 0 && (m_state->m_fileSize == 0 || m_state->m_fileSize != m_state->m_filePos))
@@ -1425,6 +1430,16 @@ bool CCurlFile::CReadState::FillBuffer(unsigned int want)
                   msg->data.result == CURLE_RECV_ERROR)        &&
                   !m_bFirstLoop)
               CURLresult = msg->data.result;
+            else if ( (msg->data.result == CURLE_HTTP_RANGE_ERROR     ||
+                       msg->data.result == CURLE_HTTP_RETURNED_ERROR) &&
+                       m_bFirstLoop                                   &&
+                       m_filePos == 0                                 &&
+                       m_sendRange)
+            {
+              // If server returns a range or http error, retry with range disabled
+              CURLresult = msg->data.result;
+              m_sendRange = false;
+            }
             else
               return false;
           }
index 86c6c4d..97ed8aa 100644 (file)
@@ -114,6 +114,7 @@ namespace XFILE
           int64_t         m_filePos;
           bool            m_bFirstLoop;
           bool            m_isPaused;
+          bool            m_sendRange;
 
           char*           m_readBuffer;
 
index c00bf5a..e1bf8e4 100644 (file)
@@ -45,6 +45,7 @@ CMusicDatabaseDirectory::~CMusicDatabaseDirectory(void)
 bool CMusicDatabaseDirectory::GetDirectory(const CStdString& strPath, CFileItemList &items)
 {
   CStdString path = CLegacyPathTranslation::TranslateMusicDbPath(strPath);
+  items.SetPath(path);
   auto_ptr<CDirectoryNode> pNode(CDirectoryNode::ParseURL(path));
 
   if (!pNode.get())
index 9d06e44..25705f6 100644 (file)
@@ -46,6 +46,7 @@ CVideoDatabaseDirectory::~CVideoDatabaseDirectory(void)
 bool CVideoDatabaseDirectory::GetDirectory(const CStdString& strPath, CFileItemList &items)
 {
   CStdString path = CLegacyPathTranslation::TranslateVideoDbPath(strPath);
+  items.SetPath(path);
   auto_ptr<CDirectoryNode> pNode(CDirectoryNode::ParseURL(path));
 
   if (!pNode.get())
index 3143b9f..df2d2b0 100644 (file)
@@ -22,6 +22,7 @@
 #include "GUIAudioManager.h"
 #include "Key.h"
 #include "input/ButtonTranslator.h"
+#include "settings/Setting.h"
 #include "threads/SingleLock.h"
 #include "utils/URIUtils.h"
 #include "utils/XBMCTinyXML.h"
index 9de3413..5cce7a8 100644 (file)
@@ -174,7 +174,8 @@ bool CGUISliderControl::OnAction(const CAction &action)
 
   case ACTION_SELECT_ITEM:
     // switch between the two sliders
-    SwitchRangeSelector();
+    if (m_rangeSelection)
+      SwitchRangeSelector();
     return true;
 
   default:
index 71367ed..72daf4d 100644 (file)
@@ -25,6 +25,7 @@
 #include "ApplicationMessenger.h"
 #include "settings/AdvancedSettings.h"
 #include "settings/DisplaySettings.h"
+#include "settings/Setting.h"
 #include "settings/Settings.h"
 #include "cores/VideoRenderers/RenderManager.h"
 #include "windowing/WindowingFactory.h"
@@ -857,7 +858,6 @@ bool CGraphicContext::ToggleFullScreenRoot ()
 #endif
   }
 
-  SetVideoResolution(newRes);
   CDisplaySettings::Get().SetCurrentResolution(uiRes, true);
 
   return m_bFullScreenRoot;
index fd8597a..8b25876 100644 (file)
@@ -23,6 +23,7 @@
 #include "ButtonTranslator.h"
 #include "peripherals/devices/PeripheralImon.h"
 #include "settings/AdvancedSettings.h"
+#include "settings/Setting.h"
 #include "utils/log.h"
 
 #include <math.h>
index 8b73ecd..28fdc7a 100644 (file)
@@ -473,7 +473,6 @@ int CBuiltins::Execute(const CStdString& execString)
     if (g_graphicsContext.IsValidResolution(res))
     {
       CDisplaySettings::Get().SetCurrentResolution(res, true);
-      g_graphicsContext.SetVideoResolution(res);
       g_application.ReloadSkin();
     }
   }
index 370653f..9ab94aa 100644 (file)
@@ -35,6 +35,7 @@
 
 #include "Util.h"
 #include "XBDateTime.h"
+#include "settings/Setting.h"
 #include "settings/Settings.h"
 
 using namespace std;
index f335dd9..9795a54 100644 (file)
@@ -26,6 +26,9 @@
 #include "ApplicationMessenger.h"
 #include "network/NetworkServices.h"
 #include "utils/log.h"
+#ifdef TARGET_WINDOWS
+#include "utils/SystemInfo.h"
+#endif
 
 using namespace std;
 
@@ -396,10 +399,16 @@ int CreateTCPServerSocket(const int port, const bool bindLocal, const int backlo
   struct sockaddr_in  *s4;
   int    sock;
   bool   v4_fallback = false;
+#ifdef TARGET_WINDOWS
+  // Windows XP and earlier don't support the IPV6_V6ONLY socket option
+  // so always fall back to IPv4 directly to keep old functionality
+  if (CSysInfo::GetWindowsVersion() <= CSysInfo::WindowsVersionWinXP)
+    v4_fallback = true;
+#endif
 
 #ifdef WINSOCK_VERSION
-  const char yes = 1;
-  const char no = 0;
+  int yes = 1;
+  int no = 0;
 #else
   unsigned int yes = 1;
   unsigned int no = 0;
@@ -407,23 +416,33 @@ int CreateTCPServerSocket(const int port, const bool bindLocal, const int backlo
   
   memset(&addr, 0, sizeof(addr));
   
-  if ((sock = socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP)) < 0)
+  if (!v4_fallback &&
+     (sock = socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP)) >= 0)
+  {
+    // in case we're on ipv6, make sure the socket is dual stacked
+    if (setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (const char*)&no, sizeof(no)) < 0)
+    {
+#ifdef _MSC_VER
+      CStdString sock_err = WUSysMsg(WSAGetLastError());
+#else
+      CStdString sock_err = strerror(errno);
+#endif
+      CLog::Log(LOGWARNING, "%s Server: Only IPv6 supported (%s)", callerName, sock_err.c_str());
+    }
+  }
+  else
+  {
     v4_fallback = true;
-  
-  //in case we're on ipv6, make sure the socket is dual stacked
-  if (!v4_fallback)
-    setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, &no, sizeof(no)); 
-  
-  if (v4_fallback)
     sock = socket(PF_INET, SOCK_STREAM, 0);
-
-  setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes));
+  }
   
   if (sock == INVALID_SOCKET)
   {
     CLog::Log(LOGERROR, "%s Server: Failed to create serversocket", callerName);
     return INVALID_SOCKET;
   }
+
+  setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char*)&yes, sizeof(yes));
   
   if (v4_fallback)
   {
index b6082b6..fa35cb7 100644 (file)
@@ -74,6 +74,7 @@
 #endif
 
 #include "settings/AdvancedSettings.h"
+#include "settings/Setting.h"
 #include "settings/Settings.h"
 #include "utils/log.h"
 #include "utils/RssManager.h"
@@ -215,22 +216,26 @@ bool CNetworkServices::OnSettingChanging(const CSetting *setting)
         return false;
       }
 
-      if (!CAirPlayServer::SetCredentials(CSettings::Get().GetBool("services.useairplaypassword"),
-                                          CSettings::Get().GetString("services.airplaypassword")))
-      {
-        CGUIDialogOK::ShowAndGetInput(g_localizeStrings.Get(1273), "", g_localizeStrings.Get(33100), "");
-        return false;
-      }
-
+#ifdef HAS_AIRTUNES
       if (!StartAirTunesServer())
       {
         CGUIDialogOK::ShowAndGetInput(g_localizeStrings.Get(1274), "", g_localizeStrings.Get(33100), "");
         return false;
       }
+#endif //HAS_AIRTUNES
     }
     else
     {
-      if (!StopAirPlayServer(true) || !StopAirTunesServer(true))
+      bool ret = true;
+#ifdef HAS_AIRTUNES
+      if (!StopAirTunesServer(true))
+        ret = false;
+#endif //HAS_AIRTUNES
+      
+      if (!StopAirPlayServer(true))
+        ret = false;
+
+      if (!ret)
         return false;
     }
   }
index d72008f..4482aaf 100644 (file)
@@ -253,7 +253,7 @@ bool CTCPServer::Initialize()
   started |= InitializeBlue();
   started |= InitializeTCP();
 
-  if(started)
+  if (started)
   {
     CAnnouncementManager::AddAnnouncer(this);
     CLog::Log(LOGINFO, "JSONRPC Server: Successfully initialized");
@@ -264,13 +264,13 @@ bool CTCPServer::Initialize()
 
 bool CTCPServer::InitializeBlue()
 {
-  if(!m_nonlocal)
+  if (!m_nonlocal)
     return false;
 
-#ifdef _WIN32
+#ifdef TARGET_WINDOWS
 
-  SOCKET fd = socket (AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
-  if(fd == INVALID_SOCKET)
+  SOCKET fd = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
+  if (fd == INVALID_SOCKET)
   {
     CLog::Log(LOGINFO, "JSONRPC Server: Unable to get bluetooth socket");
     return false;
@@ -279,7 +279,7 @@ bool CTCPServer::InitializeBlue()
   sa.addressFamily = AF_BTH;
   sa.port          = BT_PORT_ANY;
 
-  if(bind(fd, (SOCKADDR*)&sa, sizeof(sa)) < 0)
+  if (bind(fd, (SOCKADDR*)&sa, sizeof(sa)) < 0)
   {
     CLog::Log(LOGINFO, "JSONRPC Server: Unable to bind to bluetooth socket");
     closesocket(fd);
@@ -287,7 +287,7 @@ bool CTCPServer::InitializeBlue()
   }
 
   ULONG optval = TRUE;
-  if(setsockopt(fd, SOL_RFCOMM, SO_BTH_AUTHENTICATE, (const char*)&optval, sizeof(optval)) == SOCKET_ERROR)
+  if (setsockopt(fd, SOL_RFCOMM, SO_BTH_AUTHENTICATE, (const char*)&optval, sizeof(optval)) == SOCKET_ERROR)
   {
     CLog::Log(LOGERROR, "JSONRPC Server: Failed to force authentication for bluetooth socket");
     closesocket(fd);
@@ -295,7 +295,7 @@ bool CTCPServer::InitializeBlue()
   }
 
   int len = sizeof(sa);
-  if(getsockname(fd, (SOCKADDR*)&sa, &len) < 0)
+  if (getsockname(fd, (SOCKADDR*)&sa, &len) < 0)
     CLog::Log(LOGERROR, "JSONRPC Server: Failed to get bluetooth port");
 
   if (listen(fd, 10) < 0)
@@ -325,7 +325,7 @@ bool CTCPServer::InitializeBlue()
   service.lpcsaBuffer             = &addrinfo;
   service.dwNumberOfCsAddrs       = 1;
 
-  if(WSASetService(&service, RNRSERVICE_REGISTER, 0) == SOCKET_ERROR)
+  if (WSASetService(&service, RNRSERVICE_REGISTER, 0) == SOCKET_ERROR)
     CLog::Log(LOGERROR, "JSONRPC Server: failed to register bluetooth service error %d",  WSAGetLastError());
 
   return true;
@@ -333,8 +333,8 @@ bool CTCPServer::InitializeBlue()
 
 #ifdef HAVE_LIBBLUETOOTH
 
-  SOCKET fd = socket (AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
-  if(fd == INVALID_SOCKET)
+  SOCKET fd = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
+  if (fd == INVALID_SOCKET)
   {
     CLog::Log(LOGINFO, "JSONRPC Server: Unable to get bluetooth socket");
     return false;
@@ -344,7 +344,7 @@ bool CTCPServer::InitializeBlue()
   sa.rc_bdaddr  = bt_bdaddr_any;
   sa.rc_channel = 0;
 
-  if(bind(fd, (struct sockaddr*)&sa, sizeof(sa)) < 0)
+  if (bind(fd, (struct sockaddr*)&sa, sizeof(sa)) < 0)
   {
     CLog::Log(LOGINFO, "JSONRPC Server: Unable to bind to bluetooth socket");
     closesocket(fd);
@@ -352,7 +352,7 @@ bool CTCPServer::InitializeBlue()
   }
 
   socklen_t len = sizeof(sa);
-  if(getsockname(fd, (struct sockaddr*)&sa, &len) < 0)
+  if (getsockname(fd, (struct sockaddr*)&sa, &len) < 0)
     CLog::Log(LOGERROR, "JSONRPC Server: Failed to get bluetooth port");
 
   if (listen(fd, 10) < 0)
@@ -377,48 +377,48 @@ bool CTCPServer::InitializeBlue()
   sdp_record_t *record = sdp_record_alloc();
 
   // set the general service ID
-  sdp_uuid128_create( &svc_uuid, &bt_service_guid );
-  sdp_set_service_id( record, svc_uuid );
+  sdp_uuid128_create(&svc_uuid, &bt_service_guid);
+  sdp_set_service_id(record, svc_uuid);
 
   // make the service record publicly browsable
   sdp_uuid16_create(&root_uuid, PUBLIC_BROWSE_GROUP);
   root_list = sdp_list_append(0, &root_uuid);
-  sdp_set_browse_groups( record, root_list );
+  sdp_set_browse_groups(record, root_list);
 
   // set l2cap information
   sdp_uuid16_create(&l2cap_uuid, L2CAP_UUID);
-  l2cap_list = sdp_list_append( 0, &l2cap_uuid );
-  proto_list = sdp_list_append( 0, l2cap_list );
+  l2cap_list = sdp_list_append(0, &l2cap_uuid);
+  proto_list = sdp_list_append(0, l2cap_list);
 
   // set rfcomm information
   sdp_uuid16_create(&rfcomm_uuid, RFCOMM_UUID);
   channel = sdp_data_alloc(SDP_UINT8, &rfcomm_channel);
-  rfcomm_list = sdp_list_append( 0, &rfcomm_uuid );
-  sdp_list_append( rfcomm_list, channel );
-  sdp_list_append( proto_list, rfcomm_list );
+  rfcomm_list = sdp_list_append(0, &rfcomm_uuid);
+  sdp_list_append(rfcomm_list, channel);
+  sdp_list_append(proto_list, rfcomm_list);
 
   // attach protocol information to service record
-  access_proto_list = sdp_list_append( 0, proto_list );
-  sdp_set_access_protos( record, access_proto_list );
+  access_proto_list = sdp_list_append(0, proto_list);
+  sdp_set_access_protos(record, access_proto_list);
 
   // set the name, provider, and description
   sdp_set_info_attr(record, bt_service_name, bt_service_prov, bt_service_desc);
 
   // set the Service class ID
   service_class = sdp_list_append(0, &svc_uuid);
-  sdp_set_service_classes( record, service_class);
+  sdp_set_service_classes(record, service_class);
 
   // cleanup
-  sdp_data_free( channel );
-  sdp_list_free( l2cap_list, 0 );
-  sdp_list_free( rfcomm_list, 0 );
-  sdp_list_free( root_list, 0 );
-  sdp_list_free( access_proto_list, 0 );
-  sdp_list_free( service_class, 0 );
+  sdp_data_free(channel);
+  sdp_list_free(l2cap_list, 0);
+  sdp_list_free(rfcomm_list, 0);
+  sdp_list_free(root_list, 0);
+  sdp_list_free(access_proto_list, 0);
+  sdp_list_free(service_class, 0);
 
   // connect to the local SDP server, register the service record
-  sdp_session_t *session = sdp_connect( &bt_bdaddr_any, &bt_bdaddr_local, SDP_RETRY_IF_BUSY );
-  if(session == NULL)
+  sdp_session_t *session = sdp_connect(&bt_bdaddr_any, &bt_bdaddr_local, SDP_RETRY_IF_BUSY);
+  if (session == NULL)
   {
     CLog::Log(LOGERROR, "JSONRPC Server: Failed to connect to sdpd");
     closesocket(fd);
@@ -426,7 +426,7 @@ bool CTCPServer::InitializeBlue()
     return false;
   }
 
-  if(sdp_record_register(session, record, 0) < 0)
+  if (sdp_record_register(session, record, 0) < 0)
   {
     CLog::Log(LOGERROR, "JSONRPC Server: Failed to register record with error %d", errno);
     closesocket(fd);
@@ -472,8 +472,8 @@ void CTCPServer::Deinitialize()
   m_servers.clear();
 
 #ifdef HAVE_LIBBLUETOOTH
-  if(m_sdpd)
-    sdp_close( (sdp_session_t*)m_sdpd );
+  if (m_sdpd)
+    sdp_close((sdp_session_t*)m_sdpd);
   m_sdpd = NULL;
 #endif
 
index f0d1ddb..e2c3026 100644 (file)
@@ -18,6 +18,7 @@
  *
  */
 #include "system.h" //HAS_ZEROCONF define
+#include <assert.h>
 #include "Zeroconf.h"
 #include "settings/Settings.h"
 
index 58fd291..9bbd6d8 100644 (file)
@@ -472,6 +472,30 @@ static NPT_String TranslateWMPObjectId(NPT_String id)
     return id;
 }
 
+NPT_Result
+ObjectIDValidate(const NPT_String& id)
+{
+    if(id.Find("..") != -1)
+        return NPT_ERROR_NO_SUCH_FILE;
+    if(id.StartsWith("virtualpath://upnproot/"))
+        return NPT_SUCCESS;
+    else if(id.StartsWith("musicdb://"))
+        return NPT_SUCCESS;
+    else if(id.StartsWith("videodb://"))
+        return NPT_SUCCESS;
+    else if(id.StartsWith("library://video"))
+        return NPT_SUCCESS;
+    else if(id.StartsWith("sources://video"))
+        return NPT_SUCCESS;
+    else if(id.StartsWith("special://musicplaylists"))
+        return NPT_SUCCESS;
+    else if(id.StartsWith("special://profile/playlists"))
+        return NPT_SUCCESS;
+    else if(id.StartsWith("special://videoplaylists"))
+        return NPT_SUCCESS;
+    return NPT_ERROR_NO_SUCH_FILE;
+}
+
 /*----------------------------------------------------------------------
 |   CUPnPServer::OnBrowseMetadata
 +---------------------------------------------------------------------*/
@@ -497,6 +521,11 @@ CUPnPServer::OnBrowseMetadata(PLT_ActionReference&          action,
 
     CLog::Log(LOGINFO, "Received UPnP Browse Metadata request for object '%s'", (const char*)object_id);
 
+    if(NPT_FAILED(ObjectIDValidate(id))) {
+        action->SetError(701, "Incorrect ObjectID.");
+        return NPT_FAILURE;
+    }
+
     if (id.StartsWith("virtualpath://")) {
         id.TrimRight("/");
         if (id == "virtualpath://upnproot") {
@@ -578,6 +607,11 @@ CUPnPServer::OnBrowseDirectChildren(PLT_ActionReference&          action,
 
     CLog::Log(LOGINFO, "UPnP: Received Browse DirectChildren request for object '%s', with sort criteria %s", object_id, sort_criteria);
 
+    if(NPT_FAILED(ObjectIDValidate(parent_id))) {
+        action->SetError(701, "Incorrect ObjectID.");
+        return NPT_FAILURE;
+    }
+
     items.SetPath(CStdString(parent_id));
 
     // guard against loading while saving to the same cache file
index 8bb9edb..7fb7b18 100644 (file)
@@ -32,6 +32,7 @@
 #include "dialogs/GUIDialogYesNo.h"
 #include "utils/log.h"
 #include "system.h"
+#include "settings/Setting.h"
 #include "settings/Settings.h"
 #include "utils/SystemInfo.h"
 
index 5dd3e83..6545bed 100644 (file)
@@ -106,7 +106,7 @@ void CGUIDialogPeripheralSettings::CreateSettings()
               {
                 m_intTextSettings.insert(make_pair(CStdString(intSetting->GetId()), intSetting->GetValue()));
                 vector<pair<int, int> > entries;
-                SettingOptions::const_iterator entriesItr = intSetting->GetOptions().begin();
+                StaticIntegerSettingOptions::const_iterator entriesItr = intSetting->GetOptions().begin();
                 while (entriesItr != intSetting->GetOptions().end())
                 {
                   entries.push_back(make_pair(entriesItr->first, entriesItr->second));
index 1063a12..3e68ba8 100644 (file)
@@ -23,6 +23,7 @@
 #include "Application.h"
 #include "cores/AudioEngine/AEFactory.h"
 #include "input/KeyboardStat.h"
+#include "settings/Setting.h"
 #include "settings/Settings.h"
 #include "windowing/WindowingFactory.h"
 #include "utils/log.h"
index e484224..f503460 100644 (file)
@@ -32,6 +32,7 @@
 #include "music/tags/MusicInfoTag.h"
 #include "settings/AdvancedSettings.h"
 #include "settings/MediaSettings.h"
+#include "settings/Setting.h"
 #include "settings/Settings.h"
 #include "threads/SingleLock.h"
 #include "windows/GUIWindowPVR.h"
index c27f624..48e63a6 100644 (file)
@@ -24,6 +24,7 @@
  */
 
 #include "settings/AdvancedSettings.h"
+#include "settings/Setting.h"
 #include "settings/Settings.h"
 #include "guilib/GUIWindowManager.h"
 #include "dialogs/GUIDialogYesNo.h"
index dfd5204..95a4451 100644 (file)
@@ -28,6 +28,7 @@
 #include "utils/LangCodeExpander.h"
 #include "LangInfo.h"
 #include "profiles/ProfilesManager.h"
+#include "settings/Setting.h"
 #include "settings/Settings.h"
 #include "utils/StringUtils.h"
 #include "utils/SystemInfo.h"
index 40b1263..e6ea24a 100644 (file)
@@ -27,6 +27,7 @@
 #include "guilib/gui3d.h"
 #include "guilib/LocalizeStrings.h"
 #include "settings/AdvancedSettings.h"
+#include "settings/Setting.h"
 #include "settings/Settings.h"
 #include "threads/SingleLock.h"
 #include "utils/log.h"
@@ -204,6 +205,7 @@ bool CDisplaySettings::OnSettingChanging(const CSetting *setting)
     if (m_ignoreSettingChanging.find(make_pair(settingId, true)) == m_ignoreSettingChanging.end())
     {
       RESOLUTION newRes = RES_DESKTOP;
+      DisplayMode oldDisplayMode = GetCurrentDisplayMode();
       if (settingId == "videoscreen.resolution")
         newRes = (RESOLUTION)((CSettingInt*)setting)->GetValue();
       else if (settingId == "videoscreen.screen")
@@ -221,28 +223,30 @@ bool CDisplaySettings::OnSettingChanging(const CSetting *setting)
       SetCurrentResolution(newRes, save);
       g_graphicsContext.SetVideoResolution(newRes);
 
-      // check if this setting is temporarily blocked from showing the dialog
-      if (m_ignoreSettingChanging.find(make_pair(settingId, false)) == m_ignoreSettingChanging.end())
+      // check if the old or the new resolution was/is windowed
+      // in which case we don't show any prompt to the user
+      if (newRes != RES_WINDOW && oldDisplayMode != DM_WINDOWED)
       {
-        bool cancelled = false;
-        if (!CGUIDialogYesNo::ShowAndGetInput(13110, 13111, 20022, 20022, -1, -1, cancelled, 10000))
+        // check if this setting is temporarily blocked from showing the dialog
+        if (newRes != RES_WINDOW &&
+            m_ignoreSettingChanging.find(make_pair(settingId, false)) == m_ignoreSettingChanging.end())
         {
-          // we need to ignore the next OnSettingChanging() call for
-          // the same setting which is executed to broadcast that
-          // changing the setting has failed
-          m_ignoreSettingChanging.insert(make_pair(settingId, false));
-          return false;
+          bool cancelled = false;
+          if (!CGUIDialogYesNo::ShowAndGetInput(13110, 13111, 20022, 20022, -1, -1, cancelled, 10000))
+          {
+            // we need to ignore the next OnSettingChanging() call for
+            // the same setting which is executed to broadcast that
+            // changing the setting has failed
+            m_ignoreSettingChanging.insert(make_pair(settingId, false));
+            return false;
+          }
         }
+        else
+          m_ignoreSettingChanging.erase(make_pair(settingId, false));
       }
-      else
-        m_ignoreSettingChanging.erase(make_pair(settingId, false));
 
       if (settingId == "videoscreen.screen")
-      {
         m_ignoreSettingChanging.insert(make_pair("videoscreen.resolution", true));
-        if (CSettings::Get().GetSetting("videoscreen.screenmode")->IsVisible())
-          m_ignoreSettingChanging.insert(make_pair("videoscreen.screenmode", true));
-      }
     }
     else
       m_ignoreSettingChanging.erase(make_pair(settingId, true));
@@ -412,6 +416,14 @@ void CDisplaySettings::UpdateCalibrations()
   }
 }
 
+DisplayMode CDisplaySettings::GetCurrentDisplayMode() const
+{
+  if (GetCurrentResolution() == RES_WINDOW)
+    return DM_WINDOWED;
+
+  return GetCurrentResolutionInfo().iScreen;
+}
+
 RESOLUTION CDisplaySettings::GetResolutionFromString(const std::string &strResolution)
 {
   if (strResolution == "DESKTOP")
@@ -570,6 +582,16 @@ void CDisplaySettings::SettingOptionsScreensFiller(const CSetting *setting, std:
     int screen = CDisplaySettings::Get().GetResolutionInfo(RES_DESKTOP + idx).iScreen;
     list.push_back(make_pair(StringUtils::Format(g_localizeStrings.Get(241), screen + 1), screen));
   }
+
+  RESOLUTION res = CDisplaySettings::Get().GetDisplayResolution();
+
+  if (res == RES_WINDOW)
+    current = DM_WINDOWED;
+  else
+  {
+    RESOLUTION_INFO resInfo = CDisplaySettings::Get().GetResolutionInfo(res);
+    current = resInfo.iScreen;
+  }
 }
 
 void CDisplaySettings::SettingOptionsVerticalSyncsFiller(const CSetting *setting, std::vector< std::pair<std::string, int> > &list, int &current)
index be4f159..96d0cb0 100644 (file)
@@ -99,6 +99,8 @@ protected:
   CDisplaySettings const& operator=(CDisplaySettings const&);
   virtual ~CDisplaySettings();
 
+  DisplayMode GetCurrentDisplayMode() const;
+
   static RESOLUTION GetResolutionFromString(const std::string &strResolution);
   static std::string GetStringFromResolution(RESOLUTION resolution, float refreshrate = 0.0f);
   static RESOLUTION GetResolutionForScreen();
index 7a239d7..207bc1d 100644 (file)
@@ -73,4 +73,15 @@ public:
    \return True if the setting has been successfully updated otherwise false
    */
   virtual bool OnSettingUpdate(CSetting* &setting, const char *oldSettingId, const TiXmlNode *oldSettingNode) { return false; }
+
+  /*!
+   \brief The given property of the given setting has changed
+
+   This callback is triggered when a property (e.g. enabled or the list of
+   dynamic options) has changed.
+
+   \param setting The setting which has a changed property
+   \param propertyName The string representation of the changed property
+   */
+  virtual void OnSettingPropertyChanged(const CSetting *setting, const char *propertyName) { }
 };
index dc8bb65..2708c47 100644 (file)
@@ -21,6 +21,7 @@
 #include <sstream>
 
 #include "Setting.h"
+#include "SettingsManager.h"
 #include "threads/SingleLock.h"
 #include "utils/log.h"
 #include "utils/StringUtils.h"
 #define XML_ELM_DEFAULT     "default"
 #define XML_ELM_VALUE       "value"
 
-#define XML_ELM_CONSTRAINTS "constraints"
-#define XML_ELM_OPTIONS     "options"
-#define XML_ELM_MINIMUM     "minimum"
-#define XML_ELM_STEP        "step"
-#define XML_ELM_MAXIMUM     "maximum"
+#define XML_ELM_CONTROL       "control"
+#define XML_ELM_CONSTRAINTS   "constraints"
+#define XML_ELM_OPTIONS       "options"
+#define XML_ELM_OPTION        "option"
+#define XML_ELM_MINIMUM       "minimum"
+#define XML_ELM_STEP          "step"
+#define XML_ELM_MAXIMUM       "maximum"
+#define XML_ELM_DEPENDENCIES  "dependencies"
+#define XML_ELM_DEPENDENCY    "dependency"
+#define XML_ELM_UPDATES       "updates"
+#define XML_ELM_UPDATE        "update"
 
 CSetting::CSetting(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
   : ISetting(id, settingsManager),
@@ -81,7 +88,23 @@ bool CSetting::Deserialize(const TiXmlNode *node, bool update /* = false */)
   if (m_level < (int)SettingLevelBasic || m_level > (int)SettingLevelInternal)
     m_level = SettingLevelStandard;
 
-  const TiXmlElement *control = node->FirstChildElement("control");
+  const TiXmlNode *dependencies = node->FirstChild(XML_ELM_DEPENDENCIES);
+  if (dependencies != NULL)
+  {
+    const TiXmlNode *dependencyNode = dependencies->FirstChild(XML_ELM_DEPENDENCY);
+    while (dependencyNode != NULL)
+    {
+      CSettingDependency dependency(m_settingsManager);
+      if (dependency.Deserialize(dependencyNode))
+        m_dependencies.push_back(dependency);
+      else
+        CLog::Log(LOGWARNING, "CSetting: error reading <dependency> tag of \"%s\"", m_id.c_str());
+
+      dependencyNode = dependencyNode->NextSibling(XML_ELM_DEPENDENCY);
+    }
+  }
+
+  const TiXmlElement *control = node->FirstChildElement(XML_ELM_CONTROL);
   if (control != NULL)
   {
     if (!m_control.Deserialize(control, update) ||
@@ -90,28 +113,12 @@ bool CSetting::Deserialize(const TiXmlNode *node, bool update /* = false */)
       CLog::Log(LOGERROR, "CSetting: error reading <control> tag of \"%s\"", m_id.c_str());
       return false;
     }
-
-    const TiXmlNode *dependencies = control->FirstChild("dependencies");
-    if (dependencies != NULL)
-    {
-      const TiXmlNode *dependencyNode = dependencies->FirstChild("dependency");
-      while (dependencyNode != NULL)
-      {
-        CSettingDependency dependency(m_settingsManager);
-        if (dependency.Deserialize(dependencyNode))
-          m_dependencies.push_back(dependency);
-        else
-          CLog::Log(LOGWARNING, "CSetting: error reading <dependency> tag of \"%s\"", m_id.c_str());
-
-        dependencyNode = dependencyNode->NextSibling("dependency");
-      }
-    }
   }
 
-  const TiXmlNode *updates = node->FirstChild("updates");
+  const TiXmlNode *updates = node->FirstChild(XML_ELM_UPDATES);
   if (updates != NULL)
   {
-    const TiXmlElement *updateElem = updates->FirstChildElement("update");
+    const TiXmlElement *updateElem = updates->FirstChildElement(XML_ELM_UPDATE);
     while (updateElem != NULL)
     {
       CSettingUpdate update;
@@ -123,7 +130,7 @@ bool CSetting::Deserialize(const TiXmlNode *node, bool update /* = false */)
       else
         CLog::Log(LOGWARNING, "CSetting: error reading <update> tag of \"%s\"", m_id.c_str());
 
-      updateElem = updateElem->NextSiblingElement("update");
+      updateElem = updateElem->NextSiblingElement(XML_ELM_UPDATE);
     }
   }
 
@@ -137,6 +144,24 @@ bool CSetting::Deserialize(const TiXmlNode *node, bool update /* = false */)
   return true;
 }
   
+bool CSetting::IsEnabled() const
+{
+  bool enabled = true;
+  for (SettingDependencies::const_iterator depIt = m_dependencies.begin(); depIt != m_dependencies.end(); ++depIt)
+  {
+    if (depIt->GetType() != SettingDependencyTypeEnable)
+      continue;
+
+    if (!depIt->Check())
+    {
+      enabled = false;
+      break;
+    }
+  }
+
+  return enabled;
+}
+
 bool CSetting::OnSettingChanging(const CSetting *setting)
 {
   if (m_callback == NULL)
@@ -169,6 +194,14 @@ bool CSetting::OnSettingUpdate(CSetting* &setting, const char *oldSettingId, con
   return m_callback->OnSettingUpdate(setting, oldSettingId, oldSettingNode);
 }
 
+void CSetting::OnSettingPropertyChanged(const CSetting *setting, const char *propertyName)
+{
+  if (m_callback == NULL)
+    return;
+
+  m_callback->OnSettingPropertyChanged(setting, propertyName);
+}
+
 void CSetting::Copy(const CSetting &setting)
 {
   SetVisible(setting.IsVisible());
@@ -372,7 +405,7 @@ CSettingInt::CSettingInt(const std::string &id, int label, int value, int minimu
   m_control.SetAttributes(SettingControlAttributeNone);
 }
 
-CSettingInt::CSettingInt(const std::string &id, int label, int value, const SettingOptions &options, CSettingsManager *settingsManager /* = NULL */)
+CSettingInt::CSettingInt(const std::string &id, int label, int value, const StaticIntegerSettingOptions &options, CSettingsManager *settingsManager /* = NULL */)
   : CSetting(id, settingsManager),
     m_value(value), m_default(value),
     m_min(0), m_step(1), m_max(0),
@@ -409,6 +442,13 @@ bool CSettingInt::Deserialize(const TiXmlNode *node, bool update /* = false */)
     return false;
   }
 
+  if (m_control.GetFormat() == SettingControlFormatString)
+  {
+    const TiXmlNode *control = node->FirstChild(XML_ELM_CONTROL);
+    if (control != NULL)
+      XMLUtils::GetInt(control, "formatlabel", m_format);
+  }
+
   const TiXmlNode *constraints = node->FirstChild(XML_ELM_CONSTRAINTS);
   if (constraints != NULL)
   {
@@ -421,7 +461,7 @@ bool CSettingInt::Deserialize(const TiXmlNode *node, bool update /* = false */)
       else
       {
         m_options.clear();
-        const TiXmlElement *optionElement = options->FirstChildElement("option");
+        const TiXmlElement *optionElement = options->FirstChildElement(XML_ELM_OPTION);
         while (optionElement != NULL)
         {
           std::pair<int, int> entry;
@@ -431,7 +471,7 @@ bool CSettingInt::Deserialize(const TiXmlNode *node, bool update /* = false */)
             m_options.push_back(entry);
           }
 
-          optionElement = optionElement->NextSiblingElement("option");
+          optionElement = optionElement->NextSiblingElement(XML_ELM_OPTION);
         }
       }
     }
@@ -449,16 +489,11 @@ bool CSettingInt::Deserialize(const TiXmlNode *node, bool update /* = false */)
     // get maximum
     XMLUtils::GetInt(constraints, XML_ELM_MAXIMUM, m_max);
 
-    if (m_control.GetFormat() == SettingControlFormatString)
+    if (m_control.GetFormat() == SettingControlFormatString && m_labelMin < 0)
     {
-      XMLUtils::GetInt(constraints, "formatlabel", m_format);
-
-      if (m_labelMin < 0)
-      {
-        CStdString strFormat;
-        if (XMLUtils::GetString(constraints, "format", strFormat) && !strFormat.empty())
-          m_strFormat = strFormat;
-      }
+      CStdString strFormat;
+      if (XMLUtils::GetString(constraints, "format", strFormat) && !strFormat.empty())
+        m_strFormat = strFormat;
     }
   }
 
@@ -503,7 +538,7 @@ bool CSettingInt::CheckValidity(int value) const
   {
     //if the setting is an std::map, check if we got a valid value before assigning it
     bool ok = false;
-    for (SettingOptions::const_iterator it = m_options.begin(); it != m_options.end(); it++)
+    for (StaticIntegerSettingOptions::const_iterator it = m_options.begin(); it != m_options.end(); it++)
     {
       if (it->second == value)
       {
@@ -561,6 +596,55 @@ void CSettingInt::SetDefault(int value)
     m_value = m_default;
 }
 
+SettingOptionsType CSettingInt::GetOptionsType() const
+{
+  if (!m_options.empty())
+    return SettingOptionsTypeStatic;
+  if (!m_optionsFiller.empty())
+    return SettingOptionsTypeDynamic;
+
+  return SettingOptionsTypeNone;
+}
+
+DynamicIntegerSettingOptions CSettingInt::UpdateDynamicOptions()
+{
+  DynamicIntegerSettingOptions options;
+  if (m_optionsFiller.empty() || m_settingsManager == NULL)
+    return options;
+
+  IntegerSettingOptionsFiller filler = (IntegerSettingOptionsFiller)m_settingsManager->GetSettingOptionsFiller(this);
+  if (filler == NULL)
+    return options;
+
+  int bestMatchingValue = m_value;
+  filler(this, options, bestMatchingValue);
+
+  if (bestMatchingValue != m_value)
+    SetValue(bestMatchingValue);
+
+  bool changed = m_dynamicOptions.size() != options.size();
+  if (!changed)
+  {
+    for (size_t index = 0; index < options.size(); index++)
+    {
+      if (options[index].first.compare(m_dynamicOptions[index].first) != 0 ||
+          options[index].second != m_dynamicOptions[index].second)
+      {
+        changed = true;
+        break;
+      }
+    }
+  }
+
+  if (changed)
+  {
+    m_dynamicOptions = options;
+    OnSettingPropertyChanged(this, "options");
+  }
+
+  return options;
+}
+
 void CSettingInt::copy(const CSettingInt &setting)
 {
   CSetting::Copy(setting);
@@ -792,25 +876,20 @@ bool CSettingString::Deserialize(const TiXmlNode *node, bool update /* = false *
     CLog::Log(LOGERROR, "CSettingString: invalid <control> of \"%s\"", m_id.c_str());
     return false;
   }
-    
-  // get allowempty (needs to be parsed before parsing the default value)
-  XMLUtils::GetBoolean(node, "allowempty", m_allowEmpty);
-  // get heading
-  XMLUtils::GetInt(node, "heading", m_heading);
-    
-  // get the default value
-  CStdString value;
-  if (XMLUtils::GetString(node, XML_ELM_DEFAULT, value))
-    m_value = m_default = value;
-  else if (!update && !m_allowEmpty)
+
+  const TiXmlNode *control = node->FirstChild(XML_ELM_CONTROL);
+  if (control != NULL)
   {
-    CLog::Log(LOGERROR, "CSettingString: error reading the default value of \"%s\"", m_id.c_str());
-    return false;
+    // get heading
+    XMLUtils::GetInt(control, "heading", m_heading);
   }
 
   const TiXmlNode *constraints = node->FirstChild(XML_ELM_CONSTRAINTS);
   if (constraints != NULL)
   {
+    // get allowempty (needs to be parsed before parsing the default value)
+    XMLUtils::GetBoolean(constraints, "allowempty", m_allowEmpty);
+
     // get the entries
     const TiXmlNode *options = constraints->FirstChild(XML_ELM_OPTIONS);
     if (options != NULL && options->FirstChild() != NULL &&
@@ -818,6 +897,16 @@ bool CSettingString::Deserialize(const TiXmlNode *node, bool update /* = false *
       m_optionsFiller = options->FirstChild()->ValueStr();
   }
 
+  // get the default value
+  CStdString value;
+  if (XMLUtils::GetString(node, XML_ELM_DEFAULT, value))
+    m_value = m_default = value;
+  else if (!update && !m_allowEmpty)
+  {
+    CLog::Log(LOGERROR, "CSettingString: error reading the default value of \"%s\"", m_id.c_str());
+    return false;
+  }
+
   return true;
 }
 
@@ -868,6 +957,55 @@ void CSettingString::SetDefault(const std::string &value)
     m_value = m_default;
 }
 
+SettingOptionsType CSettingString::GetOptionsType() const
+{
+  if (!m_optionsFiller.empty())
+    return SettingOptionsTypeDynamic;
+
+  return SettingOptionsTypeNone;
+}
+
+DynamicStringSettingOptions CSettingString::UpdateDynamicOptions()
+{
+  DynamicStringSettingOptions options;
+  if (m_optionsFiller.empty() || m_settingsManager == NULL)
+    return options;
+
+  StringSettingOptionsFiller filler = (StringSettingOptionsFiller)m_settingsManager->GetSettingOptionsFiller(this);
+  if (filler == NULL)
+    return options;
+
+  std::string bestMatchingValue = m_value;
+  filler(this, options, bestMatchingValue);
+
+  bool updated = false;
+  if (bestMatchingValue != m_value)
+    updated = SetValue(bestMatchingValue);
+
+  // check if the list of items has changed
+  bool changed = m_dynamicOptions.size() != options.size();
+  if (!changed)
+  {
+    for (size_t index = 0; index < options.size(); index++)
+    {
+      if (options[index].first.compare(m_dynamicOptions[index].first) != 0 ||
+          options[index].second.compare(m_dynamicOptions[index].second) != 0)
+      {
+        changed = true;
+        break;
+      }
+    }
+  }
+
+  if (changed)
+  {
+    m_dynamicOptions = options;
+    OnSettingPropertyChanged(this, "options");
+  }
+
+  return options;
+}
+
 void CSettingString::copy(const CSettingString &setting)
 {
   CSetting::Copy(setting);
index deea23e..2dbb83f 100644 (file)
@@ -56,8 +56,18 @@ typedef enum {
   SettingLevelInternal
 } SettingLevel;
 
-typedef std::pair<int, int> SettingOption;
-typedef std::vector<SettingOption> SettingOptions;
+typedef enum {
+  SettingOptionsTypeNone = 0,
+  SettingOptionsTypeStatic,
+  SettingOptionsTypeDynamic
+} SettingOptionsType;
+
+typedef std::pair<int, int> StaticIntegerSettingOption;
+typedef std::vector<StaticIntegerSettingOption> StaticIntegerSettingOptions;
+typedef std::pair<std::string, int> DynamicIntegerSettingOption;
+typedef std::vector<DynamicIntegerSettingOption> DynamicIntegerSettingOptions;
+typedef std::pair<std::string, std::string> DynamicStringSettingOption;
+typedef std::vector<DynamicStringSettingOption> DynamicStringSettingOptions;
 
 /*!
  \ingroup settings
@@ -83,6 +93,7 @@ public:
 
   int GetLabel() const { return m_label; }
   int GetHelp() const { return m_help; }
+  bool IsEnabled() const;
   SettingLevel GetLevel() const { return m_level; }
   const CSettingControl& GetControl() const { return m_control; }
   const SettingDependencies& GetDependencies() const { return m_dependencies; }
@@ -95,6 +106,7 @@ protected:
   virtual void OnSettingChanged(const CSetting *setting);
   virtual void OnSettingAction(const CSetting *setting);
   virtual bool OnSettingUpdate(CSetting* &setting, const char *oldSettingId, const TiXmlNode *oldSettingNode);
+  virtual void OnSettingPropertyChanged(const CSetting *setting, const char *propertyName);
 
   void Copy(const CSetting &setting);
 
@@ -158,7 +170,7 @@ public:
   CSettingInt(const std::string &id, const CSettingInt &setting);
   CSettingInt(const std::string &id, int label, int value, int minimum, int step, int maximum, int format, int minimumLabel, CSettingsManager *settingsManager = NULL);
   CSettingInt(const std::string &id, int label, int value, int minimum, int step, int maximum, const std::string &format, CSettingsManager *settingsManager = NULL);
-  CSettingInt(const std::string &id, int label, int value, const SettingOptions &options, CSettingsManager *settingsManager = NULL);
+  CSettingInt(const std::string &id, int label, int value, const StaticIntegerSettingOptions &options, CSettingsManager *settingsManager = NULL);
   virtual ~CSettingInt() { }
 
   virtual bool Deserialize(const TiXmlNode *node, bool update = false);
@@ -183,8 +195,10 @@ public:
   int GetFormat() const { return m_format; }
   int GetMinimumLabel() const { return m_labelMin; }
   const std::string& GetFormatString() const { return m_strFormat; }
-  const SettingOptions& GetOptions() const { return m_options; }
+  SettingOptionsType GetOptionsType() const;
+  const StaticIntegerSettingOptions& GetOptions() const { return m_options; }
   const std::string& GetOptionsFiller() const { return m_optionsFiller; }
+  DynamicIntegerSettingOptions UpdateDynamicOptions();
 
 private:
   void copy(const CSettingInt &setting);
@@ -198,8 +212,9 @@ private:
   int m_format;
   int m_labelMin;
   std::string m_strFormat;
-  SettingOptions m_options;
+  StaticIntegerSettingOptions m_options;
   std::string m_optionsFiller;
+  DynamicIntegerSettingOptions m_dynamicOptions;
 };
 
 /*!
@@ -275,7 +290,9 @@ public:
   virtual bool AllowEmpty() const { return m_allowEmpty; }
   virtual int GetHeading() const { return m_heading; }
 
+  SettingOptionsType GetOptionsType() const;
   const std::string& GetOptionsFiller() const { return m_optionsFiller; }
+  DynamicStringSettingOptions UpdateDynamicOptions();
 
 protected:
   virtual void copy(const CSettingString &setting);
@@ -285,6 +302,7 @@ protected:
   bool m_allowEmpty;
   int m_heading;
   std::string m_optionsFiller;
+  DynamicStringSettingOptions m_dynamicOptions;
 };
 
 /*!
index bcf6dd3..4a60657 100644 (file)
@@ -68,15 +68,19 @@ bool CSettingAddon::Deserialize(const TiXmlNode *node, bool update /* = false */
     CLog::Log(LOGERROR, "CSettingAddon: error reading the default value of \"%s\"", m_id.c_str());
     return false;
   }
-    
-  // get the addon type
+
+  bool ok = false;
   CStdString strAddonType;
-  bool ok = XMLUtils::GetString(node, "addontype", strAddonType);
-  if (ok)
+  const TiXmlNode *constraints = node->FirstChild("constraints");
+  if (constraints != NULL)
   {
-    m_addonType = ADDON::TranslateType(strAddonType);
-    if (m_addonType == ADDON::ADDON_UNKNOWN)
-      ok = false;
+    // get the addon type
+    if (XMLUtils::GetString(constraints, "addontype", strAddonType))
+    {
+      m_addonType = ADDON::TranslateType(strAddonType);
+      if (m_addonType != ADDON::ADDON_UNKNOWN)
+        ok = true;
+    }
   }
 
   if (!ok && !update)
index 508a511..f98cb4d 100644 (file)
@@ -457,21 +457,6 @@ CSettingSection* CSettings::GetSection(const std::string &section) const
   return m_settingsManager->GetSection(section);
 }
 
-SettingDependencyMap CSettings::GetDependencies(const std::string &id) const
-{
-  return m_settingsManager->GetDependencies(id);
-}
-
-SettingDependencyMap CSettings::GetDependencies(const CSetting *setting) const
-{
-  return m_settingsManager->GetDependencies(setting);
-}
-
-void* CSettings::GetSettingOptionsFiller(const CSetting *setting)
-{
-  return m_settingsManager->GetSettingOptionsFiller(setting);
-}
-
 bool CSettings::GetBool(const std::string &id) const
 {
   return m_settingsManager->GetBool(id);
index 96f334c..ea217a1 100644 (file)
@@ -24,9 +24,9 @@
 
 #include "settings/ISettingCallback.h"
 #include "settings/ISettingCreator.h"
-#include "settings/Setting.h"
 #include "threads/CriticalSection.h"
 
+class CSetting;
 class CSettingSection;
 class CSettingsManager;
 class TiXmlElement;
@@ -152,39 +152,6 @@ public:
    \return Setting section with the given identifier or NULL if the identifier is unknown
    */
   CSettingSection* GetSection(const std::string &section) const;
-  /*!
-   \brief Gets a map of settings (and their dependencies) which depend on
-   the setting with the given identifier.
-
-   It is important to note that the returned dependencies are not the
-   dependencies of the setting with the given identifier but the settings
-   (and their dependencies) which depend on the setting with the given
-   identifier.
-
-   \param id Setting identifier
-   \return Map of settings (and their dependencies) which depend on the setting with the given identifier
-   */
-  SettingDependencyMap GetDependencies(const std::string &id) const;
-  /*!
-   \brief Gets a map of settings (and their dependencies) which depend on
-   the given setting.
-
-   It is important to note that the returned dependencies are not the
-   dependencies of the given setting but the settings (and their dependencies)
-   which depend on the given setting.
-
-   \param setting Setting object
-   \return Map of settings (and their dependencies) which depend on the given setting
-   */
-  SettingDependencyMap GetDependencies(const CSetting *setting) const;
-  /*!
-   \brief Gets the implementation of the setting options filler used by the
-   given setting.
-
-   \param setting Setting object
-   \return Implementation of the setting options filler (either IntegerSettingOptionsFiller or StringSettingOptionsFiller)
-   */
-  void* GetSettingOptionsFiller(const CSetting *setting);
 
   /*!
    \brief Gets the boolean value of the setting with the given identifier.
index 3bb1e39..54c9626 100644 (file)
@@ -132,7 +132,19 @@ bool CSettingsManager::Initialize(const TiXmlElement *root)
         if (setting == m_settings.end())
           continue;
 
-        setting->second.dependencies[itSettingDep->first].push_back(*depIt);
+        bool newDep = true;
+        SettingDependencies &settingDeps = setting->second.dependencies[itSettingDep->first];
+        for (SettingDependencies::const_iterator itDeps = settingDeps.begin(); itDeps != settingDeps.end(); ++itDeps)
+        {
+          if (itDeps->GetType() == depIt->GetType())
+          {
+            newDep = false;
+            break;
+          }
+        }
+
+        if (newDep)
+          settingDeps.push_back(*depIt);
       }
     }
   }
@@ -665,6 +677,14 @@ void CSettingsManager::OnSettingChanged(const CSetting *setting)
         callback != settingData.callbacks.end();
         callback++)
     (*callback)->OnSettingChanged(setting);
+
+  // now handle any settings which depend on the changed setting
+  const SettingDependencyMap& deps = GetDependencies(setting);
+  for (SettingDependencyMap::const_iterator depsIt = deps.begin(); depsIt != deps.end(); depsIt++)
+  {
+    for (SettingDependencies::const_iterator depIt = depsIt->second.begin(); depIt != depsIt->second.end(); depIt++)
+      UpdateSettingByDependency(depsIt->first, *depIt);
+  }
 }
 
 void CSettingsManager::OnSettingAction(const CSetting *setting)
@@ -710,6 +730,26 @@ bool CSettingsManager::OnSettingUpdate(CSetting* &setting, const char *oldSettin
   return ret;
 }
 
+void CSettingsManager::OnSettingPropertyChanged(const CSetting *setting, const char *propertyName)
+{
+  CSingleLock lock(m_critical);
+  if (!m_loaded || setting == NULL)
+    return;
+
+  SettingMap::const_iterator settingIt = m_settings.find(setting->GetId());
+  if (settingIt == m_settings.end())
+    return;
+
+  Setting settingData = settingIt->second;
+  // now that we have a copy of the setting's data, we can leave the lock
+  lock.Leave();
+
+  for (CallbackSet::iterator callback = settingData.callbacks.begin();
+        callback != settingData.callbacks.end();
+        callback++)
+    (*callback)->OnSettingPropertyChanged(setting, propertyName);
+}
+
 CSetting* CSettingsManager::CreateSetting(const std::string &settingType, const std::string &settingId, CSettingsManager *settingsManager /* = NULL */) const
 {
   if (StringUtils::EqualsNoCase(settingType, "boolean"))
@@ -871,6 +911,45 @@ bool CSettingsManager::UpdateSetting(const TiXmlNode *node, CSetting *setting, c
   return updated;
 }
 
+void CSettingsManager::UpdateSettingByDependency(const std::string &settingId, const CSettingDependency &dependency)
+{
+  CSetting *setting = GetSetting(settingId);
+  if (setting == NULL)
+    return;
+
+  switch (dependency.GetType())
+  {
+    case SettingDependencyTypeEnable:
+      // just trigger the property changed callback and a call to
+      // CSetting::IsEnabled() will automatically determine the new
+      // enabled state
+      OnSettingPropertyChanged(setting, "enabled");
+      break;
+
+    case SettingDependencyTypeUpdate:
+    {
+      SettingType type = (SettingType)setting->GetType();
+      if (type == SettingTypeInteger)
+      {
+        CSettingInt *settingInt = ((CSettingInt*)setting);
+        if (settingInt->GetOptionsType() == SettingOptionsTypeDynamic)
+          settingInt->UpdateDynamicOptions();
+      }
+      else if (type == SettingTypeString)
+      {
+        CSettingString *settingString = ((CSettingString*)setting);
+        if (settingString->GetOptionsType() == SettingOptionsTypeDynamic)
+          settingString->UpdateDynamicOptions();
+      }
+      break;
+    }
+
+    case SettingDependencyTypeNone:
+    default:
+      break;
+  }
+}
+
 void CSettingsManager::RegisterSettingOptionsFiller(const std::string &identifier, void *filler, SettingOptionsFillerType type)
 {
   SettingOptionsFillerMap::const_iterator it = m_optionsFillers.find(identifier);
index 54f9fa2..a8b923d 100644 (file)
@@ -38,12 +38,8 @@ class CSettingUpdate;
 class TiXmlElement;
 class TiXmlNode;
 
-typedef std::pair<std::string, int> IntegerSettingOption;
-typedef std::pair<std::string, std::string> StringSettingOption;
-typedef std::vector<IntegerSettingOption> IntegerSettingOptions;
-typedef std::vector<StringSettingOption> StringSettingOptions;
-typedef void (*IntegerSettingOptionsFiller)(const CSetting *setting, IntegerSettingOptions &list, int &current);
-typedef void (*StringSettingOptionsFiller)(const CSetting *setting, StringSettingOptions &list, std::string &current);
+typedef void (*IntegerSettingOptionsFiller)(const CSetting *setting, std::vector< std::pair<std::string, int> > &list, int &current);
+typedef void (*StringSettingOptionsFiller)(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string &current);
 
 /*!
  \ingroup settings
@@ -353,6 +349,7 @@ private:
   virtual void OnSettingChanged(const CSetting *setting);
   virtual void OnSettingAction(const CSetting *setting);
   virtual bool OnSettingUpdate(CSetting* &setting, const char *oldSettingId, const TiXmlNode *oldSettingNode);
+  virtual void OnSettingPropertyChanged(const CSetting *setting, const char *propertyName);
 
   // implementation of ISettingsHandler
   virtual bool OnSettingsLoading();
@@ -370,6 +367,7 @@ private:
   bool LoadSetting(const TiXmlNode *node, CSetting *setting);
   bool UpdateSettings(const TiXmlNode *root);
   bool UpdateSetting(const TiXmlNode *node, CSetting *setting, const CSettingUpdate& update);
+  void UpdateSettingByDependency(const std::string &settingId, const CSettingDependency &dependency);
 
   typedef enum {
     SettingOptionsFillerTypeNone = 0,
index 7313b49..75ec3cd 100644 (file)
@@ -44,7 +44,11 @@ CGUIControlBaseSetting::CGUIControlBaseSetting(int id, CSetting *pSetting)
   m_id = id;
   m_pSetting = pSetting;
   m_delayed = false;
-  m_enabled = true;
+}
+
+bool CGUIControlBaseSetting::IsEnabled() const
+{
+  return m_pSetting != NULL && m_pSetting->IsEnabled();
 }
 
 void CGUIControlBaseSetting::Update()
@@ -86,60 +90,7 @@ CGUIControlSpinExSetting::CGUIControlSpinExSetting(CGUISpinControlEx *pSpin, int
   m_pSpin = pSpin;
   m_pSpin->SetID(id);
   
-  switch (pSetting->GetControl().GetFormat())
-  {
-    case SettingControlFormatNumber:
-    {
-      CSettingNumber *pSettingNumber = (CSettingNumber *)pSetting;
-      m_pSpin->SetType(SPIN_CONTROL_TYPE_FLOAT);
-      m_pSpin->SetFloatRange((float)pSettingNumber->GetMinimum(), (float)pSettingNumber->GetMaximum());
-      m_pSpin->SetFloatInterval((float)pSettingNumber->GetStep());
-      break;
-    }
-
-    case SettingControlFormatInteger:
-    case SettingControlFormatString:
-    {
-      m_pSpin->SetType(SPIN_CONTROL_TYPE_TEXT);
-      m_pSpin->Clear();
-
-      if (pSetting->GetType() == SettingTypeInteger)
-      {
-        CSettingInt *pSettingInt = (CSettingInt *)pSetting;
-
-        const SettingOptions& options = pSettingInt->GetOptions();
-        if (!options.empty())
-        {
-          for (SettingOptions::const_iterator it = options.begin(); it != options.end(); it++)
-            m_pSpin->AddLabel(g_localizeStrings.Get(it->first), it->second);
-          m_pSpin->SetValue(pSettingInt->GetValue());
-        }
-        else
-        {
-          std::string strLabel;
-          int i = pSettingInt->GetMinimum();
-          if (pSettingInt->GetMinimumLabel() > -1)
-          {
-            strLabel = g_localizeStrings.Get(pSettingInt->GetMinimumLabel());
-            m_pSpin->AddLabel(strLabel, pSettingInt->GetMinimum());
-            i += pSettingInt->GetStep();
-          }
-          for (; i <= pSettingInt->GetMaximum(); i += pSettingInt->GetStep())
-          {
-            if (pSettingInt->GetFormat() > -1)
-              strLabel = StringUtils::Format(g_localizeStrings.Get(pSettingInt->GetFormat()).c_str(), i);
-            else
-              strLabel = StringUtils::Format(pSettingInt->GetFormatString().c_str(), i);
-            m_pSpin->AddLabel(strLabel, i);
-          }
-        }
-      }
-      break;
-    }
-
-    default:
-      break;
-  }
+  FillControl();
 }
 
 CGUIControlSpinExSetting::~CGUIControlSpinExSetting()
@@ -176,27 +127,111 @@ void CGUIControlSpinExSetting::Update()
 
   CGUIControlBaseSetting::Update();
 
-  switch (m_pSetting->GetType())
+  FillControl();
+
+  // disable the spinner if it has less than two items
+  if (!m_pSpin->IsDisabled() && (m_pSpin->GetMaximum() - m_pSpin->GetMinimum()) == 0)
+    m_pSpin->SetEnabled(false);
+}
+
+void CGUIControlSpinExSetting::FillControl()
+{
+  m_pSpin->Clear();
+
+  switch (m_pSetting->GetControl().GetFormat())
   {
-    case SettingTypeInteger:
-      m_pSpin->SetValue(((CSettingInt *)m_pSetting)->GetValue());
+    case SettingControlFormatNumber:
+    {
+      CSettingNumber *pSettingNumber = (CSettingNumber *)m_pSetting;
+      m_pSpin->SetType(SPIN_CONTROL_TYPE_FLOAT);
+      m_pSpin->SetFloatRange((float)pSettingNumber->GetMinimum(), (float)pSettingNumber->GetMaximum());
+      m_pSpin->SetFloatInterval((float)pSettingNumber->GetStep());
+
+      m_pSpin->SetFloatValue((float)pSettingNumber->GetValue());
       break;
+    }
 
-    case SettingTypeNumber:
-      m_pSpin->SetFloatValue((float)((CSettingNumber *)m_pSetting)->GetValue());
+    case SettingControlFormatInteger:
+    {
+      m_pSpin->SetType(SPIN_CONTROL_TYPE_TEXT);
+      FillIntegerSettingControl();
       break;
-      
-    case SettingTypeString:
-      m_pSpin->SetStringValue(((CSettingString *)m_pSetting)->GetValue());
+    }
+
+    case SettingControlFormatString:
+    {
+      m_pSpin->SetType(SPIN_CONTROL_TYPE_TEXT);
+
+      if (m_pSetting->GetType() == SettingTypeInteger)
+        FillIntegerSettingControl();
+      else if (m_pSetting->GetType() == SettingTypeString)
+      {
+        CSettingString *pSettingString = (CSettingString *)m_pSetting;
+        if (pSettingString->GetOptionsType() == SettingOptionsTypeDynamic)
+        {
+          DynamicStringSettingOptions options = pSettingString->UpdateDynamicOptions();
+          for (std::vector< std::pair<std::string, std::string> >::const_iterator option = options.begin(); option != options.end(); option++)
+            m_pSpin->AddLabel(option->first, option->second);
+
+          m_pSpin->SetStringValue(pSettingString->GetValue());
+        }
+      }
       break;
-      
+    }
+
     default:
       break;
   }
+}
 
-  // disable the spinner if it has less than two items
-  if (!m_pSpin->IsDisabled() && (m_pSpin->GetMaximum() - m_pSpin->GetMinimum()) == 0)
-    m_pSpin->SetEnabled(false);
+void CGUIControlSpinExSetting::FillIntegerSettingControl()
+{
+  CSettingInt *pSettingInt = (CSettingInt *)m_pSetting;
+  switch (pSettingInt->GetOptionsType())
+  {
+    case SettingOptionsTypeStatic:
+    {
+      const StaticIntegerSettingOptions& options = pSettingInt->GetOptions();
+      for (StaticIntegerSettingOptions::const_iterator it = options.begin(); it != options.end(); it++)
+        m_pSpin->AddLabel(g_localizeStrings.Get(it->first), it->second);
+
+      break;
+    }
+
+    case SettingOptionsTypeDynamic:
+    {
+      DynamicIntegerSettingOptions options = pSettingInt->UpdateDynamicOptions();
+      for (DynamicIntegerSettingOptions::const_iterator option = options.begin(); option != options.end(); option++)
+        m_pSpin->AddLabel(option->first, option->second);
+
+      break;
+    }
+
+    case SettingOptionsTypeNone:
+    default:
+    {
+      std::string strLabel;
+      int i = pSettingInt->GetMinimum();
+      if (pSettingInt->GetMinimumLabel() > -1)
+      {
+        strLabel = g_localizeStrings.Get(pSettingInt->GetMinimumLabel());
+        m_pSpin->AddLabel(strLabel, pSettingInt->GetMinimum());
+        i += pSettingInt->GetStep();
+      }
+      for (; i <= pSettingInt->GetMaximum(); i += pSettingInt->GetStep())
+      {
+        if (pSettingInt->GetFormat() > -1)
+          strLabel = StringUtils::Format(g_localizeStrings.Get(pSettingInt->GetFormat()).c_str(), i);
+        else
+          strLabel = StringUtils::Format(pSettingInt->GetFormatString().c_str(), i);
+        m_pSpin->AddLabel(strLabel, i);
+      }
+
+      break;
+    }
+  }
+
+  m_pSpin->SetValue(pSettingInt->GetValue());
 }
 
 CGUIControlButtonSetting::CGUIControlButtonSetting(CGUIButtonControl *pButton, int id, CSetting *pSetting)
index c95195a..a965692 100644 (file)
@@ -58,17 +58,6 @@ public:
   bool IsDelayed() const { return m_delayed; }
 
   /*!
-   \brief Specifies that this setting is enabled or disabled
-   This is used for settings which are enabled/disabled based
-   on conditions involving other settings and their values.
-   It must not be confused with a setting spin control being
-   disabled because it contains less than two items.
-   \param enabled Whether the setting is enabled or disabled
-   \sa IsEnabled()
-   */
-  void SetEnabled(bool enabled) { m_enabled = enabled; }
-
-  /*!
    \brief Returns whether this setting is enabled or disabled
    This state is independent of the real enabled state of a
    setting control but represents the enabled state of the
@@ -76,7 +65,7 @@ public:
    \return true if the setting is enabled otherwise false
    \sa SetEnabled()
    */
-  bool IsEnabled() const { return m_enabled; }
+  bool IsEnabled() const;
 
   virtual CGUIControl* GetControl() { return NULL; }
   virtual bool OnClick() { return false; }
@@ -86,7 +75,6 @@ protected:
   int m_id;
   CSetting* m_pSetting;
   bool m_delayed;
-  bool m_enabled;
 };
 
 class CGUIControlRadioButtonSetting : public CGUIControlBaseSetting
@@ -116,6 +104,8 @@ public:
   virtual void Update();
   virtual void Clear() { m_pSpin = NULL; }
 private:
+  void FillControl();
+  void FillIntegerSettingControl();
   CGUISpinControlEx *m_pSpin;
 };
 
index bd9535f..3b56ef5 100644 (file)
 
 using namespace std;
 
+#if defined(TARGET_WINDOWS) // disable 4355: 'this' used in base member initializer list
+#pragma warning(push)
+#pragma warning(disable: 4355)
+#endif // defined(TARGET_WINDOWS)
+
 #define SETTINGS_PICTURES               WINDOW_SETTINGS_MYPICTURES - WINDOW_SETTINGS_START
 #define SETTINGS_PROGRAMS               WINDOW_SETTINGS_MYPROGRAMS - WINDOW_SETTINGS_START
 #define SETTINGS_WEATHER                WINDOW_SETTINGS_MYWEATHER - WINDOW_SETTINGS_START
@@ -162,7 +167,7 @@ bool CGUIWindowSettingsCategory::OnMessage(CGUIMessage &message)
         {
           m_delayedTimer.Stop();
           CGUIMessage message(GUI_MSG_UPDATE_ITEM, GetID(), GetID(), 1); // param1 = 1 for "reset the control if it's invalid"
-          OnMessage(message);
+          g_windowManager.SendThreadMessage(message, GetID());
         }
 
         // check if we have changed the category and need to create new setting controls
@@ -514,68 +519,19 @@ void CGUIWindowSettingsCategory::OnSettingChanged(const CSetting *setting)
   if (pControl == NULL)
     return;
 
-  const SettingDependencyMap& deps = m_settings.GetDependencies(setting->GetId());
-  for (SettingDependencyMap::const_iterator depsIt = deps.begin(); depsIt != deps.end(); depsIt++)
-  {
-    for (SettingDependencies::const_iterator depIt = depsIt->second.begin(); depIt != depsIt->second.end(); depIt++)
-      UpdateControl(depsIt->first, *depIt);
-  }
-  
-  // update GUI of the changed setting as the change could have been triggered by something else
   pControl->Update();
 }
 
-void CGUIWindowSettingsCategory::UpdateControl(const std::string &dependingSetting, const CSettingDependency &dependency)
+void CGUIWindowSettingsCategory::OnSettingPropertyChanged(const CSetting *setting, const char *propertyName)
 {
-  if (dependingSetting.empty())
-    return;
-
-  BaseSettingControlPtr pControl = GetSettingControl(dependingSetting);
-  if (pControl == NULL)
+  if (setting == NULL || propertyName == NULL)
     return;
 
-  CSetting *pSetting = pControl->GetSetting();
-  if (pSetting == NULL)
+  BaseSettingControlPtr settingControl = GetSettingControl(setting->GetId());
+  if (settingControl == NULL)
     return;
 
-  CheckDependency(pControl, dependency);
-
-  const SettingDependencyMap& deps = m_settings.GetDependencies(pSetting->GetId());
-  for (SettingDependencyMap::const_iterator depsIt = deps.begin(); depsIt != deps.end(); depsIt++)
-  {
-    for (SettingDependencies::const_iterator depIt = depsIt->second.begin(); depIt != depsIt->second.end(); depIt++)
-      UpdateControl(depsIt->first, *depIt);
-  }
-
-  // update GUI of the changed setting as the change could have been triggered by something else
-  pControl->Update();
-}
-
-void CGUIWindowSettingsCategory::CheckDependency(BaseSettingControlPtr pSettingControl, const CSettingDependency &dependency)
-{
-  if (pSettingControl == NULL || pSettingControl->GetControl() == NULL)
-    return;
-
-  CSetting *pSetting = pSettingControl->GetSetting();
-  if (pSetting == NULL)
-    return;
-
-  switch (dependency.GetType())
-  {
-    case SettingDependencyTypeEnable:
-      pSettingControl->SetEnabled(dependency.Check());
-      break;
-
-    case SettingDependencyTypeUpdate:
-    {
-      FillControl(pSetting, pSettingControl->GetControl());
-      break;
-    }
-
-    case SettingDependencyTypeNone:
-    default:
-      break;
-  }
+  settingControl->Update();
 }
 
 void CGUIWindowSettingsCategory::CreateSettings()
@@ -619,9 +575,7 @@ void CGUIWindowSettingsCategory::CreateSettings()
     {
       CSetting *pSetting = *settingIt;
       settingMap.insert(pSetting->GetId());
-      CGUIControl* pControl = AddSetting(pSetting, group->GetWidth(), iControlID);
-
-      FillControl(pSetting, pControl);
+      AddSetting(pSetting, group->GetWidth(), iControlID);
     }
   }
 
@@ -642,18 +596,6 @@ void CGUIWindowSettingsCategory::UpdateSettings()
     if (pSetting == NULL || pControl == NULL)
       continue;
 
-    // update the setting's control's state (enabled/disabled etc)
-    const SettingDependencies &deps = pSetting->GetDependencies();
-    for (SettingDependencies::const_iterator dep = deps.begin(); dep != deps.end(); dep++)
-    {
-      // don't check "update" dependencies here as all the controls are already
-      // setup properly based on the existing values
-      if (dep->GetType() == SettingDependencyTypeUpdate)
-        continue;
-
-      CheckDependency(pSettingControl, *dep);
-    }
-
     pSettingControl->Update();
   }
 }
@@ -811,59 +753,3 @@ BaseSettingControlPtr CGUIWindowSettingsCategory::GetSettingControl(int controlI
 
   return m_settingControls[controlId - CONTROL_START_CONTROL];
 }
-
-void CGUIWindowSettingsCategory::FillControl(CSetting *pSetting, CGUIControl *pSettingControl)
-{
-  void *filler = CSettings::Get().GetSettingOptionsFiller(pSetting);
-  if (filler == NULL)
-    return;
-
-  if (pSetting->GetType() == SettingTypeInteger)
-  {
-    CSettingInt *pSettingInt = (CSettingInt*)pSetting;
-
-    // get the list of options and the current option
-    IntegerSettingOptions options;
-    int currentOption = pSettingInt->GetValue();
-    ((IntegerSettingOptionsFiller)filler)(pSetting, options, currentOption);
-
-    // clear the spinner control
-    CGUISpinControlEx *pSpinControl = (CGUISpinControlEx *)pSettingControl;
-    pSpinControl->Clear();
-
-    // fill the spinner control
-    for (IntegerSettingOptions::const_iterator option = options.begin(); option != options.end(); option++)
-      pSpinControl->AddLabel(option->first, option->second);
-
-    // set the current option
-    pSpinControl->SetValue(currentOption);
-
-    // check if the current setting has changed
-    if (currentOption != pSettingInt->GetValue())
-      pSettingInt->SetValue(currentOption);
-  }
-  else if (pSetting->GetType() == SettingTypeString)
-  {
-    CSettingString *pSettingString = (CSettingString*)pSetting;
-
-    // get the list of options and the current option
-    StringSettingOptions options;
-    std::string currentOption = pSettingString->GetValue();
-    ((StringSettingOptionsFiller)filler)(pSetting, options, currentOption);
-
-    // clear the spinner control
-    CGUISpinControlEx *pSpinControl = (CGUISpinControlEx *)pSettingControl;
-    pSpinControl->Clear();
-
-    // fill the spinner control
-    for (StringSettingOptions::const_iterator option = options.begin(); option != options.end(); option++)
-      pSpinControl->AddLabel(option->first, option->second);
-
-    // set the current option
-    pSpinControl->SetStringValue(currentOption);
-
-    // check if the current setting has changed
-    if (currentOption.compare(pSettingString->GetValue()) != 0)
-      pSettingString->SetValue(currentOption);
-  }
-}
index 45fb32a..c729034 100644 (file)
@@ -56,9 +56,7 @@ protected:
 
   virtual void OnTimeout();
   virtual void OnSettingChanged(const CSetting *setting);
-  
-  void UpdateControl(const std::string &dependingSetting, const CSettingDependency &dependency);
-  void CheckDependency(BaseSettingControlPtr pSettingControl, const CSettingDependency &dependency);
+  virtual void OnSettingPropertyChanged(const CSetting *setting, const char *propertyName);
   
   void CreateSettings();
   void UpdateSettings();
@@ -82,8 +80,6 @@ protected:
   CSettingSection* GetSection(int windowID) const;
   BaseSettingControlPtr GetSettingControl(const std::string &setting);
   BaseSettingControlPtr GetSettingControl(int controlId);
-
-  void FillControl(CSetting *pSetting, CGUIControl *pSettingControl);
   
   CSettings& m_settings;
   SettingCategoryList m_categories;
index a0c882d..f6f0701 100644 (file)
@@ -28,6 +28,7 @@
 #include "Temperature.h"
 #include "network/Network.h"
 #include "Application.h"
+#include "settings/Setting.h"
 #include "settings/Settings.h"
 #include "guilib/GUIWindowManager.h"
 #include "GUIUserMessages.h"
index 40f3cc5..307e0d0 100644 (file)
@@ -57,7 +57,7 @@ public:
   static CStdString GetResInfoString();
   static int GetDesktopColorDepth();
   static CStdString GetSpecialFolder(int csidl);
-  static CStdString CWIN32Util::GetSystemPath();
+  static CStdString GetSystemPath();
   static CStdString GetProfilePath();
   static CStdString UncToSmb(const CStdString &strPath);
   static CStdString SmbToUnc(const CStdString &strPath);
index b60dfe3..ab85f2c 100644 (file)
@@ -21,6 +21,7 @@
 #include "WinSystem.h"
 #include "guilib/GraphicContext.h"
 #include "settings/DisplaySettings.h"
+#include "settings/Setting.h"
 #include "settings/Settings.h"
 
 using namespace std;