Beispiel #1
0
 internal DateFilter(DateTime date, DateSeachMode mode)
 {
     Date = date;
     Mode = mode;
 }
        public void InitialControlsEvents()
        {
            addButton.Click += (s, e) =>
            {
                try
                {
                    var filter = new FilterControl(_console);
                    filter.Initial(_filters.Keys);
                    int count = filtersPanel.Controls.Count - 4;
                    filter.Location = new Point(0, count * 30);
                    filter.Parent   = filtersPanel;
                    filter.Anchor   = AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Left;
                    filter.Size     = new Size(filtersPanel.Width - 7, 29);
                    filter.Subscribe(this);
                    filtersPanel.Controls.Add(filter);
                }
                catch (Exception exception)
                {
                    _console?.AddException(exception);
                }
            };
            removeButton.Click += (s, e) =>
            {
                try
                {
                    for (int i = filtersPanel.Controls.Count - 1; i >= 0; i--)
                    {
                        if (filtersPanel.Controls[i] is FilterControl)
                        {
                            filtersPanel.Controls[i].Dispose();
                        }
                    }

                    _filters.Keys.ForEach(i => _filters[i] = new SearchingTerm(String.Empty));
                }
                catch (Exception exception)
                {
                    _console?.AddException(exception);
                }
            };
            fromCheckBox.CheckedChanged += (s, e) =>
            {
                bool result = fromCheckBox.Checked;
                fromDateTimePicker.Enabled = result;
                if (!result)
                {
                    if (toCheckBox.Checked)
                    {
                        toCheckBox.Checked       = false;
                        toDateTimePicker.Enabled = false;
                    }

                    _datesFilters.Clear();
                }
                else
                {
                    if (!_datesFilters.ContainsKey(DateSeachMode.OnDate))
                    {
                        _datesFilters.Add(DateSeachMode.OnDate, new DateFilter(fromDateTimePicker.Value, DateSeachMode.OnDate));
                    }
                }

                _datesFiltersObservers.ForEach(i => i.OnNext(_datesFilters.Values.ToList()));
            };
            toCheckBox.CheckedChanged += (s, e) =>
            {
                if (!fromCheckBox.Checked)
                {
                    if (toCheckBox.Checked)
                    {
                        ((CheckBox)s).CheckState = CheckState.Unchecked;
                    }
                    if (_datesFilters.ContainsKey(DateSeachMode.FromDate))
                    {
                        _datesFilters.Remove(DateSeachMode.FromDate);
                    }
                    if (_datesFilters.ContainsKey(DateSeachMode.ToDate))
                    {
                        _datesFilters.Remove(DateSeachMode.ToDate);
                    }
                    return;
                }

                toDateTimePicker.Enabled = toCheckBox.Checked;
                fromCheckBox.Text        = toCheckBox.Checked ? "C" : "На";

                if (!_datesFilters.ContainsKey(DateSeachMode.FromDate))
                {
                    _datesFilters.Add(DateSeachMode.FromDate, null);
                }
                _datesFilters[DateSeachMode.FromDate] = new DateFilter(
                    fromDateTimePicker.Value, DateSeachMode.FromDate);

                if (!_datesFilters.ContainsKey(DateSeachMode.ToDate))
                {
                    _datesFilters.Add(DateSeachMode.ToDate, null);
                }
                _datesFilters[DateSeachMode.ToDate] = new DateFilter(
                    toDateTimePicker.Value, DateSeachMode.ToDate);

                _datesFiltersObservers.ForEach(i => i.OnNext(_datesFilters.Values.ToList()));
            };
            fromDateTimePicker.ValueChanged += (s, e) =>
            {
                DateSeachMode mode = toCheckBox.Checked
                    ? DateSeachMode.FromDate
                    : DateSeachMode.OnDate;
                if (!_datesFilters.ContainsKey(mode))
                {
                    _datesFilters.Add(mode, null);
                }
                _datesFilters[mode] = new DateFilter(
                    fromDateTimePicker.Value, mode);
                _datesFiltersObservers.ForEach(i => i.OnNext(_datesFilters.Values.ToList()));
            };
            toDateTimePicker.ValueChanged += (s, e) =>
            {
                var mode = DateSeachMode.ToDate;
                _datesFilters[mode] = new DateFilter(
                    toDateTimePicker.Value, mode);
                _datesFiltersObservers.ForEach(i => i.OnNext(_datesFilters.Values.ToList()));
            };
        }