Пример #1
0
        private void InsertPostList(IEnumerable <Post> posts, int delay = 0)
        {
            IEnumerable <PostViewModel> newPosts = posts
                                                   .Where(x => !_seenPosts.Contains(x.Number))
                                                   .Select(x => new PostViewModel(x)
            {
                Tapped = new ModelCommand(() => { if (App.IsPostTapAllowed)
                                                  {
                                                      PostTapped(x.Number);
                                                  }
                                          }),
                NumberTapped = new ModelCommand(() => { if (App.IsPostTapAllowed)
                                                        {
                                                            OpenQuoteRegion(x.Number);
                                                        }
                                                }),
                ViewQuotes = new ModelCommand(() => { if (App.IsPostTapAllowed)
                                                      {
                                                          OpenQuoteRegion(x.Number);
                                                      }
                                              }),
                QuoteTapped = new ModelCommand <ulong>(postID => OpenQuoteRegion(postID))
            }).ToList();

            bool          hasScrollTarget = false;
            PostViewModel scrollTarget    = null;

            foreach (PostViewModel post in newPosts)
            {
                _seenPosts.Add(post.Number);
                if (post.Number == _scrollTarget)
                {
                    hasScrollTarget = true;
                    scrollTarget    = post;
                }
            }

            AllPosts.AddRange(newPosts, delay);
            ImagePosts.AddRange(newPosts.Where(x => x.HasImage), delay);
            SelectedPosts.AddRange(newPosts.Where(x => x.Number == _quotedPost || x.QuotesPost(_quotedPost)), delay);

            if (hasScrollTarget)
            {
                AllPosts.Flush();
                ScrollTargetLoaded(this, scrollTarget);
            }
        }
Пример #2
0
        private void OpenQuoteRegion(ulong postID)
        {
            if (IsPosting)
            {
                return;
            }

            // We have to use .All() to get posts that are queued, but not yet inserted too.
            IEnumerable <PostViewModel> posts = AllPosts.All().Where(x => x.Number == postID || x.QuotesPost(postID));

            SelectedPosts.Clear();
            SelectedPosts.IsPaused = false;
            SelectedPosts.AddRange(posts, 20);

            QuotedTitle = ">>" + postID;

            _quotedPost = postID;

            GoToState(PostsPageViewState.Quotes);
        }
        private void _post_Checked(bool status, CommonDataTypes.SocialElements.Post source)
        {
            if (SelectedPosts.Contains(source))
            {
                if (!status)
                {
                    SelectedPosts.Remove(source);
                }
            }
            else
            {
                if (status)
                {
                    SelectedPosts.Add(source);
                }
            }

            if (PostsSelected != null)
            {
                PostsSelected(SelectedPosts);
            }
        }