[Mediaportal-svn] r23984 - trunk/MP-II/Source/System/MediaPortal.Core/Services/Settings
Turn your PC into a very advanced MediaCenter/HTPC
Brought to you by:
gereonheitmann,
morpheus_xx
From: <alb...@te...> - 2009-10-28 20:53:18
|
Author: albert1978 Date: 2009-10-28 21:34:50 +0100 (Wed, 28 Oct 2009) New Revision: 23984 Modified: trunk/MP-II/Source/System/MediaPortal.Core/Services/Settings/SettingsFileHandler.cs Log: Avoid potential problems with writing empty settings files. Modified: trunk/MP-II/Source/System/MediaPortal.Core/Services/Settings/SettingsFileHandler.cs =================================================================== --- trunk/MP-II/Source/System/MediaPortal.Core/Services/Settings/SettingsFileHandler.cs 2009-10-28 20:31:02 UTC (rev 23983) +++ trunk/MP-II/Source/System/MediaPortal.Core/Services/Settings/SettingsFileHandler.cs 2009-10-28 20:34:50 UTC (rev 23984) @@ -82,16 +82,20 @@ #region Protected methods + protected void CreateRootElement() + { + XmlElement root = _document.CreateElement("Configuration"); + _document.AppendChild(root); + } + protected XmlElement GetPropertyElement(string entryName, bool createIfNotExists) { XmlElement root = _document.DocumentElement; if (root == null) - { if (!createIfNotExists) return null; - root = _document.CreateElement("Configuration"); - _document.AppendChild(root); - } + else + CreateRootElement(); XmlElement entryElement = root.SelectSingleNode("Property[@Name=\"" + entryName + "\"]") as XmlElement; if (entryElement == null) { @@ -165,8 +169,8 @@ // If the value is null, remove the entry if (value == null) { - RemoveEntry(entryName); - _modified = true; + if (RemoveEntry(entryName)) + _modified = true; return; } XmlNode entryElement = GetPropertyElement(entryName, true); @@ -182,12 +186,14 @@ /// Removes the value with the specified <paramref name="entryName"/>. /// </summary> /// <param name="entryName">Name of the entry to remove.</param> - public void RemoveEntry(string entryName) + /// <returns><c>true</c> if the entry was removed, else <c>false</c>.</returns> + public bool RemoveEntry(string entryName) { XmlNode entryElement = GetPropertyElement(entryName, false); if (entryElement == null) - return; + return false; entryElement.ParentNode.RemoveChild(entryElement); + return true; } /// <summary> @@ -210,6 +216,7 @@ public void Clear() { _document = new XmlDocument(); + CreateRootElement(); _modified = false; } |