public SearchOptionsProxy([NotNull] SearchMetadata searchMetadata, [NotNull] Action <SearchMetadata> changeScopeAction, [NotNull] IColourProvider colourProvider, [NotNull] IThemeProvider themeProvider, [NotNull] IconSelector iconSelector, [NotNull] Action <SearchMetadata> removeAction, [NotNull] IDefaultIconSelector defaultIconSelector, Guid parentId) { if (changeScopeAction == null) { throw new ArgumentNullException(nameof(changeScopeAction)); } if (colourProvider == null) { throw new ArgumentNullException(nameof(colourProvider)); } if (themeProvider == null) { throw new ArgumentNullException(nameof(themeProvider)); } if (removeAction == null) { throw new ArgumentNullException(nameof(removeAction)); } _searchMetadata = searchMetadata ?? throw new ArgumentNullException(nameof(searchMetadata)); _defaultIconSelector = defaultIconSelector ?? throw new ArgumentNullException(nameof(defaultIconSelector)); IconSelector = iconSelector ?? throw new ArgumentNullException(nameof(iconSelector)); ParentId = parentId; Highlight = _searchMetadata.Highlight; Filter = _searchMetadata.Filter; UseRegex = searchMetadata.UseRegex; CaseSensitive = !searchMetadata.IgnoreCase; Position = searchMetadata.Position; Hues = colourProvider.Hues; HighlightHue = searchMetadata.HighlightHue; IsGlobal = searchMetadata.IsGlobal; IsExclusion = searchMetadata.IsExclusion; ShowIconSelectorCommand = new Command(async() => await ShowIconSelector()); RemoveCommand = new Command(() => removeAction(searchMetadata)); ChangeScopeCommand = new Command(() => changeScopeAction((SearchMetadata)this)); HighlightCommand = new Command <Hue>(newHue => { HighlightHue = newHue; }); IconKind = _searchMetadata.IconKind.ParseEnum <PackIconKind>() .ValueOr(() => PackIconKind.ArrowRightBold); //combine system with user choice. var defaultHue = this.WhenValueChanged(vm => vm.HighlightHue) .CombineLatest(themeProvider.Accent, (user, system) => user == Hue.NotSpecified ? system : user) .Publish(); Foreground = defaultHue.Select(h => h.ForegroundBrush).ForBinding(); Background = defaultHue.Select(h => h.BackgroundBrush).ForBinding(); _cleanUp = new CompositeDisposable(IconSelector, Foreground, Background, defaultHue.Connect()); }
public SearchMetadataFactory(IDefaultIconSelector defaultIconSelector, IDefaultColourSelector defaultColourSelector, ITextAssociationCollection textAssociationCollection) { _defaultIconSelector = defaultIconSelector; _defaultColourSelector = defaultColourSelector; _textAssociationCollection = textAssociationCollection; }
public SearchMetadataFactory(IDefaultIconSelector defaultIconSelector, IColourProvider colourProvider, IDefaultColourSelector defaultColourSelector) { _defaultIconSelector = defaultIconSelector; _colourProvider = colourProvider; _defaultColourSelector = defaultColourSelector; }
public IconProvider(IDefaultIconSelector defaultIconSelector) { DefaultIconSelector = defaultIconSelector; Icons = _icons.AsObservableList(); var icons = Enum.GetNames(typeof(PackIconKind)) .Select(str => { var value = (PackIconKind) Enum.Parse(typeof (PackIconKind), str); return new IconDescription(value, str); }); _icons.AddRange(icons); _cleanUp = new CompositeDisposable(Icons, _icons); }
public IconProvider(IDefaultIconSelector defaultIconSelector) { DefaultIconSelector = defaultIconSelector; Icons = _icons.AsObservableList(); var icons = Enum.GetNames(typeof(PackIconKind)) .Select(str => { var value = (PackIconKind)Enum.Parse(typeof(PackIconKind), str); return(new IconDescription(value, str)); }); _icons.AddRange(icons); _cleanUp = new CompositeDisposable(Icons, _icons); }
public SearchInfoCollection(ISearchMetadataCollection searchMetadataCollection, ISearchMetadataFactory searchMetadataFactory, IColourProvider colourProvider, IEnumerable <IFileWatcher> filesWatcher, IDefaultIconSelector defaultIconSelector) { _metadataCollection = searchMetadataCollection; _searchMetadataFactory = searchMetadataFactory; _colourProvider = colourProvider; _filesWatcher = filesWatcher; _defaultIconSelector = defaultIconSelector; //Add a complete file display All = _filesWatcher.Select(t => t.Latest).Index(); //create a collection with 1 item, which is used to show entire file var systemSearches = new SourceCache <SearchInfo, string>(t => t.SearchText); systemSearches.AddOrUpdate(new SearchInfo("<All>", All, SearchType.All)); //create a collection of all possible user filters var userSearches = searchMetadataCollection.Metadata .Connect(meta => meta.Filter) .IgnoreUpdateWhen((current, previous) => SearchMetadata.EffectsFilterComparer.Equals(current, previous)) .Transform(meta => { var latest = _filesWatcher .Select(t => t.Latest) .Merge() .Search(meta.BuildPredicate()); return(new SearchInfo(meta.SearchText, latest, SearchType.User)); }); //combine te results into a single collection Searches = systemSearches.Connect() .Or(userSearches) .AsObservableCache(); _cleanUp = new CompositeDisposable(Searches, systemSearches); }
public SearchOptionsProxy([NotNull] SearchMetadata searchMetadata, [NotNull] IColourProvider colourProvider, [NotNull] IconSelector iconSelector, [NotNull] Action <SearchMetadata> removeAction, [NotNull] IDefaultIconSelector defaultIconSelector, Guid parentId) { if (searchMetadata == null) { throw new ArgumentNullException(nameof(searchMetadata)); } if (colourProvider == null) { throw new ArgumentNullException(nameof(colourProvider)); } if (iconSelector == null) { throw new ArgumentNullException(nameof(iconSelector)); } if (removeAction == null) { throw new ArgumentNullException(nameof(removeAction)); } if (defaultIconSelector == null) { throw new ArgumentNullException(nameof(defaultIconSelector)); } _searchMetadata = searchMetadata; _defaultIconSelector = defaultIconSelector; IconSelector = iconSelector; ShowIconSelectorCommand = new Command(ShowIconSelector); RemoveCommand = new Command(() => removeAction(searchMetadata)); HighlightCommand = new Command <Hue>(newHue => { HighlightHue = newHue; }); ParentId = parentId; Highlight = _searchMetadata.Highlight; Filter = _searchMetadata.Filter; UseRegex = searchMetadata.UseRegex; IgnoreCase = searchMetadata.IgnoreCase; Position = searchMetadata.Position; Hues = colourProvider.Hues; HighlightHue = searchMetadata.HighlightHue; IconKind = _searchMetadata.IconKind.ParseEnum <PackIconKind>() .ValueOr(() => PackIconKind.ArrowRightBold); Foreground = this.WhenValueChanged(vm => vm.HighlightHue) .Select(h => h.ForegroundBrush) .ForBinding(); Background = this.WhenValueChanged(vm => vm.HighlightHue) .Select(h => h.BackgroundBrush) .ForBinding(); _cleanUp = new CompositeDisposable(IconSelector, Foreground, Background); }