settings: move <allowempty> tag into <constraints> tag
authormontellese <montellese@xbmc.org>
Sat, 18 May 2013 10:40:36 +0000 (12:40 +0200)
committermontellese <montellese@xbmc.org>
Tue, 21 May 2013 18:11:36 +0000 (20:11 +0200)
system/settings/settings.xml
xbmc/settings/Setting.cpp

index b31ff40..7ce627e 100644 (file)
@@ -74,7 +74,9 @@
         <setting id="lookandfeel.rssedit" type="string" label="21450" help="">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
           <dependencies>
             <dependency type="enable" setting="lookandfeel.enablerssfeeds">true</dependency>
           </dependencies>
           <level>0</level>
           <default>screensaver.xbmc.builtin.dim</default>
           <addontype>xbmc.ui.screensaver</addontype>
-          <allowempty>true</allowempty>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
           <updates>
             <update type="change" />
           </updates>
         <setting id="subtitles.custompath" type="path" label="21366" help="">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
           <heading>657</heading>
           <constraints>
+            <allowempty>true</allowempty>
             <writable>false</writable>
             <sources>
               <source>videos</source>
         <setting id="pvrmenu.iconpath" type="path" label="19018" help="">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
           <heading>657</heading>
           <constraints>
+            <allowempty>true</allowempty>
             <writable>false</writable>
           </constraints>
           <control type="button" format="path" />
         <setting id="pvrpowermanagement.setwakeupcmd" type="string" label="19245" help="">
           <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="pvrparental.pin" type="string" label="19261" help="">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
           <dependencies>
             <dependency type="enable" setting="pvrparental.enabled">true</dependency>
           </dependencies>
           <level>0</level>
           <default>visualization.glspectrum</default>
           <addontype>xbmc.player.musicviz</addontype>
-          <allowempty>true</allowempty>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
         </setting>
       </group>
     </category>
         <setting id="musicfiles.nowplayingtrackformat" type="string" label="13307" help="">
           <level>4</level>
           <default></default>
-          <allowempty>true</allowempty>
           <heading>16016</heading>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
           <control type="edit" format="string" />
         </setting>
         <setting id="musicfiles.nowplayingtrackformatright" type="string" label="13387" help="">
           <level>4</level>
           <default></default>
-          <allowempty>true</allowempty>
           <heading>16016</heading>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
           <control type="edit" format="string" />
         </setting>
         <setting id="musicfiles.librarytrackformat" type="string" label="13307" help="">
           <level>4</level>
           <default></default>
-          <allowempty>true</allowempty>
           <heading>16016</heading>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
           <control type="edit" format="string" />
         </setting>
         <setting id="musicfiles.librarytrackformatright" type="string" label="13387" help="">
           <level>4</level>
           <default></default>
-          <allowempty>true</allowempty>
           <heading>16016</heading>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
           <control type="edit" format="string" />
         </setting>
         <setting id="musicfiles.findremotethumbs" type="boolean" label="14059" help="">
         <setting id="audiocds.recordingpath" type="path" label="20000" help="">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
           <heading>657</heading>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
           <control type="button" format="path" />
         </setting>
         <setting id="audiocds.trackpathformat" type="string" label="13307" help="">
         <setting id="mymusic.defaultlibview" type="string" label="0" help="">
           <level>4</level>
           <default></default>
-          <allowempty>true</allowempty>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
         </setting>
       </group>
     </category>
           <level>0</level>
           <default>weather.wunderground</default>
           <addontype>xbmc.python.weather</addontype>
-          <allowempty>true</allowempty>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
         </setting>
         <setting id="weather.addonsettings" type="action" label="21417" help="">
           <level>0</level>
         <setting id="services.webserverusername" type="string" label="1048" help="">
           <level>2</level>
           <default>xbmc</default>
-          <allowempty>true</allowempty>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
           <dependencies>
             <dependency type="enable" setting="services.webserver">true</dependency>
           </dependencies>
         <setting id="services.webserverpassword" type="string" label="733" help="">
           <level>2</level>
           <default></default>
-          <allowempty>true</allowempty>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
           <dependencies>
             <dependency type="enable" setting="services.webserver">true</dependency>
           </dependencies>
         <setting id="services.airplaypassword" type="string" label="733" help="">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
           <dependencies>
             <dependency type="enable" setting="services.useairplaypassword">true</dependency>
           </dependencies>
         <setting id="network.httpproxyserver" type="string" label="706" help="">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
           <dependencies>
             <dependency type="enable" setting="network.usehttpproxy">true</dependency>
           </dependencies>
         <setting id="network.httpproxyusername" type="string" label="1048" help="">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
           <dependencies>
             <dependency type="enable" setting="network.usehttpproxy">true</dependency>
           </dependencies>
         <setting id="network.httpproxypassword" type="string" label="733" help="">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
           <dependencies>
             <dependency type="enable" setting="network.usehttpproxy">true</dependency>
           </dependencies>
         <setting id="debug.screenshotpath" type="path" label="20004" help="">
           <level>1</level>
           <default></default>
-          <allowempty>true</allowempty>
           <heading>657</heading>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
           <control type="button" format="path" />
         </setting>
       </group>
         <setting id="system.playlistspath" type="path" label="20006" help="">
           <level>4</level>
           <default></default>
-          <allowempty>true</allowempty>
+          <constraints>
+            <allowempty>true</allowempty>
+          </constraints>
         </setting>
       </group>
     </category>
index 965dbc8..c472ab2 100644 (file)
@@ -792,25 +792,15 @@ 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)
-  {
-    CLog::Log(LOGERROR, "CSettingString: error reading the default value of \"%s\"", m_id.c_str());
-    return false;
-  }
 
   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 +808,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;
 }