Exemplo n.º 1
0
        void parseRSSFeed(Object sender, OpenReadCompletedEventArgs e)
        {
            XElement resultXml;
            if (e.Error != null)
            {
                NotifyPropertyChanged("RSS_FEED_Errror");
                return;
            }
            else
            {
                IList<RSSItem> tmp = new List<RSSItem>();

                XNamespace web = "http://www.w3.org/2005/Atom";
                try
                {
                    resultXml = XElement.Load(e.Result);
                    DateTime t;

                    IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
                    DateTime lastUpdated = DateTime.MinValue;
                    if(settings.Contains(RSS_UPDATED))
                    {
                        lastUpdated = (DateTime) settings[RSS_UPDATED];
                    }

                    foreach (XElement result in resultXml.Descendants(web + "entry"))
                    {
                        RSSItem item = new RSSItem();
                        item.Title = result.Element(web + "title").Value.Trim();
                        item.Description = result.Element(web + "content").Value.Replace("&lt;br&gt;&lt;br&gt;", ". ").Replace("&lt;br&gt;", " ").Trim();

                        foreach (XAttribute a in result.Element(web + "link").Attributes())
                        {
                            if (a.Name.ToString().ToLower() == "href")
                            {
                                item.URL = a.Value.Trim();
                            }
                        }
                        item.ID = result.Element(web + "id").Value.Trim();
                        item.Read = false;
                        item.Later = false;
                        item.DateAddedToList = DateTime.Now;
                        if(DateTime.TryParse(result.Element(web + "updated").Value.Trim(), out t))
                        {
                            item.Updated = t;
                        }
                        if (item.Updated.CompareTo(lastUpdated) > 0)
                        {
                           tmp.Add(item);
                        }

                    }
                    if (!settings.Contains(RSS_UPDATED))
                    {
                        settings.Add(RSS_UPDATED, DateTime.Now);
                    }
                    else
                    {
                        settings[RSS_UPDATED] = DateTime.Now;
                    }
                    settings.Save();

                    foreach (RSSItem ri in tmp.OrderByDescending(x => x.Updated))
                    {
                        this.RSSItems.Add(ri);
                    }
                    tmp.Clear();

                }
                catch (System.Xml.XmlException ex)
                {

                }
                NotifyPropertyChanged("RSSItemsRetrived");
            }
        }
Exemplo n.º 2
0
 public RSSItem addItem(string title, string description, string url, string id, DateTime date, Boolean read, Boolean later, Boolean starred)
 {
     RSSItem item = new RSSItem();
     item.Title = title;
     item.Description = description;
     item.URL = url;
     item.ID = id;
     item.Read = read;
     item.Later = later;
     item.Starred = starred;
     item.Updated = date;
     item.DateAddedToList = date;
     this.RSSItems.Add(item);
     NotifyPropertyChanged("RSSItemsAdded");
     return item;
 }