/// <summary>
 /// Populates the page with content passed during navigation.  Any saved state is also
 /// provided when recreating a page from a prior session.
 /// </summary>
 /// <param name="navigationParameter">The parameter value passed to
 /// <see cref="Frame.Navigate(Type, Object)"/> when this page was initially requested.
 /// </param>
 /// <param name="pageState">A dictionary of state preserved by this page during an earlier
 /// session.  This will be null the first time a page is visited.</param>
 protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
 {
     // TODO: Create an appropriate data model for your problem domain to replace the sample data
     group = AppData.Default.GetGroup((String)navigationParameter);
     if (group == null)
         this.Frame.Navigate(typeof(GroupedItemsPage), "AllGroups");
     else
     {
         this.DefaultViewModel["Group"] = group;
         this.DefaultViewModel["Items"] = group.Items;
     }
 }
Beispiel #2
0
        public override async Task GetFeedAsync()
        {
            try
            {
                this.State = FeedState.Loading;

                if (Windows.Networking.Connectivity.NetworkInformation.GetInternetConnectionProfile()!=null && Windows.Networking.Connectivity.NetworkInformation.GetInternetConnectionProfile().GetNetworkConnectivityLevel() == Windows.Networking.Connectivity.NetworkConnectivityLevel.InternetAccess)
                {

                    DataGroup group = null;
                    if (TargetData == null)
                    {
                        TargetData = new DataGroup();
                    }
                    group = TargetData as DataGroup;

                    XmlDocument doc = await XmlDocument.LoadFromUriAsync(new Uri(Url));

                    //Empty group items, in case we are refreshing the list
                    group.Items.Clear();

                    IXmlNode node = null;
                    node = doc.SelectSingleNode("rss/channel/title");

                    int count = 0;

                    foreach (var item in doc.SelectSingleNode("rss/channel").ChildNodes.Where(n => n.NodeName == "item"))
                    {
                        DataItem feedItem = new DataItem();
                        feedItem.Title = item.SelectSingleNode("title").InnerText;
                        feedItem.Group = group;

                        string itemXML = item.GetXml();

                        feedItem.Content = HTML.HTMLUtility.ConvertHtmlToString(item.SelectSingleNode("description").InnerText);

                        if (feedItem.Content.Length > 100)
                            feedItem.Description = feedItem.Content.Substring(0, 100) + "...";
                        else
                            feedItem.Description = feedItem.Content;

                        feedItem.Url = feedItem.UniqueId = item.SelectSingleNode("link").InnerText;

                        //Try to find the image in non standard RSS feeds
                        Match m = Regex.Match(itemXML.ToLower(), "<image>(.*.jpg)</image>");
                        if (m.Success)
                        {
                            string image = m.Groups[1].Value;
                            if (image != null)
                            {
                                if (string.IsNullOrEmpty(FindImagePath) == false && string.IsNullOrEmpty(ReplaceImagePath) == false)
                                    image = image.Replace(FindImagePath, ReplaceImagePath);
                                feedItem.SetImage(image);
                                feedItem.HasImage = true;
                            }
                        }
                        else
                        {
                            Match m2 = Regex.Match(itemXML, "(src|url)=(\"|\')([^<]*\\.jpg)");
                            if (m2.Success)
                            {
                                string image = m2.Groups[3].Value;
                                if (image != null)
                                {
                                    if (string.IsNullOrEmpty(FindImagePath) == false && string.IsNullOrEmpty(ReplaceImagePath) == false)
                                        image = image.Replace(FindImagePath, ReplaceImagePath);

                                    feedItem.SetImage(image);
                                    feedItem.HasImage = true;
                                }
                            }
                        }

                        group.Items.Add(feedItem);
                        count++;
                    }

                    group.PrepareGroupForBinding();
                    this.LastUpdateTime = DateTime.Now;

                    if (group.Items.Count == 0)
                    {
                        this.ErrorMessage = "There are no items in this list.";
                        this.State = FeedState.Empty;
                    }
                    else
                    {
                        this.ErrorMessage = string.Empty;
                        this.State = FeedState.Loaded;

                        if (ShowTileNotifications)
                            RefreshTileNotifications(group.Items);
                    }
                }
                else
                {
                    this.ErrorMessage = "لا يوجد اتصال بالانترنت.";
                    this.State = FeedState.Offline;
                }
            }
            catch (Exception ex)
            {
                this.ErrorMessage = ex.Message;
                this.State = FeedState.Error;
            }
        }
        public override async Task GetFeedAsync()
        {
            try
            {
                this.State = FeedState.Loading;

                String ITEM_CONTENT = String.Format("Item Content: {0}\n\n{0}\n\n{0}\n\n{0}\n\n{0}\n\n{0}\n\n{0}",
                            "Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient ullamcorper aliquet fusce suspendisse nunc hac eleifend amet blandit facilisi condimentum commodo scelerisque faucibus aenean ullamcorper ante mauris dignissim consectetuer nullam lorem vestibulum habitant conubia elementum pellentesque morbi facilisis arcu sollicitudin diam cubilia aptent vestibulum auctor eget dapibus pellentesque inceptos leo egestas interdum nulla consectetuer suspendisse adipiscing pellentesque proin lobortis sollicitudin augue elit mus congue fermentum parturient fringilla euismod feugiat");

                AppData.Default.ItemGroups.Clear();

                var group1 = new DataGroup
                {
                    UniqueId = "Group-1",
                    Title = "Group Title: 1",
                    Subtitle = "Group Subtitle: 1",
                    ImagePath = "Assets/DarkGray.png",
                    Description = "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante"
                };
                group1.Items.Add(new DataItem
                {
                    UniqueId = "Group-1-Item-1",
                    Title = "Item Title: 1",
                    Subtitle = "Item Subtitle: 1",
                    Url = "http://preview.windows.com",
                    ImagePath = "Assets/MediumGray.png",
                    Description = "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
                    Content = ITEM_CONTENT,
                    Group = group1
                });
                group1.Items.Add(new DataItem
                {
                    UniqueId = "Group-1-Item-2",
                    Title = "Item Title: 2",
                    Subtitle = "Item Subtitle: 2",
                    Url = "http://preview.windows.com",
                    ImagePath = "Assets/MediumGray.png",
                    Description = "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
                    Content = ITEM_CONTENT,
                    Group = group1
                });
                group1.Items.Add(new DataItem
                {
                    UniqueId = "Group-1-Item-3",
                    Title = "Item Title: 3",
                    Subtitle = "Item Subtitle: 3",
                    Url = "http://preview.windows.com",
                    ImagePath = "Assets/MediumGray.png",
                    Description = "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
                    Content = ITEM_CONTENT,
                    Group = group1
                });
                group1.Items.Add(new DataItem
                {
                    UniqueId = "Group-1-Item-4",
                    Title = "Item Title: 4",
                    Subtitle = "Item Subtitle: 4",
                    Url = "http://preview.windows.com",
                    ImagePath = "Assets/MediumGray.png",
                    Description = "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
                    Content = ITEM_CONTENT,
                    Group = group1
                });
                group1.Items.Add(new DataItem
                {
                    UniqueId = "Group-1-Item-5",
                    Title = "Item Title: 5",
                    Subtitle = "Item Subtitle: 5",
                    Url = "http://preview.windows.com",
                    ImagePath = "Assets/MediumGray.png",
                    Description = "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
                    Content = ITEM_CONTENT,
                    Group = group1
                });
                AppData.Default.ItemGroups.Add(group1);
                group1.PrepareGroupForBinding();

                if (ShowTileNotifications)
                    RefreshTileNotifications(group1.Items);

                var group2 = new DataGroup
                {
                    UniqueId = "Group-2",
                    Title = "Group Title: 2",
                    Subtitle = "Group Subtitle: 2",
                    ImagePath = "Assets/DarkGray.png",
                    Description = "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante"
                };
                group2.Items.Add(new DataItem
                {
                    UniqueId = "Group-2-Item-1",
                    Title = "Item Title: 1",
                    Subtitle = "Item Subtitle: 1",
                    Url = "http://preview.windows.com",
                    ImagePath = "Assets/MediumGray.png",
                    Description = "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
                    Content = ITEM_CONTENT,
                    Group = group2
                });
                group2.Items.Add(new DataItem
                {
                    UniqueId = "Group-2-Item-2",
                    Title = "Item Title: 2",
                    Subtitle = "Item Subtitle: 2",
                    Url = "http://preview.windows.com",
                    ImagePath = "Assets/MediumGray.png",
                    Description = "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
                    Content = ITEM_CONTENT,
                    Group = group2
                });
                group2.Items.Add(new DataItem
                {
                    UniqueId = "Group-2-Item-3",
                    Title = "Item Title: 3",
                    Subtitle = "Item Subtitle: 3",
                    Url = "http://preview.windows.com",
                    ImagePath = "Assets/MediumGray.png",
                    Description = "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
                    Content = ITEM_CONTENT,
                    Group = group2
                });
                AppData.Default.ItemGroups.Add(group2);
                group2.PrepareGroupForBinding();

                if (ShowTileNotifications)
                    RefreshTileNotifications(group2.Items);

                var group3 = new DataGroup
                {
                    UniqueId = "Group-3",
                    Title = "Group Title: 3",
                    Subtitle = "Group Subtitle: 3",
                    ImagePath = "Assets/DarkGray.png",
                    Description = "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante"
                };
                group3.Items.Add(new DataItem
                {
                    UniqueId = "Group-3-Item-1",
                    Title = "Item Title: 1",
                    Subtitle = "Item Subtitle: 1",
                    Url = "http://preview.windows.com",
                    ImagePath = "Assets/MediumGray.png",
                    Description = "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
                    Content = ITEM_CONTENT,
                    Group = group3
                });
                group3.Items.Add(new DataItem
                {
                    UniqueId = "Group-3-Item-2",
                    Title = "Item Title: 2",
                    Subtitle = "Item Subtitle: 2",
                    Url = "http://preview.windows.com",
                    ImagePath = "Assets/MediumGray.png",
                    Description = "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
                    Content = ITEM_CONTENT,
                    Group = group3
                });
                group3.Items.Add(new DataItem
                {
                    UniqueId = "Group-3-Item-3",
                    Title = "Item Title: 3",
                    Subtitle = "Item Subtitle: 3",
                    Url = "http://preview.windows.com",
                    ImagePath = "Assets/MediumGray.png",
                    Description = "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
                    Content = ITEM_CONTENT,
                    Group = group3
                });
                group3.Items.Add(new DataItem
                {
                    UniqueId = "Group-3-Item-4",
                    Title = "Item Title: 4",
                    Subtitle = "Item Subtitle: 4",
                    Url = "http://preview.windows.com",
                    ImagePath = "Assets/MediumGray.png",
                    Description = "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
                    Content = ITEM_CONTENT,
                    Group = group3
                });
                group3.Items.Add(new DataItem
                {
                    UniqueId = "Group-3-Item-5",
                    Title = "Item Title: 5",
                    Subtitle = "Item Subtitle: 5",
                    Url = "http://preview.windows.com",
                    ImagePath = "Assets/MediumGray.png",
                    Description = "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
                    Content = ITEM_CONTENT,
                    Group = group3
                });
                group3.Items.Add(new DataItem
                {
                    UniqueId = "Group-3-Item-6",
                    Title = "Item Title: 6",
                    Subtitle = "Item Subtitle: 6",
                    Url = "http://preview.windows.com",
                    ImagePath = "Assets/MediumGray.png",
                    Description = "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
                    Content = ITEM_CONTENT,
                    Group = group3
                });
                group3.Items.Add(new DataItem
                {
                    UniqueId = "Group-3-Item-7",
                    Title = "Item Title: 7",
                    Subtitle = "Item Subtitle: 7",
                    Url = "http://preview.windows.com",
                    ImagePath = "Assets/MediumGray.png",
                    Description = "Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.",
                    Content = ITEM_CONTENT,
                    Group = group3
                });
                AppData.Default.ItemGroups.Add(group3);
                group3.PrepareGroupForBinding();

                if (ShowTileNotifications)
                    RefreshTileNotifications(group3.Items);

                this.LastUpdateTime = DateTime.Now;
                this.ErrorMessage = string.Empty;
                this.State = FeedState.Loaded;

                await base.GetFeedAsync();
            }
            catch (Exception ex)
            {
                this.ErrorMessage = ex.Message;
                this.State = FeedState.Error;
            }
        }
        public void MergeItemsFromDataGroup(DataGroup sourceGroup)
        {
            for (int s = 0; s < sourceGroup.Items.Count; s++)
			{
			    var item = sourceGroup.Items[s];
		        bool isFound = false;
                for (int i = 0; i < Items.Count; i++)
                {
                    var targetItem = Items[i];

                    if (item.UniqueId == targetItem.UniqueId)
                    {
                        isFound = true;
                        Items.Remove(targetItem);
                        Items.Insert(s, item);
                        break;
                    }
                }

                if (isFound == false)
                {
                    Items.Add(item);
                }
            }
        }
Beispiel #5
0
        public void AddFeed(string url, string title)
        {
            foreach (var g in ItemGroups)
            {
                if (g.Title == title)
                {
                    return;
                }
            }

            //Not found
            DataGroup group = new DataGroup();
            group.SummaryItemsCount = 5;
            group.FirstItemGridWidth = 2;
            group.FirstItemGridHeight = 2;
            group.UniqueId = title;
            group.Title = title;
            ItemGroups.Add(group);

            RssFeed feed = new RssFeed();
            feed.Url = url;
            feed.UpdateInterval = TimeSpan.FromMinutes(30);
            feed.TargetData = group;
            Feeds.Add(feed);
        }