/[xmltv_parser]/trunk/libxmltv/Core/XMLTVChannelCollection.cs
ViewVC logotype

Annotation of /trunk/libxmltv/Core/XMLTVChannelCollection.cs

Parent Directory Parent Directory | Revision Log Revision Log


Revision 49 - (hide annotations) (download)
Fri Mar 8 05:20:12 2013 UTC (7 years, 6 months ago) by william
File size: 3646 byte(s)

1 william 26 using System;
2     using System.Collections.Generic;
3     using System.Linq;
4     using System.Text;
5     using libxmltv.Interfaces;
6     using System.Diagnostics;
7     using System.Xml.Linq;
8 william 43 using System.Windows.Forms;
9 william 26
10     namespace libxmltv.Core
11     {
12 william 44 internal class XMLTVChannelCollection : IDisposable
13 william 26 {
14     private Dictionary<string, IXMLTVChannel> entries = new Dictionary<string, IXMLTVChannel>();
15 william 44 internal static void CreateInstance(XMLTVRuntimeInstance xmltv)
16     {
17 william 48 using (XMLTVChannelCollection g = new XMLTVChannelCollection(xmltv))
18     {
19     g.instance.Channels = g.Collection;
20     xmltv_logger.Log.Info.WriteLine(g.ToString());
21     }
22 william 44 }
23 william 36 private XMLTVRuntimeInstance instance;
24     public XMLTVChannelCollection(XMLTVRuntimeInstance xmltv)
25 william 26 {
26 william 46 xmltv_logger.Log.Verbose.Debug.WriteLine("Creating Instance of XMLTVChannelCollection");
27 william 36 //IXMLTV_PARSER _xmltv;
28     //if (!Internals.VerifyInstance<IXMLTV_PARSER>(xmltv, out _xmltv)) { return; }
29     //XMLTV_PARSER = _xmltv;
30     instance = xmltv;
31 william 26 Create();
32     }
33    
34     #region IXMLTVSource
35 william 36 //private IXMLTV_PARSER XMLTV_PARSER { get; set; }
36 william 26 public Dictionary<string, IXMLTVChannel> Collection
37     {
38     get { return entries; }
39     }
40     #endregion
41    
42     private void Create()
43     {
44 william 49 var doc = XDocument.Parse(instance.XmlDoc);
45 william 26
46 william 36 foreach (var c in doc.Descendants(XMLTVConstants.CHANNEL_ELEMENT))
47 william 26 {
48 william 46 if (instance.IsAborting)
49 william 45 {
50     break;
51     }
52 william 26 Channel channel = new Channel(c);
53 william 28 entries.Add(channel.Id, channel);
54 william 43 Application.DoEvents();
55 william 26 }
56 william 44 //instance.Channels = Collection;
57 william 26 }
58     public override string ToString()
59     {
60 william 48 return string.Format("Total Channels Parsed: {0}", Collection == null ? 0 : Collection.Count);
61 william 26 }
62 william 44
63     public void Dispose()
64     {
65     //throw new NotImplementedException();
66     }
67 william 26 }
68 william 31 [Serializable]
69 william 27 internal class Channel : IXMLTVChannel
70 william 26 {
71     public Channel()
72     {
73 william 28 Id = string.Empty;
74     Number = 0;
75     CallSign = string.Empty;
76     Name = string.Empty;
77 william 26 }
78 william 27 public Channel(XElement e)
79     : this()
80 william 26 {
81     // get the channel id
82 william 36 Id = e.Attribute(XMLTVConstants.Channels.ChannelId).Value;
83 william 46 xmltv_logger.Log.Verbose.Debug.WriteLine("\tchannel_id: {0}", Id);
84 william 36 var names = e.Descendants(XMLTVConstants.Channels.ChannelDisplayName).ToList();
85 william 28 Number = Convert.ToInt32(names[1].Value);
86 william 46 xmltv_logger.Log.Verbose.Debug.WriteLine("\tchannel_number: {0}", Number);
87 william 28 CallSign = names[2].Value;
88 william 46 xmltv_logger.Log.Verbose.Debug.WriteLine("\tchannel_callsign: {0}", CallSign);
89 william 28 Name = names[3].Value;
90 william 46 xmltv_logger.Log.Verbose.Debug.WriteLine("\tchannel_name: {0}", Name);
91 william 26 }
92     #region IXMLTVChannel members
93 william 28 public string Id { get; private set; }
94     public int Number { get; private set; }
95     public string CallSign { get; private set; }
96     public string Name { get; private set; }
97 william 26 #endregion
98 william 28 public override string ToString()
99     {
100     return string.Format("{0}: {1} {2} ({3})", Id,Number,Name, CallSign);
101     }
102 william 26 }
103     }
104    

  ViewVC Help
Powered by ViewVC 1.1.22