private void FavoriteForumButton_OnClick(object sender, RoutedEventArgs e)
        {
            // TODO: Move to view model? Change click handler?
            var forumList = new List <ForumEntity>();
            ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;

            if (itemGridView.SelectedItems.Any())
            {
                forumList.AddRange(itemGridView.SelectedItems.Cast <ForumEntity>());
                List <long> forumIdList = forumList.Select(forum => forum.ForumId).ToList();

                localSettings.Values["_forumIds"] = SerializeListToXml(forumIdList);
                _favoritesEntity = new ForumCategoryEntity("Favorites", "forumid=48")
                {
                    ForumList = forumList
                };
                Locator.ViewModels.MainForumsPageVm.SetFavoriteForums(new ObservableCollection <ForumCategoryEntity> {
                    _favoritesEntity
                });
            }
            else
            {
                localSettings.Values["_forumIds"] = null;
                Locator.ViewModels.MainForumsPageVm.SetFavoriteForums(null);
            }
        }
        public async Task GetFavoriteForums()
        {
            var forumEntities = await _db.GetFavoriteForumsAsync();

            var favorites = ForumGroupList.FirstOrDefault(node => node.Name.Equals("Favorites"));

            if (!forumEntities.Any())
            {
                if (favorites != null)
                {
                    ForumGroupList.Remove(favorites);
                }
                OnPropertyChanged("ForumGroupList");
                return;
            }

            _favoritesEntity = new ForumCategoryEntity
            {
                Name      = "Favorites",
                Location  = string.Format(Constants.ForumPage, "forumid=48"),
                ForumList = forumEntities
            };

            if (favorites == null)
            {
                ForumGroupList.Insert(0, _favoritesEntity);
            }
            else
            {
                ForumGroupList.RemoveAt(0);
                ForumGroupList.Insert(0, _favoritesEntity);
            }

            OnPropertyChanged("ForumGroupList");
        }
Example #3
0
 public async void GetFavoriteForums()
 {
     using (var db = new FavoriteForumContext())
     {
         var forumEntities = db.Forums.ToList();
         _favoritesEntity = new ForumCategoryEntity("Favorites", "forumid=48")
         {
             ForumList = forumEntities
         };
         SetFavoriteForums(new ObservableCollection <ForumCategoryEntity> {
             _favoritesEntity
         });
     }
 }
Example #4
0
        public async Task <List <ForumCategoryEntity> > GetForumCategoryMainPage()
        {
            var forumGroupList = new List <ForumCategoryEntity>();

            var doc = (await _webManager.DownloadHtml(Constants.FORUM_LIST_PAGE)).Document;

            HtmlNode forumNode = doc.DocumentNode.Descendants("select").FirstOrDefault(node => node.GetAttributeValue("name", string.Empty).Equals("forumid"));

            if (forumNode != null)
            {
                var forumNodes = forumNode.Descendants("option");

                foreach (var node in forumNodes)
                {
                    var value = node.Attributes["value"].Value;
                    int id;
                    if (!int.TryParse(value, out id) || id <= -1)
                    {
                        continue;
                    }
                    if (node.NextSibling.InnerText.Contains("--"))
                    {
                        string forumName        = WebUtility.HtmlDecode(node.NextSibling.InnerText.Replace("-", string.Empty));
                        bool   isSubforum       = node.NextSibling.InnerText.Count(c => c == '-') > 2;
                        var    forumSubCategory = new ForumEntity(forumName, string.Format(Constants.FORUM_PAGE, value), string.Empty, isSubforum);
                        forumGroupList.LastOrDefault().ForumList.Add(forumSubCategory);
                    }
                    else
                    {
                        string forumName  = WebUtility.HtmlDecode(node.NextSibling.InnerText);
                        var    forumGroup = new ForumCategoryEntity(forumName, string.Format(Constants.FORUM_PAGE, value));
                        forumGroupList.Add(forumGroup);
                    }
                }
            }

#if DEBUG
            forumGroupList[3].ForumList.Add(AddDebugForum());
#endif

            return(forumGroupList);
        }
        private void GetFavoriteForums()
        {
            if (!_localSettings.Values.ContainsKey("_forumIds"))
            {
                return;
            }
            DeserializeXmlToList((string)_localSettings.Values["_forumIds"]);
            var forumEntities = new List <ForumEntity>();

            foreach (var f in ForumGroupList.Select(forumGroup => forumGroup.ForumList.Where(forum => _forumIds.Contains(forum.ForumId)).ToList()))
            {
                forumEntities.AddRange(f);
            }
            _favoritesEntity = new ForumCategoryEntity("Favorites", "forumid=48")
            {
                ForumList = forumEntities
            };
            SetFavoriteForums(new ObservableCollection <ForumCategoryEntity> {
                _favoritesEntity
            });
        }
Example #6
0
        public async Task <ObservableCollection <ForumCategoryEntity> > GetForumCategoryMainPage()
        {
            var forumGroupList = new ObservableCollection <ForumCategoryEntity>();
            var result         = await _webManager.GetData(Constants.FORUM_LIST_PAGE);

            HtmlDocument doc = result.Document;

            HtmlNode forumNode =
                doc.DocumentNode.Descendants("select")
                .FirstOrDefault(node => node.GetAttributeValue("name", string.Empty).Equals("forumid"));

            if (forumNode != null)
            {
                try
                {
                    IEnumerable <HtmlNode> forumNodes = forumNode.Descendants("option");

                    foreach (HtmlNode node in forumNodes)
                    {
                        string value = node.Attributes["value"].Value;
                        int    id;
                        if (!int.TryParse(value, out id) || id <= -1)
                        {
                            continue;
                        }
                        if (node.NextSibling.InnerText.Contains("--"))
                        {
                            string forumName =
                                WebUtility.HtmlDecode(node.NextSibling.InnerText.Replace("-", string.Empty));
                            bool isSubforum       = node.NextSibling.InnerText.Count(c => c == '-') > 2;
                            var  forumSubCategory = new ForumEntity
                            {
                                Name       = forumName.Trim(),
                                Location   = string.Format(Constants.FORUM_PAGE, value),
                                IsSubforum = isSubforum
                            };
                            forumSubCategory.SetForumId();
                            forumGroupList.LastOrDefault().ForumList.Add(forumSubCategory);
                        }
                        else
                        {
                            string forumName  = WebUtility.HtmlDecode(node.NextSibling.InnerText);
                            var    forumGroup = new ForumCategoryEntity(forumName,
                                                                        string.Format(Constants.FORUM_PAGE, value));
                            forumGroupList.Add(forumGroup);
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception("Main Forum Parsing Error: " + ex.StackTrace);
                }
            }

#if DEBUG
            if (forumGroupList.Any())
            {
                forumGroupList[3].ForumList.Add(AddDebugForum());
            }
#endif

            return(forumGroupList);
        }
        public async Task GetFavoriteForums()
        {
            var forumEntities = await _db.GetFavoriteForumsAsync();
            var favorites = ForumGroupList.FirstOrDefault(node => node.Name.Equals("Favorites"));
            if (!forumEntities.Any())
            {
                if (favorites != null)
                {
                    ForumGroupList.Remove(favorites);
                }
                OnPropertyChanged("ForumGroupList");
                return;
            }

            _favoritesEntity = new ForumCategoryEntity
            {
                Name = "Favorites",
                Location = string.Format(Constants.ForumPage, "forumid=48"),
                ForumList = forumEntities
            };

            if (favorites == null)
            {
                ForumGroupList.Insert(0, _favoritesEntity);
            }
            else
            {
                ForumGroupList.RemoveAt(0);
                ForumGroupList.Insert(0, _favoritesEntity);
            }

            OnPropertyChanged("ForumGroupList");
        }