Beispiel #1
0
        private SAThreadViewEventArgs CreateViewmodel(Uri parameter)
        {
            // try and parse a thread page from the html
            ThreadPageMetadata page = MetadataExtensions.ThreadPageFromUri(parameter);

            // since we have a page, create thread metadata from it
            ThreadMetadata thread = new ThreadMetadata()
            {
                ThreadID  = page.ThreadID,
                Title     = page.ThreadTitle,
                PageCount = page.LastPage
            };

            // create binding wrappers
            Data.ThreadDataSource     threadSource = new Data.ThreadDataSource(thread);
            Data.ThreadPageDataObject pageSource   = new Data.ThreadPageDataObject(page);

            // create viewmodel
            ViewModels.ThreadViewModel viewmodel = new ViewModels.ThreadViewModel();
            int pageIndex = pageSource.PageNumber - 1;

            viewmodel.UpdateModel(threadSource);
            viewmodel.Pages[pageIndex] = pageSource;

            // set the current page to page source
            viewmodel.SelectedItem  = viewmodel.Pages[pageIndex];
            viewmodel.SelectedIndex = pageIndex;
            return(new SAThreadViewEventArgs(viewmodel));
        }
Beispiel #2
0
        protected override object DoWork(int parameter)
        {
            ThreadViewPageState state = null;
            ThreadPageMetadata  page  = LoadPageFromWeb(parameter);

            if (page == null)
            {
                throw new NullReferenceException("Thread page must not be null.");
            }

            else
            {
                var pageData = new Data.ThreadPageDataObject(page);

                // mine data about the thread from the page
                Thread.Title = page.ThreadTitle;

                if (page.LastPage > 0)
                {
                    Thread.PageCount = page.LastPage;
                }

                // set the selected index to that of the loaded page
                SelectedIndex = page.PageNumber - 1;

                // create page state and save immeadiately so we don't have to load this again
                state = new ThreadViewPageState(Thread, pageData);

                try { ThreadViewPageState.Save(state); }
                catch (Exception) { }

                // setup page proxy and insert page at proper index
                SetPages(Thread.PageCount);
                Pages[SelectedIndex] = pageData;
            }

            return(state);
        }