using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Linq; using System.Drawing; using System.Text; using System.Windows.Forms; using libxmltv.Core; using Enterprise.Logging; using libxmltv.Interfaces; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace xmltv_parser { public partial class main : Form { public main() { InitializeComponent(); string log_path = Application.StartupPath; string log_filename = string.Format("{0}.log", typeof(main).Assembly.GetName().Name); gLog.CreateLog(string.Format(@"{0}\{1}", log_path, log_filename), false, LogLevel.kLogLevel_All); } //List Channels; List Programs; private void main_Load(object sender, EventArgs e) { } private void main_Shown(object sender, EventArgs e) { } void LoadXMLTVShcedule(string schedule_xml) { var xmltv_loader = XMLTV.CreateLoader(schedule_xml); var xmltv_parser = XMLTV.CreateParser(xmltv_loader); var p = XMLTV.GetParser(xmltv_parser); //var channel_count = p.Channels.Values.Count; //Channels = p.Channels.Values.ToList().GetRange(0, channel_count).ToList(); var program_count = p.Programs.Values.Count; var program_list = p.Programs.Values.ToList().OrderBy(s => s.Start); //Programs = program_list(0, program_count).ToList(); Programs = new List(program_list.ToArray()); } void CreateControls() { foreach (var program in Programs) { ListViewItem li = new ListViewItem(string.Format("{0} {1}", program.Channel.Number, program.Channel.CallSign)); li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.Title)); li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.SubTitle)); li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.Description)); li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.Start.ToString("yyyy/MM/dd hh:mm tt"))); li.SubItems.Add(new ListViewItem.ListViewSubItem(li, program.Stop.ToString("yyyy/MM/dd hh:mm tt"))); lstPrograms.Items.Add(li); } } private void mnuItemOpenXMLTVFile_Click(object sender, EventArgs e) { //LoadXMLTVShcedule("20130307_continuum_schedule.xml"); var result = xmltv_file_chooser.ShowDialog(); if (result != DialogResult.OK) return; LoadXMLTVShcedule(xmltv_file_chooser.FileName); CreateControls(); } private void mnuItemOpenSavedData_Click(object sender, EventArgs e) { var result = xmltv_program_data_loader.ShowDialog(); if (result != DialogResult.OK) return; try { using (Stream stream = File.Open(xmltv_program_data_loader.FileName, FileMode.Open)) { try { BinaryFormatter bin = new BinaryFormatter(); Programs = (List)bin.Deserialize(stream); } catch (Exception ex) { gLog.Log.Error.WriteLine(ex.ToString()); } } } catch (Exception ex) { gLog.Log.Error.WriteLine(ex.ToString()); } CreateControls(); } private void mnuItemSaveData_Click(object sender, EventArgs e) { var result = xmltv_program_data_saver.ShowDialog(); if (result != DialogResult.OK) return; try { using (Stream stream = File.Open(xmltv_program_data_saver.FileName, FileMode.Create)) { try { BinaryFormatter bin = new BinaryFormatter(); bin.Serialize(stream, Programs); } catch (Exception ex) { gLog.Log.Error.WriteLine(ex.ToString()); } } } catch (Exception ex) { gLog.Log.Error.WriteLine(ex.ToString()); } } } }