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

Diff of /trunk/libxmltv/Core/DataSourceBindable.cs

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

revision 141 by william, Thu Mar 14 13:08:20 2013 UTC revision 227 by william, Sun Mar 17 03:57:57 2013 UTC
# Line 121  namespace libxmltv.Core Line 121  namespace libxmltv.Core
121                          case "description": ordered = descending ? list.OrderByDescending(s => s.Description) : list.OrderBy(s => s.Description); break;                          case "description": ordered = descending ? list.OrderByDescending(s => s.Description) : list.OrderBy(s => s.Description); break;
122                          case "title": ordered = descending ? list.OrderByDescending(s => s.Title) : list.OrderBy(s => s.Title); break;                          case "title": ordered = descending ? list.OrderByDescending(s => s.Title) : list.OrderBy(s => s.Title); break;
123                          case "subtitle": ordered = descending ? list.OrderByDescending(s => s.SubTitle) : list.OrderBy(s => s.SubTitle); break;                          case "subtitle": ordered = descending ? list.OrderByDescending(s => s.SubTitle) : list.OrderBy(s => s.SubTitle); break;
124                            case "rating": ordered = descending ? list.OrderByDescending(s => s.Rating) : list.OrderBy(s => s.Rating); break;
125                      }                      }
126                      //bool first = true;                      //bool first = true;
127                      foreach (var arg in args.Skip(1))                      foreach (var arg in args.Skip(1))
# Line 135  namespace libxmltv.Core Line 136  namespace libxmltv.Core
136                              case "description": ordered = descending ? ordered.ThenByDescending(s => s.Description) : ordered.ThenBy(s => s.Description); break;                              case "description": ordered = descending ? ordered.ThenByDescending(s => s.Description) : ordered.ThenBy(s => s.Description); break;
137                              case "title": ordered = descending ? ordered.ThenByDescending(s => s.Title) : ordered.ThenBy(s => s.Title); break;                              case "title": ordered = descending ? ordered.ThenByDescending(s => s.Title) : ordered.ThenBy(s => s.Title); break;
138                              case "subtitle": ordered = descending ? ordered.ThenByDescending(s => s.SubTitle) : ordered.ThenBy(s => s.SubTitle); break;                              case "subtitle": ordered = descending ? ordered.ThenByDescending(s => s.SubTitle) : ordered.ThenBy(s => s.SubTitle); break;
139                                case "rating": ordered = descending ? ordered.ThenByDescending(s => s.Rating) : ordered.ThenBy(s => s.Rating); break;
140                          }                          }
141                      }                      }
142                      list = new ProgramDefinitionList(ordered.ToList());                      list = new ProgramDefinitionList(ordered.ToList());
# Line 163  namespace libxmltv.Core Line 165  namespace libxmltv.Core
165                      {                      {
166                          case "channelnumber": ordered = list.ToList().FindAll(s => s.ChannelNumber == Convert.ToInt32(filtertext)); break;                          case "channelnumber": ordered = list.ToList().FindAll(s => s.ChannelNumber == Convert.ToInt32(filtertext)); break;
167                          case "channelname": ordered = list.ToList().FindAll(s => s.ChannelName.ToLower().Contains(filtertext)); break;                          case "channelname": ordered = list.ToList().FindAll(s => s.ChannelName.ToLower().Contains(filtertext)); break;
168                          case "start":                          case "start": ordered = list.ToList().FindAll(s => s.Start.ToLower().Contains(filtertext)); break;
169                          case "stop":                          case "stop": ordered = list.ToList().FindAll(s => s.Stop.ToLower().Contains(filtertext)); break;
                             throw new ArgumentException("columnname", string.Format("Filtering for column: '{0}' has not been implemented", columnname));  
170                          case "description": ordered = list.ToList().FindAll(s => s.Description.ToLower().Contains(filtertext)); break;                          case "description": ordered = list.ToList().FindAll(s => s.Description.ToLower().Contains(filtertext)); break;
171                          case "title": ordered = list.ToList().FindAll(s => s.Title.ToLower().Contains(filtertext)); break;                          case "title": ordered = list.ToList().FindAll(s => s.Title.ToLower().Contains(filtertext)); break;
172                          case "subtitle": ordered = list.ToList().FindAll(s => s.SubTitle.ToLower().Contains(filtertext)); break;                          case "subtitle": ordered = list.ToList().FindAll(s => s.SubTitle.ToLower().Contains(filtertext)); break;
173                            case "rating": ordered = list.ToList().FindAll(s => s.Rating.ToLower().Contains(filtertext)); break;
174                      }                                        }                  
175                      list = new ProgramDefinitionList(ordered.ToList());                      list = new ProgramDefinitionList(ordered.ToList());
176                      if (list.Count == 0)                      if (list.Count == 0)
# Line 182  namespace libxmltv.Core Line 184  namespace libxmltv.Core
184              }              }
185              #endregion              #endregion
186          }          }
187          private class ProgramDefintion : IProgramDefinition          public class ProgramDefintion : IProgramDefinition, IEquatable<IProgramDefinition>
188          {          {
189              public ProgramDefintion()              public ProgramDefintion()
190              {              {
# Line 194  namespace libxmltv.Core Line 196  namespace libxmltv.Core
196                  Description = string.Empty;                  Description = string.Empty;
197                  Title = string.Empty;                  Title = string.Empty;
198                  SubTitle = string.Empty;                  SubTitle = string.Empty;
199                    Rating = string.Empty;
200              }              }
201              //public string ChannelId { get; internal set; }              //public string ChannelId { get; internal set; }
202              public int ChannelNumber { get; internal set; }              public int ChannelNumber { get; set; }
203              public string ChannelName { get; internal set; }              public string ChannelName { get; set; }
204              public string Start { get; internal set; }              public string Start { get; set; }
205              public string Stop { get; internal set; }              public string Stop { get; set; }
206              public string Title { get; internal set; }              public string Title { get; set; }
207              public string SubTitle { get; internal set; }              public string SubTitle { get; set; }
208              public string Description { get; internal set; }              public string Description { get; set; }
209                public string Rating { get; set; }
210              public override string ToString()              public override string ToString()
211              {              {
212                  StringBuilder builder = new StringBuilder();                  StringBuilder builder = new StringBuilder();
# Line 217  namespace libxmltv.Core Line 220  namespace libxmltv.Core
220                  }                  }
221                  return builder.ToString();                  return builder.ToString();
222              }              }
223              
224                public bool Equals(IProgramDefinition other)
225                {
226                    return this.ToString() == other.ToString();
227                }
228                public override bool Equals(object obj)
229                {
230                    if (obj == null) { throw new ArgumentNullException("obj", "Object to compare cannot be null"); }
231                    if (obj.GetType().IsAssignableFrom(typeof(IProgramDefinition)))
232                    {
233                        return this.Equals((IProgramDefinition)obj);
234                    }
235                    return base.Equals(obj);
236                }
237                public override int GetHashCode()
238                {
239                    return this.ToString().GetHashCode();
240                }
241          }          }
242          public ProgramList() { }          public ProgramList() { }
243          //public object ConvertObjectData(object source) { return this.ConvertData(source); }          //public object ConvertObjectData(object source) { return this.ConvertData(source); }
# Line 274  namespace libxmltv.Core Line 294  namespace libxmltv.Core
294                      definition.Title = t.MetaData[XMLTVConstants.Programs.ProgramTitle].ToString();                      definition.Title = t.MetaData[XMLTVConstants.Programs.ProgramTitle].ToString();
295                      definition.SubTitle = t.MetaData[XMLTVConstants.Programs.ProgramSubTitle].ToString();                      definition.SubTitle = t.MetaData[XMLTVConstants.Programs.ProgramSubTitle].ToString();
296    
297                        
298                        var extras = t.GetExtraMetaData();
299                        foreach (var extra in extras)
300                        {
301                            if (extra.Name.ToLower() == "rating")
302                            {
303                                var root = extra.AsXElement();
304                                var child = root.Descendants("value").FirstOrDefault();
305                                if (child == null) { throw new NullReferenceException("Expected rating element to have a child elemented named: value"); }
306                                string value = child.Value;
307                                definition.Rating = value;
308                            }
309                        }
310                      xmltv_logger.Verbose.Debug.WriteLine(definition.ToString());                      xmltv_logger.Verbose.Debug.WriteLine(definition.ToString());
311                      list.Add(definition);                      list.Add(definition);
312                  }                  }

Legend:
Removed from v.141  
changed lines
  Added in v.227

  ViewVC Help
Powered by ViewVC 1.1.22