--- trunk/libxmltv/Core/XMLTVRuntimeInstance.cs 2013/03/09 11:06:39 74 +++ trunk/libxmltv/Core/XMLTVRuntimeInstance.cs 2013/03/09 11:28:41 77 @@ -48,7 +48,7 @@ private void init() { - this.Source = new List(); + this.Source = new XMLTVSource(); this.Channels = new List(); this.Programs = new List(); this.XmlFile_Name = string.Empty; @@ -69,8 +69,8 @@ private string _XmlDoc; public string XmlDoc { get { return _XmlDoc; } set { _XmlDoc = value; } } - private List _Source; - public List Source { get { return _Source; } set { _Source = value; } } + private IXMLTVSource _Source; + public IXMLTVSource Source { get { return _Source; } set { _Source = value; } } private List _Channels; public List Channels { get { return _Channels; } set { _Channels = value; } } private List _Programs; @@ -118,11 +118,12 @@ { throw new NullReferenceException("Failed to load from instance because the instance is null."); } - CloneFromInstance(ref instance); xmltv_logger.Debug.WriteLine("Loading from instance..."); + CloneFromInstance(ref instance); + xmltv_logger.Debug.WriteLine("Loaded from instance..."); if (this.Source != null) { - xmltv_logger.Info.WriteLine("Source Loaded: '{0}' Created by '{1}' - original source file: '{2}'", this.Source.FirstOrDefault().SourceName, this.Source.FirstOrDefault().GeneratorName, this.XmlFile_FullName); + xmltv_logger.Info.WriteLine("Source Loaded: '{0}' Created by '{1}' - original source file: '{2}'", this.Source.SourceName, this.Source.GeneratorName, this.XmlFile_FullName); } else { @@ -131,7 +132,7 @@ } if (this.Channels != null) { - xmltv_logger.Info.WriteLine("Source Loaded: '{0}' Channels from source '{1}'", this.Channels.Count, this.Source.FirstOrDefault().SourceName); + xmltv_logger.Info.WriteLine("Source Loaded: '{0}' Channels from source '{1}'", this.Channels.Count, this.Source.SourceName); } else { @@ -140,14 +141,13 @@ } if (this.Programs != null) { - xmltv_logger.Info.WriteLine("Source Loaded: '{0}' Programs from source '{1}'", this.Programs.Count, this.Source.FirstOrDefault().SourceName); + xmltv_logger.Info.WriteLine("Source Loaded: '{0}' Programs from source '{1}'", this.Programs.Count, this.Source.SourceName); } else { xmltv_logger.Error.WriteLine("Programs Property is null."); throw new NullReferenceException("Programs Property is null."); - } - xmltv_logger.Debug.WriteLine("Loaded from instance..."); + } return instance; } #endregion @@ -275,17 +275,20 @@ private void CreateParser() { var doc = XDocument.Parse(this.GetInstance().XmlDoc); - var root_element = doc.Root; - + var root_element = doc.Root; CreateHandlerForRootNode(root_element); - var nodes = doc.Root.Elements().ToList(); + + double total_nodes = nodes.Count; + double node_index = 0; + double progress = 0; foreach(var node in nodes) { - if (!CreateHandlerForNode(node)) - { - xmltv_logger.Verbose.Debug.WriteLine("Unable to create handler for node: '{0}'", node.Name.ToString()); - } + if (!CreateHandlerForNode(node)) { xmltv_logger.Verbose.Debug.WriteLine("Unable to create handler for node: '{0}'", node.Name.ToString()); } + node_index++; + progress = 100.0 * (node_index / total_nodes); + xmltv_logger.ReportProgress(this, new Enterprise.Logging.ReportProgressEventArgs((int)progress)); + Application.DoEvents(); } }