Esempio n. 1
0
        private CalendarMonthViewDayModel GetTodayModel()
        {
            CalendarMonthViewDayModel dayModel = null;

            foreach (KeyValuePair <DateTime, ContentControl> control in _DayControls)
            {
                CalendarMonthViewDayModel model =
                    control.Value.DataContext as CalendarMonthViewDayModel;
                if (model.IsToday)
                {
                    dayModel = model;
                    break;
                }
            }

            return(dayModel);
        }
Esempio n. 2
0
        private CalendarMonthViewDayModel GetDayModel(DateTime dateTime)
        {
            CalendarMonthViewDayModel dayModel = null;

            foreach (KeyValuePair <DateTime, ContentControl> control in _DayControls)
            {
                CalendarMonthViewDayModel model =
                    control.Value.DataContext as CalendarMonthViewDayModel;
                if (model.DateTime.Year == dateTime.Year &&
                    model.DateTime.Month == dateTime.Month &&
                    model.DateTime.Day == dateTime.Day)
                {
                    dayModel = model;
                    break;
                }
            }

            return(dayModel);
        }
Esempio n. 3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="CalendarMonthView"/> class.
        /// </summary>
        public CalendarMonthView()
        {
            InitializeComponent();

            DayItemTemplate = (ControlTemplate)Resources["DayItemTemplate"];

            for (int row = 0; row < 6; row++)
            {
                for (int column = 0; column < 7; column++)
                {
                    CalendarMonthViewDayModel model = new CalendarMonthViewDayModel {
                        MonthPosition = new DayInMonthViewPosition(row, column, IsInPortrait)
                    };
                    ContentControl dayControl = new ContentControl {
                        DataContext = model
                    };

                    dayControl.SetBinding(ContentControl.TemplateProperty, new Binding("DayItemTemplate")
                    {
                        Source = this
                    });
                    dayControl.Tap += new EventHandler <GestureEventArgs>(DayControl_Tap);

                    Grid.SetRow(dayControl, row);
                    Grid.SetColumn(dayControl, column);
                    CalendarGrid.Children.Add(dayControl);
                }
            }

            SetValue(DateProperty, new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1));
            UpdateDayNames();
            CalendarMonthViewDayModel todayModel = GetTodayModel();

            if (todayModel != null)
            {
                CurrentDay = todayModel.DateTime;
            }
        }
Esempio n. 4
0
        public void UpdateView()
        {
            Debug.WriteLine("UpdateView()");

            if (Date > DateTime.MinValue)
            {
                DateTime calendarDay =
                    Date.AddDays(DayOfWeek.Sunday - Date.DayOfWeek).Date;
                int rowLenght = 7;

                ObservableCollection <Entry> entries;
                EntryDataContext.Instance.TryGetAnniversaryEntries(Date.Year,
                                                                   Date.Month, out entries);

                _DayControls.Clear();

                VisibleRow = 0;

                for (int row = 0; row < 6; row++)
                {
                    bool isRowCollapsed = row > 0 && calendarDay.Month != Date.Month; // Hide last row if not needed

                    VisibleRow = isRowCollapsed ? VisibleRow : VisibleRow + 1;

                    for (int column = 0; column < rowLenght; column++)
                    {
                        ContentControl dayControl = CalendarGrid.Children[row * rowLenght + column] as ContentControl;
                        dayControl.Visibility = isRowCollapsed ? Visibility.Collapsed : Visibility.Visible;

                        CalendarMonthViewDayModel model = dayControl.DataContext as CalendarMonthViewDayModel;
                        model.DayOfMonth     = calendarDay.Day;
                        model.IsCurrentMonth = calendarDay.Month == Date.Month;
                        model.IsToday        = calendarDay == DateTime.Today;
                        model.DateTime       = calendarDay;

                        if (calendarDay == DateTime.Today)
                        {
                            model.DayType = DayType.Today;
                        }
                        else if (calendarDay.Month != Date.Month)
                        {
                            model.DayType = DayType.NotCurrentMonth;
                        }
                        else if (HasAnniversaryEntry(entries, calendarDay.Day))
                        {
                            model.DayType = DayType.Anniversary;
                        }
                        else if (DateCalculator.IsFestival(calendarDay))
                        {
                            model.DayType = DayType.Festival;
                        }
                        else if (IsWeekend(calendarDay))
                        {
                            model.DayType = DayType.Weekend;
                        }
                        else
                        {
                            model.DayType = DayType.Workday;
                        }

                        _DayControls.Add(calendarDay, dayControl);
                        UpdateDayControlSubjects(calendarDay);

                        calendarDay = calendarDay.AddDays(1);
                    }
                }

                LayoutGridCanlendar();
                if (MonthViewVisibleRowUpdated != null)
                {
                    MonthViewVisibleRowUpdated(VisibleRow);
                }
            }
        }