/[xmltv_parser]/trunk/xmltv_parser/main.cs
ViewVC logotype

Diff of /trunk/xmltv_parser/main.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 16 by william, Thu Mar 7 09:26:43 2013 UTC revision 44 by william, Fri Mar 8 03:36:44 2013 UTC
# Line 2  Line 2 
2  using System.Collections.Generic;  using System.Collections.Generic;
3  using System.ComponentModel;  using System.ComponentModel;
4  using System.Data;  using System.Data;
5    using System.Linq;
6  using System.Drawing;  using System.Drawing;
7  using System.Text;  using System.Text;
8  using System.Windows.Forms;  using System.Windows.Forms;
9  using libxmltv.Core;  using libxmltv.Core;
10  using Enterprise.Logging;  using Enterprise.Logging;
11    using libxmltv.Interfaces;
12    using System.IO;
13    using System.Runtime.Serialization.Formatters.Binary;
14    using System.Threading;
15    
16  namespace xmltv_parser  namespace xmltv_parser
17  {  {
18      public partial class main : Form      public partial class main : Form
19      {      {
20            private IXMLTVRuntimeInstance xmltv;
21            private bool IsUnix
22            {
23                get { return System.Environment.OSVersion.Platform == PlatformID.Unix; }
24            }
25    
26          public main()          public main()
27          {          {
28              InitializeComponent();              InitializeComponent();
29              string log_path = Application.StartupPath;              string log_path = Application.StartupPath;
30              string log_filename = string.Format("{0}.log", typeof(main).Assembly.GetName().Name);              string log_filename = string.Format("{0}.log", typeof(main).Assembly.GetName().Name);
31              gLog.CreateLog(string.Format(@"{0}\{1}", log_path, log_filename), false, LogLevel.kLogLevel_All);                          gLog.CreateLog(string.Format(@"{0}\{1}", log_path, log_filename), false, LogLevel.kLogLevel_All, new EventHandler<LoggerOnFlushEventArgs>(Log_OnFlush));
32            }
33    
34            StringBuilder log_flusher = new StringBuilder();
35            bool HAVE_CR = false;
36            void Log_OnFlush(object sender, LoggerOnFlushEventArgs e)
37            {
38                
39                log_flusher.Append(e.Buffer);
40                if (IsUnix)
41                {
42                    if (e.Buffer == System.Environment.NewLine[0])
43                    {
44                        OnLogFlush(log_flusher.ToString());
45                        log_flusher = new StringBuilder();
46                    }
47                }
48                else
49                {                
50                    if (e.Buffer == System.Environment.NewLine[0])
51                    {
52                        HAVE_CR = true;
53                    }
54                    if (e.Buffer == System.Environment.NewLine[1] && HAVE_CR)
55                    {
56                        OnLogFlush(log_flusher.ToString().TrimStart(new char[] { System.Environment.NewLine[1] }));
57                        log_flusher = new StringBuilder();
58                        HAVE_CR = false;
59                    }
60                }
61                
62            }
63    
64            void OnLogFlush(string logmessage)
65            {
66                Console.Write(logmessage);        
67                txtStatus.Text = logmessage.Replace(System.Environment.NewLine, "");
68                Thread.Sleep(100);
69          }          }
70    
71            //List<IXMLTVChannel> Channels;
72            List<IXMLTVProgram> Programs;
73    
74          private void main_Load(object sender, EventArgs e)          private void main_Load(object sender, EventArgs e)
75          {          {
76    
77          }          }
78          private void main_Shown(object sender, EventArgs e)          private void main_Shown(object sender, EventArgs e)
79          {          {
80              gLog.Log.Debug.WriteLine("");              //libxmltv.Core.XMLTV
81              var xmltv = XMLTV.CreateLoader("20130307_continuum_schedule.xml");              
82              //XMLTV.Test(xmltv);          }
83    
84    
85            void LoadXMLTVShcedule(string schedule_xml)
86            {
87                //var xmltv_loader = XMLTV.CreateLoader(schedule_xml);
88                //var xmltv_parser = XMLTV.CreateParser(xmltv_loader);
89                //var p = XMLTV.GetParser(xmltv_parser);
90    
91                ////var channel_count = p.Channels.Values.Count;
92                ////Channels = p.Channels.Values.ToList().GetRange(0, channel_count).ToList();
93                //var program_count = p.Programs.Values.Count;
94                //var program_list = p.Programs.Values.ToList().OrderBy(s => s.Start);
95                ////Programs = program_list(0, program_count).ToList();
96                //Programs = new List<IXMLTVProgram>(program_list.ToArray());
97    
98                xmltv = XMLTV.CreateInstance(schedule_xml);
99                var program_count = xmltv.Programs.Values.Count;
100                var program_list = xmltv.Programs.Values.ToList().OrderBy(s => s.Start);
101                //Programs = program_list(0, program_count).ToList();
102                Programs = new List<IXMLTVProgram>(program_list.ToArray());
103            }
104    
105            void CreateControls()
106            {
107                foreach (var program in Programs)
108                {
109                    ListViewItem li = new ListViewItem(string.Format("{0} {1}", program.Channel.Number, program.Channel.CallSign));
110                    li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.Title));
111                    li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.SubTitle));
112                    li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.Description));
113                    li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.Start.ToString("yyyy/MM/dd hh:mm tt")));
114                    li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.Stop.ToString("yyyy/MM/dd hh:mm tt")));
115                    lstPrograms.Items.Add(li);
116                }
117            }
118    
119            private void mnuItemOpenXMLTVFile_Click(object sender, EventArgs e)
120            {
121                //LoadXMLTVShcedule("20130307_continuum_schedule.xml");
122                var result = xmltv_file_chooser.ShowDialog();
123                if (result != DialogResult.OK) return;
124                LoadXMLTVShcedule(xmltv_file_chooser.FileName);
125                CreateControls();
126            }
127    
128            private void mnuItemOpenSavedData_Click(object sender, EventArgs e)
129            {
130                var result = xmltv_program_data_loader.ShowDialog();
131                if (result != DialogResult.OK) return;
132                try
133                {
134                    using (Stream stream = File.Open(xmltv_program_data_loader.FileName, FileMode.Open))
135                    {
136                        try
137                        {
138                            BinaryFormatter bin = new BinaryFormatter();
139                            Programs = (List<IXMLTVProgram>)bin.Deserialize(stream);
140                        }
141                        catch (Exception ex) { gLog.Log.Error.WriteLine(ex.ToString()); MessageBox.Show(ex.Message, "Failed to load data", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
142                    }
143                }
144                catch (Exception ex) { gLog.Log.Error.WriteLine(ex.ToString()); MessageBox.Show(ex.Message, "Failed to load data", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
145                MessageBox.Show("Successfully loaded data", "Successfully loaded data", MessageBoxButtons.OK, MessageBoxIcon.Information);
146                CreateControls();
147            }
148    
149            private void mnuItemSaveData_Click(object sender, EventArgs e)
150            {
151                var result = xmltv_program_data_saver.ShowDialog();
152                if (result != DialogResult.OK) return;
153                try
154                {
155                    using (Stream stream = File.Open(xmltv_program_data_saver.FileName, FileMode.Create))
156                    {
157                        try
158                        {
159                            BinaryFormatter bin = new BinaryFormatter();
160                            bin.Serialize(stream, Programs);
161                        }
162                        catch (Exception ex) { gLog.Log.Error.WriteLine(ex.ToString()); MessageBox.Show(ex.Message, "Failed to save data", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
163                    }
164                }
165                catch (Exception ex) { gLog.Log.Error.WriteLine(ex.ToString()); MessageBox.Show(ex.Message, "Failed to save data", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
166                MessageBox.Show("Successfully saved data", "Successfully saved data", MessageBoxButtons.OK, MessageBoxIcon.Information);
167            }
168    
169            private void main_FormClosing(object sender, FormClosingEventArgs e)
170            {
171                if (xmltv != null)
172                {
173                    xmltv.Dispose();
174                }
175          }          }
176      }      }
177  }  }
178    

Legend:
Removed from v.16  
changed lines
  Added in v.44

  ViewVC Help
Powered by ViewVC 1.1.22