Ejemplo n.º 1
0
        private void ListCollectionChanged <T>(DelayLoadingObservableCollection <T> target, NotifyCollectionChangedEventArgs e) where T : class
        {
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                target.Insert(e.NewStartingIndex, (T)e.NewItems[0]);
                break;

            case NotifyCollectionChangedAction.Move:
                target.Move(e.OldStartingIndex, e.NewStartingIndex);
                break;

            case NotifyCollectionChangedAction.Remove:
                target.RemoveAt(e.OldStartingIndex);
                break;

            case NotifyCollectionChangedAction.Reset:
                target.Clear();
                break;

            case NotifyCollectionChangedAction.Replace:
                Debug.Assert(false);
                break;
            }
        }
Ejemplo n.º 2
0
        public BoardsPageViewModel()
        {
            Favorites = new DelayLoadingObservableCollection <BoardViewModel>(100, true, 15, 100, 10);
            All       = new DelayLoadingObservableCollection <BoardViewModel>(50, true, 15, 100, 10);
            Watchlist = new DelayLoadingObservableCollection <ThreadViewModel>(100, true, 15, 100, 10);
            History   = new DelayLoadingObservableCollection <ThreadViewModel>(100, true, 15, 100, 10);

            Favorites.AddRange(CriticalSettingsManager.Current.Favorites.Select(x => new BoardViewModel(x)));
            Favorites.Flush(2);
            All.AddRange(CriticalSettingsManager.Current.Boards.Select(x => new BoardViewModel(x)));

            CriticalSettingsManager.Current.Favorites.CollectionChanged += FavoritesChanged;
            CriticalSettingsManager.Current.Boards.CollectionChanged    += AllChanged;

            App.InitialFrameRenderedTask.ContinueWith(task =>
            {
                if (_removedFromJournal)
                {
                    return;
                }

                Watchlist.AddRange(TransitorySettingsManager.Current.Watchlist.Select(x => new ThreadViewModel(x)));
                History.AddRange(TransitorySettingsManager.Current.History.Select(x => new ThreadViewModel(x)));

                TransitorySettingsManager.Current.Watchlist.CollectionChanged += WatchlistChanged;
                TransitorySettingsManager.Current.History.CollectionChanged   += HistoryChanged;
            }, TaskContinuationOptions.ExecuteSynchronously);
        }
Ejemplo n.º 3
0
        public override void Initialize(IDictionary <string, string> arguments, NavigationEventArgs e)
        {
            base.Initialize(arguments, e);

            _thread    = ThreadCache.Current.EnforceBoard(arguments["board"]).EnforceThread(ulong.Parse(arguments["thread"]));
            _seenPosts = new HashSet <ulong>();

            if (arguments.ContainsKey("post"))
            {
                _scrollTarget = ulong.Parse(arguments["post"]);
            }

            ViewState     = PostsPageViewState.None;
            PivotTitle    = _thread.Board.DisplayName + " - " + (string.IsNullOrEmpty(_thread.Subject) ? _thread.Number + "" : _thread.Subject);
            IsWatchlisted = TransitorySettingsManager.Current.Watchlist.Count(x => x.Board.Name == _thread.Board.Name && x.Number == _thread.Number) > 0;

            AllPosts      = new DelayLoadingObservableCollection <PostViewModel>(100, false, 15, 100, 10);
            ImagePosts    = new DelayLoadingObservableCollection <PostViewModel>(25, true, 35, 100, 10);
            SelectedPosts = new DelayLoadingObservableCollection <PostViewModel>(50, true, 3, 100, 10);

            QuotedTitle = "";
            Background  = _thread.Board.Brush;

            QuoteAreaVisibility = Visibility.Collapsed;
            ReplyAreaVisibility = Visibility.Collapsed;

            Thread thread = TransitorySettingsManager.Current.History.FirstOrDefault(x => x.Board.Name == _thread.Board.Name && x.Number == _thread.Number);

            if (thread != null)
            {
                TransitorySettingsManager.Current.History.Remove(thread);
            }
            TransitorySettingsManager.Current.History.Insert(0, _thread);

            InsertPostList(_thread.Posts.Values, 20);
            InitialUpdateTask = Update();

            if (!CriticalSettingsManager.Current.EnableManualRefresh)
            {
                _refreshTimer = new System.Threading.Timer(state =>
                {
                    Deployment.Current.Dispatcher.BeginInvoke(async() => await Update());
                }, null, 30 * 1000, 30 * 1000);
            }

            DoLoadCaptcha().ContinueWith(result =>
            {
                throw result.Exception;
            }, TaskContinuationOptions.OnlyOnFaulted | TaskContinuationOptions.ExecuteSynchronously);
        }
Ejemplo n.º 4
0
        public override void Initialize(IDictionary<string, string> arguments, NavigationEventArgs e)
        {
            base.Initialize(arguments, e);

            _thread = ThreadCache.Current.EnforceBoard(arguments["board"]).EnforceThread(ulong.Parse(arguments["thread"]));
            _seenPosts = new HashSet<ulong>();

            if (arguments.ContainsKey("post"))
            {
                _scrollTarget = ulong.Parse(arguments["post"]);
            }

            ViewState = PostsPageViewState.None;
            PivotTitle = _thread.Board.DisplayName + " - " + (string.IsNullOrEmpty(_thread.Subject) ? _thread.Number + "" : _thread.Subject);
            IsWatchlisted = TransitorySettingsManager.Current.Watchlist.Count(x => x.Board.Name == _thread.Board.Name && x.Number == _thread.Number) > 0;

            AllPosts = new DelayLoadingObservableCollection<PostViewModel>(100, false, 15, 100, 10);
            ImagePosts = new DelayLoadingObservableCollection<PostViewModel>(25, true, 35, 100, 10);
            SelectedPosts = new DelayLoadingObservableCollection<PostViewModel>(50, true, 3, 100, 10);

            QuotedTitle = "";
            Background = _thread.Board.Brush;

            QuoteAreaVisibility = Visibility.Collapsed;
            ReplyAreaVisibility = Visibility.Collapsed;

            Thread thread = TransitorySettingsManager.Current.History.FirstOrDefault(x => x.Board.Name == _thread.Board.Name && x.Number == _thread.Number);
            if (thread != null)
            {
                TransitorySettingsManager.Current.History.Remove(thread);
            }
            TransitorySettingsManager.Current.History.Insert(0, _thread);

            InsertPostList(_thread.Posts.Values, 20);
            InitialUpdateTask = Update();

            if (!CriticalSettingsManager.Current.EnableManualRefresh)
            {
                _refreshTimer = new System.Threading.Timer(state =>
                {
                    Deployment.Current.Dispatcher.BeginInvoke(async () => await Update());
                }, null, 30 * 1000, 30 * 1000);
            }

            DoLoadCaptcha().ContinueWith(result =>
            {
                throw result.Exception;
            }, TaskContinuationOptions.OnlyOnFaulted | TaskContinuationOptions.ExecuteSynchronously);
        }