Ejemplo n.º 1
0
 private void MaxPostNumberFilter()
 {
     if (Vm.MaxPostNumber >= 0)
     {
         PostsToFilter = PostsToFilter.Where(post => post.Number <= Vm.MaxPostNumber);
     }
 }
Ejemplo n.º 2
0
 private void DateRangeFilter()
 {
     if (Vm.UseDateRange && Vm.StartDate.Date <= Vm.EndDate.Date)
     {
         PostsToFilter = PostsToFilter.Where(post => Vm.StartDate.Date <= post.Date.Date && post.Date.Date <= Vm.EndDate.Date);
     }
 }
Ejemplo n.º 3
0
        private void Sort()
        {
            switch (Vm.SortingSetting)
            {
            case RedditPostSortingSettings.Newest_Added:
                PostsToFilter = PostsToFilter.OrderByDescending(post => post.Number);
                break;

            case RedditPostSortingSettings.Oldest_Added:
                PostsToFilter = PostsToFilter.OrderBy(post => post.Number);
                break;

            case RedditPostSortingSettings.Newest_By_Date:
                PostsToFilter = PostsToFilter.OrderByDescending(post => post.Date);
                break;

            case RedditPostSortingSettings.Oldest_By_Date:
                PostsToFilter = PostsToFilter.OrderBy(post => post.Date);
                break;

            case RedditPostSortingSettings.Subreddit:
                PostsToFilter = PostsToFilter.OrderBy(post => post.Subreddit.ToLower());
                break;

            case RedditPostSortingSettings.Random:
                Randomize();
                break;
            }
        }
Ejemplo n.º 4
0
 private void FavoriteFilter()
 {
     if (Vm.FavoritedOnly)
     {
         PostsToFilter = PostsToFilter.Where(s => s.IsFavorited);
     }
 }
Ejemplo n.º 5
0
 private void SavedFilter()
 {
     if (Vm.SavedOnly)
     {
         PostsToFilter = PostsToFilter.Where(s => s.IsSaved);
     }
 }
Ejemplo n.º 6
0
        private void Randomize()
        {
            List <RedditPost> posts = PostsToFilter.ToList();
            Random            r     = new Random(Vm.RandomizeSeed);

            int curr = posts.Count;

            while (curr > 1)
            {
                curr--;
                int        toSwap = r.Next(curr + 1);
                RedditPost value  = posts[toSwap];
                posts[toSwap] = posts[curr];
                posts[curr]   = value;
            }

            PostsToFilter = posts.AsEnumerable();
        }
Ejemplo n.º 7
0
        private void NsfwFilter()
        {
            if (DenyNsfw)
            {
                PostsToFilter = PostsToFilter.Where(s => !s.IsNsfw);
            }

            switch (Vm.NsfwSetting)
            {
            case NsfwSettings.No_Filter:
                break;

            case NsfwSettings.Nsfw_Only:
                PostsToFilter = PostsToFilter.Where(s => s.IsNsfw);
                break;

            case NsfwSettings.No_Nsfw:
                PostsToFilter = PostsToFilter.Where(s => !s.IsNsfw);
                break;
            }
        }
Ejemplo n.º 8
0
        private void SubredditTypeFilter()
        {
            if (!(Subreddits is null))
            {
                List <string> sfwSubs = Subreddits.Where(sub => !sub.IsNsfw).Select(sub => sub.SubredditName).ToList();

                switch (Vm.SubredditTypes)
                {
                case SubredditTypes.All:
                    break;

                case SubredditTypes.Sfw:
                    PostsToFilter = PostsToFilter.Where(posts => sfwSubs.Contains(posts.Subreddit));
                    break;

                case SubredditTypes.Nsfw:
                    PostsToFilter = PostsToFilter.Where(posts => !sfwSubs.Contains(posts.Subreddit));
                    break;
                }
            }
        }
Ejemplo n.º 9
0
        private void ContentTypeFilter()
        {
            List <RedditPost>  posts = PostsToFilter.ToList();
            List <ContentType> types = Enum.GetValues(typeof(ContentType)).Cast <ContentType>().ToList();

            for (int i = posts.Count - 1; i >= 0; i--)
            {
                RedditPost  post = posts[i];
                ContentType type = post.GetContentType();

                for (int j = 0; j < types.Count; j++)
                {
                    bool isWhitelisted = Vm.ContentTypes[j];

                    if (!isWhitelisted && types[j] == type)
                    {
                        posts.RemoveAt(i);
                    }
                }
            }

            PostsToFilter = posts.AsEnumerable();
        }