protected override IEnumerable <Data.SmileyDataModel> LoadPageInBackground(int index)
        {
            var list = new List <Data.SmileyDataModel>();

            if (System.ComponentModel.DesignerProperties.IsInDesignTool)
            {
                return(list);
            }

            // load smilies from the web, or from cache
            else if (this._smilies.Count == 0)
            {
                IEnumerable <TagMetadata> cache = CoreExtensions.LoadFromFile <List <TagMetadata> >("smilies.xml");

                if (cache == null)
                {
                    cache = ForumTasks.FetchAllSmilies();
                }

                this._smilies.AddRange(cache);

                if (this._smilies.Count != 0)
                {
                    this._smilies.SaveToFile("smilies.xml");
                }

                this._allSmilies = new List <Data.SmileyDataModel>(
                    this._smilies.Select(item => new Data.SmileyDataModel(item)));

                double maxPages = this._smilies.Count / SMILIES_PER_PAGE;

                this._maxPages = (int)Math.Ceiling(maxPages);
            }

            // create a sub set of smilies at a time
            if (index <= _maxPages)
            {
                var page = this._allSmilies.Page(index, SMILIES_PER_PAGE);
                list.AddRange(page);
            }

            return(list);
        }
 public override IList <ForumMetadata> LoadForumList()
 {
     return(new List <ForumMetadata>(ForumTasks.FetchAllForums()));
 }