示例#1
0
        private void LoadSettings(SettingsViewModel model)
        {
            // Load defaults

            // Load settings
            XmlDocument settingsDoc = App.settingsDoc;

            try { settingsDoc.Load(fileSettingsXMLPath); }
            catch (XmlException e)
            {
                System.Diagnostics.Debug.WriteLine("Error loading settings: " + e.Message);
                return;
            }
            catch (FileNotFoundException e)
            {
                System.Diagnostics.Debug.WriteLine("Error loading settings: " + e.Message);
                return;
            }

            IEnumerator docChildNodes = settingsDoc.ChildNodes.GetEnumerator();

            while (docChildNodes.MoveNext())
            {
                XmlNode currentNode = (docChildNodes.Current as XmlNode);
                if (currentNode.Name == "settings")
                {
                    IEnumerator docNodes = currentNode.ChildNodes.GetEnumerator();

                    while (docNodes.MoveNext())
                    {
                        XmlNode currentSubNode = (docNodes.Current as XmlNode);
                        Setting setting        = new Setting();
                        XmlAttributeCollection currentAttrib = currentSubNode.Attributes;

                        string name = currentAttrib.GetNamedItem("name").Value ?? "";
                        Debug.WriteLine(name);
                        string value = currentAttrib.GetNamedItem("value").Value ?? "";
                        Debug.WriteLine(value);
                        string description = currentAttrib.GetNamedItem("description").Value ?? "";
                        Debug.WriteLine(description);

                        IEnumerator attributes = currentAttrib.GetEnumerator();
                        while (attributes.MoveNext())
                        {
                            XmlAttribute attr = (attributes.Current as XmlAttribute);
                            Debug.WriteLine("Attribute");
                            Debug.WriteLine(attr.Name);
                            Debug.WriteLine(attr.Value);
                        }

                        switch (currentSubNode.Name)
                        {
                        case "string":
                        {
                            setting = new StringSetting(name, value, description);
                            break;
                        }

                        /*case "int":// TODO cast string to int
                         *  {
                         *      setting = new IntSetting(name, value, description);
                         *      break;
                         *  }*/
                        case "toggle":
                        {
                            setting = new ToggleSetting(name, (value == "true"), description);
                            break;
                        }

                        default:
                        {
                            Debug.WriteLine("DEFAULT");
                            Debug.WriteLine(name + value + description);
                            Debug.WriteLine(currentSubNode.Name);
                            Debug.WriteLine(setting.Name + setting.Value + setting.Description);
                            break;
                        }
                        }
                        Debug.WriteLine(setting.ToString());
                        model.Settings.Add(setting);
                    }
                }
            }
        }