protected override void OnMonthChanged() { _title.Text = Month.ToString("MMMM yyyy"); var semester = _viewModel?.SemesterItemsViewGroup?.Semester; if (semester != null && !semester.IsMonthDuringThisSemester(Month)) { OverlayView = new DifferentSemesterOverlayControl(Context) { LayoutParameters = new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MatchParent, FrameLayout.LayoutParams.MatchParent) }; } else { OverlayView = null; } base.OnMonthChanged(); }
private void RenderDate(DateTime date) { // Clear current items var col = _scheduleHost.GetChildAt(getColumn(date.DayOfWeek)) as ViewGroup; // Remove all but the day header and all day items while (col.ChildCount > 2) { col.RemoveViewAt(2); } // Get arranger for the date var arranger = ViewModel.Items[date.DayOfWeek]; foreach (var s in arranger.ScheduleItems) { var scheduleItem = new MyScheduleItemView(Context, s.Item); scheduleItem.Clickable = true; scheduleItem.Click += ScheduleItem_Click; AddVisualItem(scheduleItem, s, date.DayOfWeek); } // Reverse the order so that when items expand, they appear on top of the items beneath them. // Otherwise I would have to do some crazy Z-order logic. foreach (var e in arranger.EventItems.Reverse()) { View visual; if (e.IsCollapsedMode) { visual = new MyCollapsedEventItem(Context) { Item = e }; } else { visual = new MyFullEventItem(Context) { Item = e }; } AddVisualItem(visual, e, arranger.Date.DayOfWeek); } if (!arranger.HolidayAndAllDayItems.Any() && !arranger.EventItems.Any() && !arranger.ScheduleItems.Any() && (date.DayOfWeek == DayOfWeek.Saturday || date.DayOfWeek == DayOfWeek.Sunday)) { col.Visibility = ViewStates.Gone; } else { col.Visibility = ViewStates.Visible; } if (arranger.HasHolidays) { var overlay = new View(Context) { Background = new ColorDrawable(new Color(228, 0, 137, 40)), LayoutParameters = new ViewGroup.LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent) }; col.AddView(overlay); } if (arranger.IsDifferentSemester) { var diffSemesterOverlay = new DifferentSemesterOverlayControl(Context) { LayoutParameters = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent) }; diffSemesterOverlay.PinButtonToTop(60); col.AddView(diffSemesterOverlay); } //UpdateTimePaddingBasedOnAllDayItems(); }