WinRTXamlToolkit.Controls.Calendar.OnPreviousClick C# (CSharp) Method

OnPreviousClick() private method

Inherited code: Requires comment.
private OnPreviousClick ( ) : void
return void
        internal void OnPreviousClick()
        {
            if (DisplayMode == CalendarMode.Month && DisplayDate != null)
            {
                DateTime? d = DateTimeHelper.AddMonths(DateTimeHelper.DiscardDayTime(DisplayDate), -1);
                if (d.HasValue)
                {
                    if (!LastSelectedDate.HasValue || DateTimeHelper.CompareYearMonth(LastSelectedDate.Value, d.Value) != 0)
                    {
                        LastSelectedDate = d.Value;
                    }
                    DisplayDate = d.Value;
                }
            }
            else
            {
                if (DisplayMode == CalendarMode.Year)
                {
                    DateTime? d = DateTimeHelper.AddYears(new DateTime(SelectedMonth.Year, 1, 1), -1);

                    if (d.HasValue)
                    {
                        SelectedMonth = d.Value;
                    }
                    else
                    {
                        SelectedMonth = DateTimeHelper.DiscardDayTime(DisplayDateRangeStart);
                    }
                }
                else
                {
                    Debug.Assert(DisplayMode == CalendarMode.Decade, "DisplayMode should be Decade!");

                    DateTime? d = DateTimeHelper.AddYears(new DateTime(SelectedYear.Year, 1, 1), -10);

                    if (d.HasValue)
                    {
                        int decade = Math.Max(1, DateTimeHelper.DecadeOfDate(d.Value));
                        SelectedYear = new DateTime(decade, 1, 1);
                    }
                    else
                    {
                        SelectedYear = DateTimeHelper.DiscardDayTime(DisplayDateRangeStart);
                    }
                }
                UpdateMonths();
            }
        }