コード例 #1
0
        private void Month_MouseLeave(object sender, PointerEventArgs e)
        {
            if (_isMouseLeftButtonDownYearView)
            {
                CalendarButton b = (CalendarButton)sender;
                // The button is in Pressed state. Change the state to normal.
                if (e.Device.Captured == b)
                {
                    e.Device.Capture(null);
                }
                //b.ReleaseMouseCapture();
                if (_downEventArgYearView != null)
                {
                    var args =
                        new PointerReleasedEventArgs()
                    {
                        Device         = _downEventArgYearView.Device,
                        MouseButton    = _downEventArgYearView.MouseButton,
                        Handled        = _downEventArgYearView.Handled,
                        InputModifiers = _downEventArgYearView.InputModifiers,
                        Route          = _downEventArgYearView.Route,
                        Source         = _downEventArgYearView.Source
                    };

                    b.SendMouseLeftButtonUp(args);
                }
                _lastCalendarButton = b;
            }
        }
コード例 #2
0
 private void Month_MouseEnter(object?sender, PointerEventArgs e)
 {
     if (_isMouseLeftButtonDownYearView)
     {
         CalendarButton b = (CalendarButton)sender !;
         UpdateYearViewSelection(b);
     }
 }
コード例 #3
0
ファイル: CalendarItem.cs プロジェクト: Deadpikle/Avalonia
        private void SetYearButtons(int decade, int decadeEnd)
        {
            int year;
            int count = -1;

            foreach (object child in YearView.Children)
            {
                CalendarButton childButton = child as CalendarButton;
                Contract.Requires <ArgumentNullException>(childButton != null);
                year = decade + count;

                if (year <= DateTime.MaxValue.Year && year >= DateTime.MinValue.Year)
                {
                    // There should be no time component. Time is 12:00 AM
                    DateTime day = new DateTime(year, 1, 1);
                    childButton.DataContext = day;
                    childButton.Content     = year.ToString(DateTimeHelper.GetCurrentDateFormat());
                    childButton.IsVisible   = true;

                    if (Owner != null)
                    {
                        if (year == Owner.SelectedYear.Year)
                        {
                            Owner.FocusCalendarButton           = childButton;
                            childButton.IsCalendarButtonFocused = Owner.HasFocusInternal;
                        }
                        else
                        {
                            childButton.IsCalendarButtonFocused = false;
                        }
                        childButton.IsSelected = (Owner.DisplayDate.Year == year);

                        if (year < Owner.DisplayDateRangeStart.Year || year > Owner.DisplayDateRangeEnd.Year)
                        {
                            childButton.IsEnabled = false;
                            childButton.Opacity   = 0;
                        }
                        else
                        {
                            childButton.IsEnabled = true;
                            childButton.Opacity   = 1;
                        }
                    }

                    // SET IF THE YEAR IS INACTIVE OR NOT: set if the year is a
                    // trailing year or not
                    childButton.IsInactive = (year <decade || year> decadeEnd);
                }
                else
                {
                    childButton.IsEnabled = false;
                    childButton.Opacity   = 0;
                }

                count++;
            }
        }
コード例 #4
0
ファイル: CalendarItem.cs プロジェクト: Deadpikle/Avalonia
 private void Month_MouseEnter(object sender, PointerEventArgs e)
 {
     if (_isMouseLeftButtonDownYearView)
     {
         CalendarButton b = sender as CalendarButton;
         Contract.Requires <ArgumentNullException>(b != null);
         UpdateYearViewSelection(b);
     }
 }
コード例 #5
0
ファイル: CalendarItem.cs プロジェクト: maxim5/code-inspector
 private void Month_MouseEnter(object sender, PointerEventArgs e)
 {
     if (_isMouseLeftButtonDownYearView)
     {
         CalendarButton b = sender as CalendarButton;
         Debug.Assert(b != null, "The sender should be a non-null CalendarDayButton!");
         UpdateYearViewSelection(b);
     }
 }
コード例 #6
0
        private void Month_CalendarButtonMouseDown(object?sender, PointerPressedEventArgs e)
        {
            CalendarButton b = (CalendarButton)sender !;

            _isMouseLeftButtonDownYearView = true;

            if (e != null)
            {
                _downEventArgYearView = e;
            }

            UpdateYearViewSelection(b);
        }
コード例 #7
0
ファイル: CalendarItem.cs プロジェクト: Deadpikle/Avalonia
        private void Month_MouseLeave(object sender, PointerEventArgs e)
        {
            if (_isMouseLeftButtonDownYearView)
            {
                CalendarButton b = (CalendarButton)sender;
                // The button is in Pressed state. Change the state to normal.
                if (e.Device.Captured == b)
                {
                    e.Device.Capture(null);
                }
                //b.ReleaseMouseCapture();

                _lastCalendarButton = b;
            }
        }
コード例 #8
0
ファイル: CalendarItem.cs プロジェクト: Deadpikle/Avalonia
        private void Month_CalendarButtonMouseDown(object sender, PointerPressedEventArgs e)
        {
            CalendarButton b = sender as CalendarButton;

            Contract.Requires <ArgumentNullException>(b != null);

            _isMouseLeftButtonDownYearView = true;

            if (e != null)
            {
                _downEventArgYearView = e;
            }

            UpdateYearViewSelection(b);
        }
コード例 #9
0
ファイル: CalendarItem.cs プロジェクト: maxim5/code-inspector
        private void Month_CalendarButtonMouseDown(object sender, PointerPressedEventArgs e)
        {
            CalendarButton b = sender as CalendarButton;

            Debug.Assert(b != null, "The sender should be a non-null CalendarDayButton!");

            _isMouseLeftButtonDownYearView = true;

            if (e != null)
            {
                _downEventArgYearView = e;
            }

            UpdateYearViewSelection(b);
        }
コード例 #10
0
ファイル: CalendarItem.cs プロジェクト: Deadpikle/Avalonia
        private void SetMonthButtonsForYearMode()
        {
            int count = 0;

            foreach (object child in YearView.Children)
            {
                CalendarButton childButton = child as CalendarButton;
                Contract.Requires <ArgumentNullException>(childButton != null);
                // There should be no time component. Time is 12:00 AM
                DateTime day = new DateTime(_currentMonth.Year, count + 1, 1);
                childButton.DataContext = day;

                childButton.Content   = DateTimeHelper.GetCurrentDateFormat().AbbreviatedMonthNames[count];
                childButton.IsVisible = true;

                if (Owner != null)
                {
                    if (day.Year == _currentMonth.Year && day.Month == _currentMonth.Month && day.Day == _currentMonth.Day)
                    {
                        Owner.FocusCalendarButton           = childButton;
                        childButton.IsCalendarButtonFocused = Owner.HasFocusInternal;
                    }
                    else
                    {
                        childButton.IsCalendarButtonFocused = false;
                    }

                    Debug.Assert(Owner.DisplayDateInternal != null, "The Owner Calendar's DisplayDateInternal should not be null!");
                    childButton.IsSelected = (DateTimeHelper.CompareYearMonth(day, Owner.DisplayDateInternal) == 0);

                    if (DateTimeHelper.CompareYearMonth(day, Owner.DisplayDateRangeStart) < 0 || DateTimeHelper.CompareYearMonth(day, Owner.DisplayDateRangeEnd) > 0)
                    {
                        childButton.IsEnabled = false;
                        childButton.Opacity   = 0;
                    }
                    else
                    {
                        childButton.IsEnabled = true;
                        childButton.Opacity   = 1;
                    }
                }

                childButton.IsInactive = false;
                count++;
            }
        }
コード例 #11
0
ファイル: CalendarItem.cs プロジェクト: Deadpikle/Avalonia
        internal void UpdateYearViewSelection(CalendarButton calendarButton)
        {
            if (Owner != null && calendarButton != null && calendarButton.DataContext != null)
            {
                Owner.FocusCalendarButton.IsCalendarButtonFocused = false;
                Owner.FocusCalendarButton = calendarButton;
                calendarButton.IsCalendarButtonFocused = Owner.HasFocusInternal;

                if (Owner.DisplayMode == CalendarMode.Year)
                {
                    Owner.SelectedMonth = (DateTime)calendarButton.DataContext;
                }
                else
                {
                    Owner.SelectedYear = (DateTime)calendarButton.DataContext;
                }
            }
        }
コード例 #12
0
ファイル: CalendarItem.cs プロジェクト: Deadpikle/Avalonia
        private void PopulateGrids()
        {
            if (MonthView != null)
            {
                var childCount = Calendar.RowsPerMonth + Calendar.RowsPerMonth * Calendar.ColumnsPerMonth;
                var children   = new List <IControl>(childCount);

                for (int i = 0; i < Calendar.RowsPerMonth; i++)
                {
                    if (_dayTitleTemplate != null)
                    {
                        var cell = _dayTitleTemplate.Build();
                        cell.DataContext = string.Empty;
                        cell.SetValue(Grid.RowProperty, 0);
                        cell.SetValue(Grid.ColumnProperty, i);
                        children.Add(cell);
                    }
                }

                for (int i = 1; i < Calendar.RowsPerMonth; i++)
                {
                    for (int j = 0; j < Calendar.ColumnsPerMonth; j++)
                    {
                        CalendarDayButton cell = new CalendarDayButton();

                        if (Owner != null)
                        {
                            cell.Owner = Owner;
                        }
                        cell.SetValue(Grid.RowProperty, i);
                        cell.SetValue(Grid.ColumnProperty, j);
                        cell.CalendarDayButtonMouseDown += Cell_MouseLeftButtonDown;
                        cell.CalendarDayButtonMouseUp   += Cell_MouseLeftButtonUp;
                        cell.PointerEnter += Cell_MouseEnter;
                        cell.PointerLeave += Cell_MouseLeave;
                        cell.Click        += Cell_Click;
                        children.Add(cell);
                    }
                }

                MonthView.Children.AddRange(children);
            }

            if (YearView != null)
            {
                var childCount = Calendar.RowsPerYear * Calendar.ColumnsPerYear;
                var children   = new List <IControl>(childCount);

                CalendarButton month;
                for (int i = 0; i < Calendar.RowsPerYear; i++)
                {
                    for (int j = 0; j < Calendar.ColumnsPerYear; j++)
                    {
                        month = new CalendarButton();

                        if (Owner != null)
                        {
                            month.Owner = Owner;
                        }
                        month.SetValue(Grid.RowProperty, i);
                        month.SetValue(Grid.ColumnProperty, j);
                        month.CalendarLeftMouseButtonDown += Month_CalendarButtonMouseDown;
                        month.CalendarLeftMouseButtonUp   += Month_CalendarButtonMouseUp;
                        month.PointerEnter += Month_MouseEnter;
                        month.PointerLeave += Month_MouseLeave;
                        children.Add(month);
                    }
                }

                YearView.Children.AddRange(children);
            }
        }
コード例 #13
0
        private void PopulateGrids()
        {
            if (MonthView != null)
            {
                var childCount = Calendar.RowsPerMonth + Calendar.RowsPerMonth * Calendar.ColumnsPerMonth;
                using var children = new PooledList <IControl>(childCount);

                for (int i = 0; i < Calendar.RowsPerMonth; i++)
                {
                    if (_dayTitleTemplate != null)
                    {
                        var cell = (Control)_dayTitleTemplate.Build();
                        cell.DataContext = string.Empty;
                        cell.SetValue(Grid.RowProperty, 0);
                        cell.SetValue(Grid.ColumnProperty, i);
                        children.Add(cell);
                    }
                }

                EventHandler <PointerPressedEventArgs>  cellMouseLeftButtonDown = Cell_MouseLeftButtonDown;
                EventHandler <PointerReleasedEventArgs> cellMouseLeftButtonUp   = Cell_MouseLeftButtonUp;
                EventHandler <PointerEventArgs>         cellMouseEnter          = Cell_MouseEnter;
                EventHandler <RoutedEventArgs>          cellClick = Cell_Click;

                for (int i = 1; i < Calendar.RowsPerMonth; i++)
                {
                    for (int j = 0; j < Calendar.ColumnsPerMonth; j++)
                    {
                        var cell = new CalendarDayButton();

                        if (Owner != null)
                        {
                            cell.Owner = Owner;
                        }
                        cell.SetValue(Grid.RowProperty, i);
                        cell.SetValue(Grid.ColumnProperty, j);
                        cell.CalendarDayButtonMouseDown += cellMouseLeftButtonDown;
                        cell.CalendarDayButtonMouseUp   += cellMouseLeftButtonUp;
                        cell.PointerEnter += cellMouseEnter;
                        cell.Click        += cellClick;
                        children.Add(cell);
                    }
                }

                MonthView.Children.AddRange(children);
            }

            if (YearView != null)
            {
                var childCount = Calendar.RowsPerYear * Calendar.ColumnsPerYear;
                var children   = new List <IControl>(childCount);

                EventHandler <PointerPressedEventArgs>  monthCalendarButtonMouseDown = Month_CalendarButtonMouseDown;
                EventHandler <PointerReleasedEventArgs> monthCalendarButtonMouseUp   = Month_CalendarButtonMouseUp;
                EventHandler <PointerEventArgs>         monthMouseEnter = Month_MouseEnter;

                for (int i = 0; i < Calendar.RowsPerYear; i++)
                {
                    for (int j = 0; j < Calendar.ColumnsPerYear; j++)
                    {
                        var month = new CalendarButton();

                        if (Owner != null)
                        {
                            month.Owner = Owner;
                        }
                        month.SetValue(Grid.RowProperty, i);
                        month.SetValue(Grid.ColumnProperty, j);
                        month.CalendarLeftMouseButtonDown += monthCalendarButtonMouseDown;
                        month.CalendarLeftMouseButtonUp   += monthCalendarButtonMouseUp;
                        month.PointerEnter += monthMouseEnter;
                        children.Add(month);
                    }
                }

                YearView.Children.AddRange(children);
            }
        }