Пример #1
0
        public SearchResultMessagesModel(
            ILogSourcesManager logSources,
            ISearchManager searchManager,
            IFiltersFactory filtersFactory
            )
        {
            this.searchManager = searchManager;
            logSources.OnLogSourceColorChanged += (s, e) =>
            {
                OnLogSourceColorChanged?.Invoke(s, e);
            };

            int searchFiltersListVersion = 0;

            searchManager.SearchResultsChanged += (s, e) => ++ searchFiltersListVersion;
            searchManager.SearchResultChanged  += (s, e) => searchFiltersListVersion += ((e.Flags & SearchResultChangeFlag.VisibleChanged) != 0 ? 1 : 0);
            this.getSearchFiltersList           = Selectors.Create(
                () => searchFiltersListVersion,
                _ =>
            {
                var list = filtersFactory.CreateFiltersList(FilterAction.Exclude, FiltersListPurpose.Search);
                foreach (var f in searchManager
                         .Results
                         .Where(r => r.Visible && r.OptionsFilter != null)
                         .Select(r => r.OptionsFilter))
                {
                    list.Insert(list.Items.Count, f.Clone());
                }
                return(list);
            }
                );
        }
Пример #2
0
        public Filter(XElement e, IFiltersFactory factory, RegularExpressions.IRegexFactory regexFactory)
        {
            this.factory      = factory;
            this.regexFactory = regexFactory;

            LoadInternal(e);
        }
Пример #3
0
 public FiltersList(XElement e, FiltersListPurpose purpose, IFiltersFactory factory, IChangeNotification changeNotification)
 {
     LoadInternal(e, factory);
     this.purpose            = purpose;
     this.changeNotification = changeNotification;
     this.getItems           = MakeGetItems();
 }
Пример #4
0
        public FiltersManager(
            IFiltersFactory filtersFactory,
            Settings.IGlobalSettingsAccessor globalSettingsAccessor,
            ILogSourcesManager logSourcesManager,
            IAdjustingColorsGenerator threadColors,
            IShutdown shutdown
            )
        {
            this.globalSettings = globalSettingsAccessor;
            this.logSources     = logSourcesManager;

            this.highlightFilters = filtersFactory.CreateFiltersList(FilterAction.Exclude, FiltersListPurpose.Highlighting);

            this.globalSettings.Changed += (sender, args) =>
            {
                if ((args.ChangedPieces & Settings.SettingsPiece.Appearance) != 0)
                {
                    threadColors.Brightness = globalSettings.Appearance.ColoringBrightness;
                }
            };

            this.logSources.OnLogSourceRemoved += (s, e) =>
            {
                highlightFilters.PurgeDisposedFiltersAndFiltersHavingDisposedThreads();
            };

            shutdown.Cleanup += (sender, args) =>
            {
                highlightFilters.Dispose();
            };
        }
        public PresenterFactory(
            IHeartBeatTimer heartbeat,
            IPresentersFacade presentationFacade,
            IClipboardAccess clipboard,
            IBookmarksFactory bookmarksFactory,
            Telemetry.ITelemetryCollector telemetry,
            ILogSourcesManager logSources,
            IInvokeSynchronization modelInvoke,
            IModelThreads modelThreads,
            IFiltersList hlFilters,
            IBookmarks bookmarks,
            Settings.IGlobalSettingsAccessor settings,
            ISearchManager searchManager,
            IFiltersFactory filtersFactory
            )
        {
            this.heartbeat          = heartbeat;
            this.presentationFacade = presentationFacade;
            this.clipboard          = clipboard;
            this.bookmarksFactory   = bookmarksFactory;
            this.telemetry          = telemetry;

            this.logSources     = logSources;
            this.modelInvoke    = modelInvoke;
            this.modelThreads   = modelThreads;
            this.hlFilters      = hlFilters;
            this.bookmarks      = bookmarks;
            this.settings       = settings;
            this.searchManager  = searchManager;
            this.filtersFactory = filtersFactory;
        }
Пример #6
0
        IFilterScope CreateScope(List <KeyValuePair <ScopeItem, bool> > items, IFiltersFactory filtersFactory)
        {
            if (!scopeSupported)
            {
                return(filtersFactory.CreateScope());
            }

            List <ILogSource> sources = new List <ILogSource>();
            List <IThread>    threads = new List <IThread>();

            for (int i = 0; i < items.Count;)
            {
                ScopeItem item      = items[i].Key;
                bool      isChecked = items[i].Value;

                if (item is AllSources)
                {
                    if (isChecked)
                    {
                        return(filtersFactory.CreateScope());
                    }
                    ++i;
                    continue;
                }

                if (item is SourceNode)
                {
                    if (isChecked)
                    {
                        sources.Add(((SourceNode)item).Source);
                        ++i;
                        while (i < items.Count && items[i].Key is ThreadNode)
                        {
                            ++i;
                        }
                    }
                    else
                    {
                        ++i;
                    }
                    continue;
                }

                if (item is ThreadNode)
                {
                    if (isChecked)
                    {
                        threads.Add(((ThreadNode)item).Thread);
                    }
                    ++i;
                    continue;
                }

                throw new InvalidOperationException("Unknown node type");
            }

            return(filtersFactory.CreateScope(sources, threads));
        }
Пример #7
0
 void LoadInternal(XElement e, IFiltersFactory factory)
 {
     actionWhenEmptyOrDisabled = (FilterAction)e.SafeIntValue("default-action", (int)FilterAction.Exclude);
     foreach (var elt in e.Elements("filter"))
     {
         var f = factory.CreateFilter(elt);
         f.SetOwner(this);
         list.Add(f);
     }
 }
Пример #8
0
 public FilterPickerViewModel(IFiltersFactory filtersFactory, IVideoFilterEngine videoFilterEngine)
 {
     this.videoOptions            = new VideoOptions();
     this.filtersFactory          = filtersFactory;
     this.videoFilterEngine       = videoFilterEngine;
     this.cancellationTokenSource = new CancellationTokenSource();
     this.currentFilter           = this.filtersFactory.CreateFilter(FilterType.None);
     GetDataFromConfig();
     RegisterMessageHandlers();
 }
Пример #9
0
        public UserDefinedSearchesManager(
            Persistence.IStorageManager storage,
            IFiltersFactory filtersFactory,
            ISynchronizationContext modelThreadSynchronization
            )
        {
            this.filtersFactory       = filtersFactory;
            this.storageEntry         = new Lazy <Persistence.IStorageEntry>(() => storage.GetEntry("UserDefinedSearches"));
            this.changeHandlerInvoker = new AsyncInvokeHelper(modelThreadSynchronization, HandleChange);

            LoadItems();
        }
Пример #10
0
        public FiltersManager(IFiltersFactory filtersFactory, IFiltersChainBuilder filtersChainBuilder)
        {
            List <IStatWatchingFilter>            statWatchingFilters            = filtersFactory.CreateStatWatchingFilters();
            List <IStatUserRegistrationFilter>    statUserRegistrationFilters    = filtersFactory.CreateStatUserRegistrationFilters();
            List <IStatProjectUploadingFilter>    statProjectUploadingFilters    = filtersFactory.CreateStatProjectUploadingFilters();
            List <IStatProjectDeletionFilter>     statProjectDeletionFilters     = filtersFactory.CreateStatProjectDeletionFilters();
            List <IStatProjectCancellationFilter> statProjectCancellationFilters = filtersFactory.CreateStatProjectCancellationFilters();

            _statWatchingFilter            = filtersChainBuilder.BuildStatWatchingFilter(statWatchingFilters);
            _statUserRegistrationFilter    = filtersChainBuilder.BuildStatUserRegistrationFilter(statUserRegistrationFilters);
            _statProjectUploadingFilter    = filtersChainBuilder.BuildStatProjectUploadingFilter(statProjectUploadingFilters);
            _statProjectDeletionFilter     = filtersChainBuilder.BuildStatProjectDeletionFilter(statProjectDeletionFilters);
            _statProjectCancellationFilter = filtersChainBuilder.BuildStatProjectCancellationFilter(statProjectCancellationFilters);
        }
Пример #11
0
        public FiltersManager(IFiltersFactory filtersFactory, IFiltersChainBuilder filtersChainBuilder)
        {
            List<IStatWatchingFilter> statWatchingFilters = filtersFactory.CreateStatWatchingFilters();
            List<IStatUserRegistrationFilter> statUserRegistrationFilters = filtersFactory.CreateStatUserRegistrationFilters();
            List<IStatProjectUploadingFilter> statProjectUploadingFilters = filtersFactory.CreateStatProjectUploadingFilters();
            List<IStatProjectDeletionFilter> statProjectDeletionFilters = filtersFactory.CreateStatProjectDeletionFilters();
            List<IStatProjectCancellationFilter> statProjectCancellationFilters = filtersFactory.CreateStatProjectCancellationFilters();

            _statWatchingFilter = filtersChainBuilder.BuildStatWatchingFilter(statWatchingFilters);
            _statUserRegistrationFilter = filtersChainBuilder.BuildStatUserRegistrationFilter(statUserRegistrationFilters);
            _statProjectUploadingFilter = filtersChainBuilder.BuildStatProjectUploadingFilter(statProjectUploadingFilters);
            _statProjectDeletionFilter = filtersChainBuilder.BuildStatProjectDeletionFilter(statProjectDeletionFilters);
            _statProjectCancellationFilter = filtersChainBuilder.BuildStatProjectCancellationFilter(statProjectCancellationFilters);
        }
        public Presenter(
            IFiltersList filtersList,
            IView view,
            FiltersListBox.IPresenter filtersListPresenter,
            FilterDialog.IPresenter filtersDialogPresenter,
            LogViewer.IPresenter logViewerPresenter,
            IViewUpdates viewUpdates,
            IHeartBeatTimer heartbeat,
            IFiltersFactory filtersFactory,
            IAlertPopup alerts
            )
        {
            this.filtersList            = filtersList;
            this.view                   = view;
            this.heartbeat              = heartbeat;
            this.filtersListPresenter   = filtersListPresenter;
            this.filtersDialogPresenter = filtersDialogPresenter;
            this.logViewerPresenter     = logViewerPresenter;
            this.viewUpdates            = viewUpdates;
            this.filtersFactory         = filtersFactory;
            this.alerts                 = alerts;

            view.SetFiltertingEnabledCheckBoxLabel(
                filtersList.Purpose == FiltersListPurpose.Highlighting ? "Enabled highlighting" : "Enable filtering");

            UpdateControls();

            filtersListPresenter.SelectionChanged += delegate(object sender, EventArgs args) {
                UpdateControls();
            };
            filtersListPresenter.FilterChecked += delegate(object sender, EventArgs args) {
                NotifyAboutFilteringResultChange();
            };
            filtersListPresenter.DeleteRequested += (s, a) => {
                DoRemoveSelected();
            };
            filtersList.OnPropertiesChanged       += HandleFiltersListChange;
            filtersList.OnFilteringEnabledChanged += HandleFiltersListChange;
            filtersList.OnFiltersListChanged      += HandleFiltersListChange;
            heartbeat.OnTimer += PeriodicUpdate;

            view.SetPresenter(this);

            updateTracker.Invalidate();
        }
Пример #13
0
 public SearchResultMessagesModel(
     ILogSourcesManager logSources,
     ISearchManager searchManager,
     IFiltersFactory filtersFactory,
     IModelThreads threads,
     IBookmarks bookmarks,
     Settings.IGlobalSettingsAccessor settings
     )
 {
     this.logSources     = logSources;
     this.searchManager  = searchManager;
     this.threads        = threads;
     this.bookmarks      = bookmarks;
     this.settings       = settings;
     this.filtersFactory = filtersFactory;
     logSources.OnLogSourceColorChanged += (s, e) =>
     {
         OnLogSourceColorChanged?.Invoke(s, e);
     };
 }
Пример #14
0
        public Filter(FilterAction action, string initialName, bool enabled,
                      Search.Options options, IFiltersFactory factory)
        {
            this.factory = factory;

            if (initialName == null)
            {
                throw new ArgumentNullException(nameof(initialName));
            }
            this.initialName = initialName;
            this.enabled     = enabled;
            this.action      = action;

            this.options = options;

            // Filters ignores following flags passed.
            // Actually used values are provided later when filters are appied.
            this.options.ReverseSearch = false;

            InvalidateName();
        }
Пример #15
0
        public FiltersManager(
            IFiltersFactory filtersFactory,
            Settings.IGlobalSettingsAccessor globalSettingsAccessor,
            ILogSourcesManager logSourcesManager,
            IShutdown shutdown
            )
        {
            this.globalSettings = globalSettingsAccessor;
            this.logSources     = logSourcesManager;

            this.highlightFilters = filtersFactory.CreateFiltersList(FilterAction.Exclude, FiltersListPurpose.Highlighting);

            this.logSources.OnLogSourceRemoved += (s, e) =>
            {
                highlightFilters.PurgeDisposedFiltersAndFiltersHavingDisposedThreads();
            };

            shutdown.Cleanup += (sender, args) =>
            {
                highlightFilters.Dispose();
            };
        }
Пример #16
0
 public PresenterFactory(
     IChangeNotification changeNotification,
     IHeartBeatTimer heartbeat,
     IPresentersFacade presentationFacade,
     IClipboardAccess clipboard,
     IBookmarksFactory bookmarksFactory,
     Telemetry.ITelemetryCollector telemetry,
     ILogSourcesManager logSources,
     ISynchronizationContext modelInvoke,
     IModelThreads modelThreads,
     IFiltersList hlFilters,
     IBookmarks bookmarks,
     Settings.IGlobalSettingsAccessor settings,
     ISearchManager searchManager,
     IFiltersFactory filtersFactory,
     IColorTheme theme,
     ITraceSourceFactory traceSourceFactory,
     RegularExpressions.IRegexFactory regexFactory
     )
 {
     this.changeNotification = changeNotification;
     this.heartbeat          = heartbeat;
     this.presentationFacade = presentationFacade;
     this.clipboard          = clipboard;
     this.bookmarksFactory   = bookmarksFactory;
     this.telemetry          = telemetry;
     this.logSources         = logSources;
     this.modelInvoke        = modelInvoke;
     this.modelThreads       = modelThreads;
     this.hlFilters          = hlFilters;
     this.bookmarks          = bookmarks;
     this.settings           = settings;
     this.searchManager      = searchManager;
     this.filtersFactory     = filtersFactory;
     this.theme = theme;
     this.traceSourceFactory = traceSourceFactory;
     this.regexFactory       = regexFactory;
 }
Пример #17
0
        public Presenter(
            IView view,
            ISearchManager searchManager,
            ISearchHistory searchHistory,
            IUserDefinedSearches userDefinedSearches,
            ILogSourcesManager sourcesManager,
            IFiltersFactory filtersFactory,
            ISearchResultsPanelView searchResultsPanelView,
            LoadedMessages.IPresenter loadedMessagesPresenter,
            SearchResult.IPresenter searchResultPresenter,
            StatusReports.IPresenter statusReportFactory,
            SearchEditorDialog.IPresenter searchEditorDialog,
            SearchesManagerDialog.IPresenter searchesManagerDialog,
            IAlertPopup alerts
            )
        {
            this.view                    = view;
            this.searchManager           = searchManager;
            this.searchHistory           = searchHistory;
            this.filtersFactory          = filtersFactory;
            this.searchResultsPanelView  = searchResultsPanelView;
            this.loadedMessagesPresenter = loadedMessagesPresenter;
            this.searchResultPresenter   = searchResultPresenter;
            this.statusReportFactory     = statusReportFactory;
            this.sourcesManager          = sourcesManager;
            this.searchesManagerDialog   = searchesManagerDialog;
            this.alerts                  = alerts;
            this.quickSearchPresenter    = new QuickSearchTextBox.Presenter(view.SearchTextBox);
            this.searchEditorDialog      = searchEditorDialog;

            InvalidateSearchHistoryList();
            searchHistory.OnChanged += (sender, args) => InvalidateSearchHistoryList();

            sourcesManager.OnLogSourceAdded   += (sender, e) => UpdateSearchControls();
            sourcesManager.OnLogSourceRemoved += (sender, e) => UpdateSearchControls();

            UpdateSearchControls();
            UpdateUserDefinedSearchDependentControls(false);

            view.SetPresenter(this);

            quickSearchPresenter.OnSearchNow += (sender, args) =>
            {
                if (quickSearchPresenter.Text != "")
                {
                    DoSearch(reverseDirection: args.ReverseSearchModifier);
                }
            };
            quickSearchPresenter.OnCancelled += (sender, args) =>
            {
                bool searchCancelled = false;
                foreach (var r in searchManager.Results.Where(r => r.Status == SearchResultStatus.Active))
                {
                    r.Cancel();
                    searchCancelled = true;
                }
                if (!searchCancelled && InputFocusAbandoned != null)
                {
                    InputFocusAbandoned(this, EventArgs.Empty);
                }
            };
            quickSearchPresenter.SetSuggestionsHandler((sender, e) =>
            {
                if (e.Etag == searchListEtag)
                {
                    return;
                }
                foreach (var i in searchHistory.Items)
                {
                    var description = new StringBuilder();
                    GetUserFriendlySearchHistoryEntryDescription(i, description);
                    e.AddItem(new QuickSearchTextBox.SuggestionItem()
                    {
                        DisplayString = description.ToString(),
                        SearchString  = (i as ISimpleSearchHistoryEntry)?.Options.Template,
                        Category      = "recent searches",
                        Data          = i
                    });
                }
                foreach (var i in userDefinedSearches.Items)
                {
                    var description = new StringBuilder();
                    GetUserFriendlySearchHistoryEntryDescription(i, description);
                    e.AddItem(new QuickSearchTextBox.SuggestionItem()
                    {
                        DisplayString = description.ToString(),
                        LinkText      = "edit",
                        Category      = "Filters",
                        Data          = i
                    });
                }
                e.ConfigureCategory("Filters", linkText: "manage", alwaysVisible: true);
                e.Etag = searchListEtag;
            });
            quickSearchPresenter.OnCurrentSuggestionChanged += (sender, e) =>
            {
                var datum = quickSearchPresenter.CurrentSuggestion?.Data;
                var searchHistoryEntry = datum as ISimpleSearchHistoryEntry;
                if (searchHistoryEntry != null)
                {
                    ReadControlsFromSelectedHistoryEntry(searchHistoryEntry);
                }
                UpdateUserDefinedSearchDependentControls(
                    datum is IUserDefinedSearch || datum is IUserDefinedSearchHistoryEntry);
            };
            quickSearchPresenter.OnSuggestionLinkClicked += (sender, e) =>
            {
                var uds = e.Suggestion.Data as IUserDefinedSearch;
                if (uds == null)
                {
                    return;
                }
                searchEditorDialog.Open(uds);
            };
            quickSearchPresenter.OnCategoryLinkClicked += (sender, e) =>
            {
                HandleSearchesManagerDialog();
            };
            userDefinedSearches.OnChanged += (sender, e) =>
            {
                InvalidateSearchHistoryList();
            };
        }
Пример #18
0
        public Filter(XElement e, IFiltersFactory factory)
        {
            this.factory = factory;

            LoadInternal(e);
        }
Пример #19
0
 public InfoController(IFiltersFactory filtersFactory)
 {
     _filtersFactory = filtersFactory;
 }
 public FilterByRouteResolver(IFiltersFactory factory)
 {
     _factory = factory;
 }
Пример #21
0
 public FiltersList(XElement e, FiltersListPurpose purpose, IFiltersFactory factory)
 {
     LoadInternal(e, factory);
     this.purpose = purpose;
 }
Пример #22
0
 public VectorFilter(IFiltersFactory filtersFactory)
 {
     factory = filtersFactory;
 }