--- trunk/libxmltv/Core/DataSourceBindable.cs 2013/03/13 15:50:07 134 +++ trunk/libxmltv/Core/DataSourceBindable.cs 2013/03/14 13:08:20 141 @@ -35,6 +35,19 @@ public string ChannelId { get; internal set; } public string ChannelName { get; internal set; } + public override string ToString() + { + StringBuilder builder = new StringBuilder(); + Type t = typeof(ChannelDefintion); + var props = t.GetProperties(); + foreach (var prop in props) + { + string name = prop.Name; + object value = prop.GetValue(this, null); + builder.AppendFormat("\t{0}: '{1}'", name, value == null ? "null" : value.ToString()); + } + return builder.ToString(); + } } //static private List known_columns; @@ -72,7 +85,8 @@ { ChannelDefintion definition = new ChannelDefintion(); definition.ChannelId = t.Id; - definition.ChannelName = t.MetaData[XMLTVConstants.Channels.ChannelDisplayName].FirstOrDefault().Value.ToString(); + definition.ChannelName = t.MetaData[XMLTVConstants.Channels.ChannelDisplayName].FirstOrDefault().Value.ToString(); + xmltv_logger.Verbose.Debug.WriteLine(definition.ToString()); list.Add(definition); } catch (Exception ex) { throw ex; } @@ -100,6 +114,7 @@ var col = args.First().ToString().ToLower(); switch (col) { + case "channelnumber": ordered = descending ? list.OrderByDescending(s => s.ChannelNumber) : list.OrderBy(s => s.ChannelNumber); break; case "channelname": ordered = descending ? list.OrderByDescending(s => s.ChannelName) : list.OrderBy(s => s.ChannelName); break; case "start": ordered = descending ? list.OrderByDescending(s => s.Start) : list.OrderBy(s => s.Start); break; case "stop": ordered = descending ? list.OrderByDescending(s => s.Stop) : list.OrderBy(s => s.Stop); break; @@ -113,7 +128,8 @@ col = arg.ToLower(); switch (col) { - case "channelname": ordered = descending ? ordered.ThenByDescending(s => s.ChannelName) : ordered.ThenBy(s => s.ChannelName); break; + case "channelnumber": ordered = descending ? ordered.ThenByDescending(s => s.ChannelNumber) : ordered.ThenBy(s => s.ChannelNumber); break; + case "channelname": ordered = descending ? list.OrderByDescending(s => s.ChannelName) : list.OrderBy(s => s.ChannelName); break; case "start": ordered = descending ? ordered.ThenByDescending(s => s.Start) : ordered.ThenBy(s => s.Start); break; case "stop": ordered = descending ? ordered.ThenByDescending(s => s.Stop) : ordered.ThenBy(s => s.Stop); break; case "description": ordered = descending ? ordered.ThenByDescending(s => s.Description) : ordered.ThenBy(s => s.Description); break; @@ -145,6 +161,7 @@ switch (columnname) { + case "channelnumber": ordered = list.ToList().FindAll(s => s.ChannelNumber == Convert.ToInt32(filtertext)); break; case "channelname": ordered = list.ToList().FindAll(s => s.ChannelName.ToLower().Contains(filtertext)); break; case "start": case "stop": @@ -170,21 +187,36 @@ public ProgramDefintion() { //ChannelId = string.Empty; + ChannelNumber = 0; ChannelName = string.Empty; - Start = new DateTime(); - Stop = new DateTime(); + Start = new DateTime().ToDateTimeString(); + Stop = new DateTime().ToDateTimeString(); Description = string.Empty; Title = string.Empty; SubTitle = string.Empty; } //public string ChannelId { get; internal set; } + public int ChannelNumber { get; internal set; } public string ChannelName { get; internal set; } - public DateTime Start { get; internal set; } - public DateTime Stop { get; internal set; } + public string Start { get; internal set; } + public string Stop { get; internal set; } public string Title { get; internal set; } public string SubTitle { get; internal set; } public string Description { get; internal set; } + public override string ToString() + { + StringBuilder builder = new StringBuilder(); + Type t = typeof(ProgramDefintion); + var props = t.GetProperties(); + foreach (var prop in props) + { + string name = prop.Name; + object value = prop.GetValue(this, null); + builder.AppendFormat("\t{0}: '{1}'", name, value == null ? "null" : value.ToString()); + } + return builder.ToString(); + } } public ProgramList() { } @@ -221,22 +253,28 @@ var channel = channels.Find(p => p.Id == ChannelId); if (channel != null) { - definition.ChannelName = channel.MetaData[XMLTVConstants.Channels.ChannelDisplayName].FirstOrDefault().Value.ToString(); + var channelname = channel.MetaData[XMLTVConstants.Channels.ChannelDisplayName].FirstOrDefault().Value.ToString(); + var split = channelname.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); + definition.ChannelNumber = Convert.ToInt32(split.First()); + definition.ChannelName = string.IsNullOrEmpty(split.Last()) ? string.Empty : split.Last().ToString(); + } else { - definition.ChannelName = string.Empty; + definition.ChannelNumber = 0; } } else { - definition.ChannelName = string.Empty; + definition.ChannelNumber = 0; } - definition.Start = (DateTime)t.MetaData[XMLTVConstants.Programs.ProgramStart]; - definition.Stop = (DateTime)t.MetaData[XMLTVConstants.Programs.ProgramStop]; + definition.Start = ((DateTime)t.MetaData[XMLTVConstants.Programs.ProgramStart]).ToDateTimeString(); + definition.Stop = ((DateTime)t.MetaData[XMLTVConstants.Programs.ProgramStop]).ToDateTimeString(); definition.Description = t.MetaData[XMLTVConstants.Programs.ProgramDescription].ToString(); definition.Title = t.MetaData[XMLTVConstants.Programs.ProgramTitle].ToString(); definition.SubTitle = t.MetaData[XMLTVConstants.Programs.ProgramSubTitle].ToString(); + + xmltv_logger.Verbose.Debug.WriteLine(definition.ToString()); list.Add(definition); } catch (Exception ex) { throw ex; }