예제 #1
0
 private bool DeckMatchesSelectedTags(Deck deck)
 {
     return(SelectedTags.Any(t => t == "All") ||
            (TagOperation == TagFilerOperation.Or
                                    ? SelectedTags.Any(t => deck.Tags.Contains(t) || t == "None" && deck.Tags.Count == 0)
                                    : SelectedTags.All(t => deck.Tags.Contains(t) || t == "None" && deck.Tags.Count == 0)));
 }
예제 #2
0
        public async ValueTask LoadTags()
        {
            try
            {
                if (Interlocked.Increment(ref _loading) != 1)
                {
                    return;
                }
                if (_loaded)
                {
                    return;
                }
                var tags = await Model.ListTags(_query.QueryString, _query.TypeId, _query.Offset, _query.Limit);

                if (tags != null && tags.Count > 0)
                {
                    _query.Offset += _query.Limit;
                    foreach (var tag in tags.Where(it => SelectedTags.All(tag => tag.ObjectId != it.ObjectId)))
                    {
                        var displayTag = new DisplayTag(tag);
                        displayTag.ClickCommand = new AsyncCommand(async() =>
                        {
                            if (SelectedTags.All(it => it.ObjectId != displayTag.ObjectId))
                            {
                                displayTag.ClickCommand = new AsyncCommand(async() =>
                                {
                                    SelectedTags.Remove(displayTag);
                                });
                                SelectedTags.Add(displayTag);
                            }
                        });
                        SearchResult.Add(displayTag);
                    }
                }
                else
                {
                    _loaded = true;
                }
            }
            finally
            {
                Interlocked.Decrement(ref _loading);
            }
        }
예제 #3
0
 bool Filter(Note x) => SelectedTags.All(t => x.Tags.Contains(t)) && (SelectedNotes.Any() ? SelectedNotes.Any(n => n == x.Name) : true);