/// <summary> /// Loads settings from XML. /// </summary> public static void Load() { string basePath = Organization.GetBasePath(false); if (!Directory.Exists(basePath)) return; // Initialize file types to defautls VideoFileTypes = new ObservableCollection<string>(); foreach (string type in DefaultVideoFileTypes) VideoFileTypes.Add(type); DeleteFileTypes = new ObservableCollection<string>(); foreach (string type in DefaultDeleteFileTypes) DeleteFileTypes.Add(type); IgnoreFileTypes = new ObservableCollection<string>(); foreach (string type in DefaultIgnoreFileTypes) IgnoreFileTypes.Add(type); // Load settings XML string path = Path.Combine(basePath, ROOT_XML + ".xml"); if (File.Exists(path)) { // Load XML XmlTextReader reader = new XmlTextReader(path); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(reader); foreach (XmlNode propNode in xmlDoc.DocumentElement.ChildNodes) { XmlElements element; if (!Enum.TryParse<XmlElements>(propNode.Name, out element)) continue; string value = propNode.InnerText; switch (element) { case XmlElements.ScanDirectories: ScanDirectories = new ObservableCollection<OrgFolder>(); foreach (XmlNode scanDirNode in propNode.ChildNodes) { OrgFolder folder = new OrgFolder(); folder.Load(scanDirNode); ScanDirectories.Add(folder); } break; case XmlElements.TvFileFormat: TvFileFormat.Load(propNode); break; case XmlElements.MovieFileFormat: MovieFileFormat.Load(propNode); break; case XmlElements.MovieFolderColletion: MovieFolders.Load(propNode); break; case XmlElements.TvFolderCollection: TvFolders.Load(propNode); break; case XmlElements.VideoFileTypes: VideoFileTypes = new ObservableCollection<string>(); foreach (XmlNode fileTypeNode in propNode.ChildNodes) { string videoType = fileTypeNode.InnerText; if (videoType.StartsWith(".")) videoType = videoType.Substring(1, videoType.Length - 1); VideoFileTypes.Add(videoType); } break; case XmlElements.DeleteFileTypes: DeleteFileTypes = new ObservableCollection<string>(); foreach (XmlNode fileTypeNode in propNode.ChildNodes) { string delType = fileTypeNode.InnerText; if (delType.StartsWith(".")) delType = delType.Substring(1, delType.Length - 1); DeleteFileTypes.Add(delType); } break; case XmlElements.IgnoreFileTypes: IgnoreFileTypes = new ObservableCollection<string>(); foreach (XmlNode fileTypeNode in propNode.ChildNodes) { string ignoreType = fileTypeNode.InnerText; if (ignoreType.StartsWith(".")) ignoreType = ignoreType.Substring(1, ignoreType.Length - 1); IgnoreFileTypes.Add(ignoreType); } break; case XmlElements.AutoMoveSetups: AutoMoveSetups = new ObservableCollection<AutoMoveFileSetup>(); foreach (XmlNode setupNode in propNode.ChildNodes) { AutoMoveFileSetup setup = new AutoMoveFileSetup(); setup.Load(setupNode); AutoMoveSetups.Add(setup); } break; case XmlElements.Gui: GuiControl.Load(propNode); break; case XmlElements.General: General.Load(propNode); break; case XmlElements.MovieFolders: MovieFolders.Clear(); foreach (XmlNode movieFolderNode in propNode.ChildNodes) { ContentRootFolder folder = new ContentRootFolder(ContentType.Movie); folder.Load(movieFolderNode); MovieFolders.Add(folder); } break; case XmlElements.TvFolders: TvFolders.Clear(); foreach (XmlNode tvFolderNode in propNode.ChildNodes) { ContentRootFolder folder = new ContentRootFolder(ContentType.TvShow); folder.Load(tvFolderNode); TvFolders.Add(folder); } break; } } } OnSettingsModified(true); }
/// <summary> /// Loads properties from XML elements /// </summary> /// <param name="showNode">The XML node containt property elements</param> /// <returns>Whether XML was loaded properly</returns> public bool Load(XmlNode foldersNode) { // Check that we're on the right node if (foldersNode.Name != ROOT_XML) { return(false); } // Go through elements of node foreach (XmlNode propNode in foldersNode.ChildNodes) { // Match the current node to a known element name XmlElements element; if (!Enum.TryParse <XmlElements>(propNode.Name, out element)) { continue; } // Set appropiate property from value in element string value = propNode.InnerText; switch (element) { case XmlElements.SubPath: this.SubPath = value; break; case XmlElements.FullPath: this.FullPath = value; break; case XmlElements.AllowOrganizing: bool allowOrg; if (bool.TryParse(value, out allowOrg)) { this.AllowOrganizing = allowOrg; } break; case XmlElements.Default: bool def; if (bool.TryParse(value, out def)) { this.Default = def; } break; case XmlElements.ChildFolders: this.ChildFolders = new ObservableCollection <ContentRootFolder>(); foreach (XmlNode subContentNode in propNode.ChildNodes) { ContentRootFolder subFolder = new ContentRootFolder(this.ContentType); subFolder.Load(subContentNode); this.ChildFolders.Add(subFolder); } break; case XmlElements.Temporary: bool temp; if (bool.TryParse(value, out temp)) { this.Temporary = temp; } break; case XmlElements.AllSubFoldersChildRootFolder: bool allSubsChild; if (bool.TryParse(value, out allSubsChild)) { this.AllSubFoldersChildRootFolder = allSubsChild; } break; } } return(true); }
/// <summary> /// Loads properties from XML elements /// </summary> /// <param name="showNode">The XML node containt property elements</param> /// <returns>Whether XML was loaded properly</returns> public bool Load(XmlNode foldersNode) { // Check that we're on the right node if (foldersNode.Name != ROOT_XML) return false; // Go through elements of node foreach (XmlNode propNode in foldersNode.ChildNodes) { // Match the current node to a known element name XmlElements element; if (!Enum.TryParse<XmlElements>(propNode.Name, out element)) continue; // Set appropiate property from value in element string value = propNode.InnerText; switch (element) { case XmlElements.SubPath: this.SubPath = value; break; case XmlElements.FullPath: this.FullPath = value; break; case XmlElements.AllowOrganizing: bool allowOrg; if (bool.TryParse(value, out allowOrg)) this.AllowOrganizing = allowOrg; break; case XmlElements.Default: bool def; if (bool.TryParse(value, out def)) this.Default = def; break; case XmlElements.ChildFolders: this.ChildFolders = new ObservableCollection<ContentRootFolder>(); foreach (XmlNode subContentNode in propNode.ChildNodes) { ContentRootFolder subFolder = new ContentRootFolder(this.ContentType); subFolder.Load(subContentNode); this.ChildFolders.Add(subFolder); } break; case XmlElements.Temporary: bool temp; if (bool.TryParse(value, out temp)) this.Temporary = temp; break; case XmlElements.AllSubFoldersChildRootFolder: bool allSubsChild; if (bool.TryParse(value, out allSubsChild)) this.AllSubFoldersChildRootFolder = allSubsChild; break; } } return true; }
/// <summary> /// Loads settings from XML. /// </summary> public static void Load() { string basePath = Organization.GetBasePath(false); if (!Directory.Exists(basePath)) { return; } // Initialize file types to defautls VideoFileTypes = new ObservableCollection <string>(); foreach (string type in DefaultVideoFileTypes) { VideoFileTypes.Add(type); } DeleteFileTypes = new ObservableCollection <string>(); foreach (string type in DefaultDeleteFileTypes) { DeleteFileTypes.Add(type); } IgnoreFileTypes = new ObservableCollection <string>(); foreach (string type in DefaultIgnoreFileTypes) { IgnoreFileTypes.Add(type); } // Load settings XML string path = Path.Combine(basePath, ROOT_XML + ".xml"); if (File.Exists(path)) { // Load XML XmlTextReader reader = new XmlTextReader(path); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(reader); foreach (XmlNode propNode in xmlDoc.DocumentElement.ChildNodes) { XmlElements element; if (!Enum.TryParse <XmlElements>(propNode.Name, out element)) { continue; } string value = propNode.InnerText; switch (element) { case XmlElements.ScanDirectories: ScanDirectories = new ObservableCollection <OrgFolder>(); foreach (XmlNode scanDirNode in propNode.ChildNodes) { OrgFolder folder = new OrgFolder(); folder.Load(scanDirNode); ScanDirectories.Add(folder); } break; case XmlElements.TvFileFormat: TvFileFormat.Load(propNode); break; case XmlElements.MovieFileFormat: MovieFileFormat.Load(propNode); break; case XmlElements.MovieFolderColletion: MovieFolders.Load(propNode); break; case XmlElements.TvFolderCollection: TvFolders.Load(propNode); break; case XmlElements.VideoFileTypes: VideoFileTypes = new ObservableCollection <string>(); foreach (XmlNode fileTypeNode in propNode.ChildNodes) { string videoType = fileTypeNode.InnerText; if (videoType.StartsWith(".")) { videoType = videoType.Substring(1, videoType.Length - 1); } VideoFileTypes.Add(videoType); } break; case XmlElements.DeleteFileTypes: DeleteFileTypes = new ObservableCollection <string>(); foreach (XmlNode fileTypeNode in propNode.ChildNodes) { string delType = fileTypeNode.InnerText; if (delType.StartsWith(".")) { delType = delType.Substring(1, delType.Length - 1); } DeleteFileTypes.Add(delType); } break; case XmlElements.IgnoreFileTypes: IgnoreFileTypes = new ObservableCollection <string>(); foreach (XmlNode fileTypeNode in propNode.ChildNodes) { string ignoreType = fileTypeNode.InnerText; if (ignoreType.StartsWith(".")) { ignoreType = ignoreType.Substring(1, ignoreType.Length - 1); } IgnoreFileTypes.Add(ignoreType); } break; case XmlElements.AutoMoveSetups: AutoMoveSetups = new ObservableCollection <AutoMoveFileSetup>(); foreach (XmlNode setupNode in propNode.ChildNodes) { AutoMoveFileSetup setup = new AutoMoveFileSetup(); setup.Load(setupNode); AutoMoveSetups.Add(setup); } break; case XmlElements.Gui: GuiControl.Load(propNode); break; case XmlElements.General: General.Load(propNode); break; case XmlElements.MovieFolders: MovieFolders.Clear(); foreach (XmlNode movieFolderNode in propNode.ChildNodes) { ContentRootFolder folder = new ContentRootFolder(ContentType.Movie); folder.Load(movieFolderNode); MovieFolders.Add(folder); } break; case XmlElements.TvFolders: TvFolders.Clear(); foreach (XmlNode tvFolderNode in propNode.ChildNodes) { ContentRootFolder folder = new ContentRootFolder(ContentType.TvShow); folder.Load(tvFolderNode); TvFolders.Add(folder); } break; } } } OnSettingsModified(true); }