Пример #1
4
        public OptionsViewModel(OptionsPageData data,  ObservableValue<IEnumerable<string>> exceptionNames)
        {
            _data = data;
            IgnoredPatterns = new PatternCollectionViewModel(data.Ignored);
            AllExceptions = exceptionNames.GetObservable(v => new ReadOnlyCollection<ExceptionViewModel>(
                v.Select(n => new ExceptionViewModel(n, IgnoredPatterns.Selected)).ToArray()
            ));

            _exceptionsMatchingIgnored = new ObservableCollection<ExceptionViewModel>();
            ExceptionsMatchingIgnored = new ReadOnlyObservableCollection<ExceptionViewModel>(_exceptionsMatchingIgnored);

            AllExceptions.ValueChanged += (sender, e) => RecalculateExceptionsMatchingIgnored();

            IgnoredPatterns.Values.CollectionChanged += (sender, e) => RecalculateExceptionsMatchingIgnored();
            var ignoredChangeHandler = (EventHandler) delegate { RecalculateExceptionsMatchingIgnored(); };
            IgnoredPatterns.Values.AddHandlers(
                added => {
                    added.Pattern.ValueChanged += ignoredChangeHandler;
                    added.Enabled.ValueChanged += ignoredChangeHandler;
                },
                removed => {
                    removed.Pattern.ValueChanged -= ignoredChangeHandler;
                    removed.Enabled.ValueChanged -= ignoredChangeHandler;
                }
            );

            RecalculateExceptionsMatchingIgnored();
        }
Пример #2
0
        public OptionsViewModel(OptionsPageData data, ObservableValue <IEnumerable <string> > exceptionNames)
        {
            _data           = data;
            IgnoredPatterns = new PatternCollectionViewModel(data.Ignored);
            AllExceptions   = exceptionNames.GetObservable(v => new ReadOnlyCollection <ExceptionViewModel>(
                                                               v.Select(n => new ExceptionViewModel(n, IgnoredPatterns.Selected)).ToArray()
                                                               ));

            _exceptionsMatchingIgnored = new ObservableCollection <ExceptionViewModel>();
            ExceptionsMatchingIgnored  = new ReadOnlyObservableCollection <ExceptionViewModel>(_exceptionsMatchingIgnored);

            AllExceptions.ValueChanged += (sender, e) => RecalculateExceptionsMatchingIgnored();

            IgnoredPatterns.Values.CollectionChanged += (sender, e) => RecalculateExceptionsMatchingIgnored();
            var ignoredChangeHandler = (EventHandler) delegate { RecalculateExceptionsMatchingIgnored(); };

            IgnoredPatterns.Values.AddHandlers(
                added => {
                added.Pattern.ValueChanged += ignoredChangeHandler;
                added.Enabled.ValueChanged += ignoredChangeHandler;
            },
                removed => {
                removed.Pattern.ValueChanged -= ignoredChangeHandler;
                removed.Enabled.ValueChanged -= ignoredChangeHandler;
            }
                );

            RecalculateExceptionsMatchingIgnored();
        }
        public void Add_DoesNotAddItemToData_IfPatternIsNotSet()
        {
            var data = new Collection<PatternData>();
            var model = new PatternCollectionViewModel(data);
            model.Values.Add(new PatternViewModel(""));

            Assert.Empty(data);
        }
        public void Add_AddsItemToData_IfPatternIsSet()
        {
            var data = new Collection<PatternData>();
            var model = new PatternCollectionViewModel(data);
            model.Values.Add(new PatternViewModel("x"));

            Assert.Equal(new[] { "x" }, data.Select(p => p.Regex.ToString()));
        }
        public void PatternChange_RemovesItemToData_IfPatternIsNotSet()
        {
            var data = new Collection<PatternData>();
            var model = new PatternCollectionViewModel(data);
            var pattern = new PatternViewModel("x");
            model.Values.Add(pattern);

            pattern.Pattern.Value = "";
            Assert.Empty(data);
        }
        public void PatternChange_AddsItemToData_IfPatternIsSet()
        {
            var data = new Collection<PatternData>();
            var model = new PatternCollectionViewModel(data);
            var pattern = new PatternViewModel("");
            model.Values.Add(pattern);

            pattern.Pattern.Value = "x";
            Assert.Equal(new[] { "x" }, data.Select(p => p.Regex.ToString()));
        }