Esempio n. 1
0
        private bool CalculateRepeatWeek(DateTime date)
        {
            int _repeatDayInt = int.Parse(_day);

            if (_repeatDayInt == 0)
            {
                // Xth Day
                if (_week < 4)
                {
                    return(_week + 1 == date.Day);
                }
                else
                {
                    return(CalendarHelpers.DaysInMonth(date.Month, date.Year) == date.Day);
                }
            }
            else if (_repeatDayInt == 1)
            {
                // Xth Weekday
                if (date.DayOfWeek != DayOfWeek.Sunday && date.DayOfWeek != DayOfWeek.Saturday)
                {
                    return(date.Day == CalendarHelpers.Weekday(date.Month, date.Year, _week + 1));
                }
            }
            else if (_repeatDayInt == 2)
            {
                // Xth Weekend Day
                if (date.DayOfWeek == DayOfWeek.Sunday || date.DayOfWeek == DayOfWeek.Saturday)
                {
                    return(date.Day == CalendarHelpers.WeekendDay(date.Month, date.Year, _week + 1));
                }
            }
            else
            {
                // Xth Day of Week
                int dayOfWeek = CalendarHelpers.DayOfWeekNumber(date);

                return((int)date.DayOfWeek == _repeatDayInt - 3 &&
                       (dayOfWeek == _week + 1 ||
                        (_week == 4 && dayOfWeek == CalendarHelpers.NumberOfWeeks(date))));
            }

            return(false);
        }
Esempio n. 2
0
        private void InitializeLayout()
        {
            title.Text = CalendarHelpers.Month(_month) + " " + _year.ToString();

            int beginningOfMonth = CalendarHelpers.DayOfWeek(_year, _month, 1);
            int daysInMonth      = CalendarHelpers.DaysInMonth(_month, _year);

            int row    = 2;
            int column = 0;

            int counter = 0;

            bool hasBegin = DisplayDateStart != null;
            bool hasEnd   = DisplayDateEnd != null;

            //
            // Previous month
            //
            int prevMonth     = _month > 1 ? _month - 1 : 12;
            int prevYear      = _month > 1 ? _year : _year - 1;
            int daysLastMonth = CalendarHelpers.DaysInMonth(prevMonth, prevYear);

            for (int i = beginningOfMonth - 2; i >= 0; i--)
            {
                RadioButton text = new RadioButton();
                text.Style   = FindResource("DateButton") as Style;
                text.Opacity = 0.5;
                text.Content = (daysLastMonth - i).ToString();

                DateTime dt = new DateTime(prevYear, prevMonth, daysLastMonth - i);

                if (!hasEnd || (DateTime)DisplayDateEnd >= dt)
                {
                    if (!hasBegin || (DateTime)DisplayDateStart <= dt)
                    {
                        text.Tag               = dt;
                        text.Checked          += text_Checked;
                        text.MouseDoubleClick += text_MouseDoubleClick;
                    }
                    else
                    {
                        text.IsEnabled = false;
                    }
                }
                else
                {
                    text.IsEnabled = false;
                }

                Grid.SetRow(text, row);
                Grid.SetColumn(text, column);
                grid.Children.Add(text);

                if (column < 6)
                {
                    column++;
                }
                else
                {
                    column = 0;
                    row++;
                }

                counter++;
            }

            //
            // This month
            //
            for (int i = 1; i <= daysInMonth; i++)
            {
                RadioButton text = new RadioButton();
                text.Style   = FindResource("DateButton") as Style;
                text.Content = i.ToString();

                DateTime dt = new DateTime(_year, _month, i);
                InitRadioButton(hasBegin, hasEnd, dt, text, ref row, ref column);

                counter++;
            }

            //
            // Next month
            //
            int nextMonth = _month < 12 ? _month + 1 : 1;
            int nextYear  = _month < 12 ? _year : _year + 1;

            for (int i = 1; i <= 42 - counter; i++)
            {
                RadioButton text = new RadioButton();
                text.Style   = FindResource("DateButton") as Style;
                text.Opacity = 0.5;
                text.Content = i.ToString();

                DateTime dt = new DateTime(nextYear, nextMonth, i);
                InitRadioButton(hasBegin, hasEnd, dt, text, ref row, ref column);
            }
        }