Esempio n. 1
0
        public void CreateCalendar()
        {
            if (MeasuredWidth == 0)
            {
                return;
            }

            var metrics = Resources.System.DisplayMetrics;

            var dayCount         = 999;
            var originalDayCount = 999;

            RemoveAllViews();

            bool isCalendarEnabled = true;

            _maxDaysOnBar = (int)Math.Floor(
                (double)Utils.ConvertPixelsToDp(MeasuredWidth, Context) / CalendarBarDayView.CALENDAR_DAY_WIDTH
                );

            originalDayCount  = (int)(_endDate - _originalStartDate).TotalDays + 1;
            dayCount          = (int)(_endDate - _startDate).TotalDays + 1;
            isCalendarEnabled = originalDayCount > _maxDaysOnBar;

            if (isCalendarEnabled)
            {
                _maxDaysOnBar = (int)Math.Floor(
                    (double)(Utils.ConvertPixelsToDp(MeasuredWidth, Context) - CALENDAR_MORE_SECTION_MIN_WIDTH) / CalendarBarDayView.CALENDAR_DAY_WIDTH
                    );
            }

            int daysOnBar = (int)Math.Min(_maxDaysOnBar, dayCount);

            CalendarBarDayView calendarBarDay;
            DateTime           currentDate;

            for (int i = 0; i < daysOnBar; i++)
            {
                currentDate    = _startDate.AddDaysSafe(i).Date;
                calendarBarDay = AddDay(currentDate);

                if (calendarBarDay.IsSelected)
                {
                    _selectedCalendarBarDay = calendarBarDay;
                }
            }

            if (isCalendarEnabled)
            {
                AddMoreDaysSection();
            }

            if (_calendarMoreButton != null)
            {
                _calendarMoreButton.SetTextColor(TextColor);
                _calendarMoreButton.Text = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(_selectedDate.Month).ToUpper();
            }
        }
Esempio n. 2
0
        public void OnDateSet(DatePicker view, int year, int month, int dayOfMonth)
        {
            //var selectedDateYear = _selectedDate.Year;
            _selectedDate = DateTimeExtensions.CreateValidDate(year, month + 1, dayOfMonth);
            //if (selectedDateYear != year)
            //{
            //	return;
            //}

            var dayCount = (int)(_endDate - _selectedDate).TotalDays + 1;

            if (dayCount > _maxDaysOnBar)
            {
                _startDate = _selectedDate;
            }
            else
            {
                _startDate = _endDate.AddDaysSafe(-_maxDaysOnBar + 1);
            }

            DayChanged?.Invoke(this, new CalendarBarEventArgs()
            {
                Date = _selectedDate, Source = DateSelectionSource.Calendar
            });

            RequestLayout();
        }