Esempio n. 1
0
 private IEnumerable <IFilter> GenerateFilters(IEnumerable <string> queries)
 {
     foreach (var s in queries)
     {
         FilterCluster cluster = null;
         try
         {
             cluster = QueryCompiler.ToFilter(s);
         }
         catch (Exception e)
         {
             ExceptionStorage.Register(e, ExceptionCategory.ConfigurationError, "フィルタ クエリを読み取れません: " + s);
         }
         if (cluster != null)
         {
             if (cluster.Filters.Count() == 1)
             {
                 var filter = cluster.Filters.First();
                 if (cluster.Negate)
                 {
                     filter.Negate = !filter.Negate;
                 }
                 yield return(filter);
             }
             else
             {
                 yield return(cluster);
             }
         }
     }
 }
 public FilterElementEditorViewModel(FilterBase filter = null)
 {
     if (filter != null)
     {
         this._currentSelectedItem = filter.Identifier + ": " + filter.Description;
         this._prevDescString      = this._currentSelectedItem;
         ConfiguredFilterBase      = QueryCompiler.ToFilter(filter.ToQuery()).Filters.First() as FilterBase;
         this.IsNegate             = filter.Negate;
     }
     else
     {
         this.CurrentSelectedItem = GetFilterDescriptions().First();
     }
     this._filterDescriptions = GetFilterDescriptions().ToArray();
 }
Esempio n. 3
0
 public static FilterCluster Copy(this FilterCluster cluster)
 {
     return(QueryCompiler.ToFilter(cluster.ToQuery()));
 }
Esempio n. 4
0
        public FilterQueryEditorViewModel(IFilter[] clusters)
        {
            var filter = QueryCompiler.ToFilter("(" + String.Join("|", clusters.Select(s => s.ToQuery())) + ")");

            this.Text = filter.ToQuery();
        }
Esempio n. 5
0
        private void AnalyzeCurrentQuery()
        {
            var cf = this.CurrentForegroundTimeline as TimelineListViewModel;

            if (cf == null)
            {
                return;
            }
            if (this.TimelinesCount == 1)
            {
                this._queryTextBuffer = String.Empty;
            }
            IEnumerable <IFilter> filter = null;
            var prefix = (this._queryTextBuffer.Length > 2 && this._queryTextBuffer[1] == ':') ?
                         this._queryTextBuffer[0] : '\0';

            switch (prefix)
            {
            case 'u':
            case 'U':
                // search with user
                // tokenizing
                var uqsplitted = this._queryTextBuffer.Substring(2)
                                 .Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries)
                                 .Select(s => s.Split(new[] { " ", "\t" }, StringSplitOptions.RemoveEmptyEntries));
                filter = uqsplitted.Select(s => new FilterCluster()
                {
                    ConcatenateAnd = true,
                    Filters        = s.Select(un => new FilterUserScreenName(un)).ToArray()
                }).ToArray();
                break;

            case 't':
            case 'T':
                // search text
                var tsplitted = this._queryTextBuffer.Substring(2)
                                .Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries)
                                .Select(s => s.Split(new[] { " ", "\t" }, StringSplitOptions.RemoveEmptyEntries));
                filter = tsplitted.Select(s => new FilterCluster()
                {
                    ConcatenateAnd = true,
                    Filters        = s.Select(un => new Filter.Filters.Text.FilterText(un)).ToArray()
                }).ToArray();
                break;

            case 'q':
            case 'Q':
                // search with query
                try
                {
                    filter = new[] { QueryCompiler.ToFilter(this._queryTextBuffer.Substring(2)) };
                }
                catch (Exception e)
                {
                    this.IsQueryValid = false;
                    this.QueryError   = e.Message;
                    return;
                }
                break;

            default:
                var tosplitted = this._queryTextBuffer
                                 .Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries)
                                 .Select(s => s.Split(new[] { " ", "\t" }, StringSplitOptions.RemoveEmptyEntries));
                filter = tosplitted.Select(s => new FilterCluster()
                {
                    ConcatenateAnd = true,
                    Filters        = s.Select(un => new Filter.Filters.Text.FilterText(un)).ToArray()
                }).ToArray();
                break;
            }
            this.IsQueryValid = true;
            RaisePropertyChanged(() => IsUserScreenName);
            CreateTabFromTopTimelineCommand.RaiseCanExecuteChanged();
            cf.TimelineListCoreViewModel.Sources = filter;
            Task.Factory.StartNew(() => cf.TimelineListCoreViewModel.InvalidateCache());
        }