public void GenerateCalendar() { calendarView.MainGrid.Children.Clear(); listDays.Clear(); calendarView.Year.Text = choosedDate.Year.ToString(); calendarView.Month.Text = Config.LanguageSet.Month[choosedDate.Month]; var Days = DateTime.DaysInMonth(choosedDate.Year, choosedDate.Month); GetBeforeDays(); for (int i = 1; i <= Days; i++) { var date = new DateTime(choosedDate.Year, choosedDate.Month, i); var dto = new DateTime(choosedDate.Year, choosedDate.Month, i); var Day = new CalendarDays() { DayNumber = i, DayOfTheWeek = (int)date.DayOfWeek, DayNote = "", DateTimeObject = dto, IsToday = dto.Date == DateTime.Now.Date ? true : false }; listDays.Add(Day); } GetAfterDays(); AddDaysToCalendar(); }
public void InitializeCalendar(DateTime targetDate) { CalendarDays.Clear(); // First day of the targeted month. var firstDay = new Date(targetDate.Year, targetDate.Month, 1); // Make sure that each calendar page starts with a monday. var dayOfTheWeek = firstDay.DayOfWeek; firstDay = firstDay.AddDays(-dayOfTheWeek); // Each calendar page has six weeks (rows). That means that we will show 42 days in total. for (var i = 0; i < 42; i++) { var calendarDay = new CalendarDay { Date = firstDay, IsTargetMonth = targetDate.Month == firstDay.Month, IsToday = firstDay == Date.Today }; CalendarDays.Add(calendarDay); // Move to the next day. firstDay = firstDay.AddDays(1); } }
private void ChangeMonth(DateTime dt) { var easing = new CircleEase { EasingMode = EasingMode.EaseInOut }; var animDur = TimeSpan.FromMilliseconds(300); CalendarDays.BeginAnimation(OpacityProperty, new DoubleAnimation(CalendarDays.Opacity, 0, animDur) { EasingFunction = easing }); PersianTitle.BeginAnimation(OpacityProperty, new DoubleAnimation(PersianTitle.Opacity, 0, animDur) { EasingFunction = easing }); GregorianTitle.BeginAnimation(OpacityProperty, new DoubleAnimation(GregorianTitle.Opacity, 0, animDur) { EasingFunction = easing }); HijriTitle.BeginAnimation(OpacityProperty, new DoubleAnimation(HijriTitle.Opacity, 0, animDur) { EasingFunction = easing }); var timer = new DispatcherTimer { Interval = animDur }; timer.Start(); timer.Tick += (sender, args) => { ((DispatcherTimer)sender)?.Stop(); NowDateTime = dt; DesignCalendar(); CalendarDays.BeginAnimation(OpacityProperty, new DoubleAnimation(CalendarDays.Opacity, 1, animDur) { EasingFunction = easing }); PersianTitle.BeginAnimation(OpacityProperty, new DoubleAnimation(PersianTitle.Opacity, 1, animDur) { EasingFunction = easing }); GregorianTitle.BeginAnimation(OpacityProperty, new DoubleAnimation(GregorianTitle.Opacity, 1, animDur) { EasingFunction = easing }); HijriTitle.BeginAnimation(OpacityProperty, new DoubleAnimation(HijriTitle.Opacity, 1, animDur) { EasingFunction = easing }); }; }
private void MakeDayList(CalendarPages pages) { days = new CalendarDays(); var settings = new SettingsProvider(); var first = date.DayOfWeek; var last = DateTime.DaysInMonth(date.Year, date.Month); var dow = firstDow == DayOfWeek.Sunday ? (int)first : first == DayOfWeek.Sunday ? 6 : (int)first - 1; var runner = date.Date; // previous month if (dow > 0) { runner = runner.AddDays(-dow); for (int i = 0; i < dow; i++) { MakeDay(days, pages, runner, settings.Modified); runner = runner.AddDays(1.0); } } // month for (int i = 1; i <= last; i++) { MakeDay(days, pages, runner, settings.Modified, true); runner = runner.AddDays(1.0); } // next month var rest = 7 - days.Count % 7; if (rest < 7) { for (int i = 0; i < rest; i++) { MakeDay(days, pages, runner, settings.Modified); runner = runner.AddDays(1.0); } } }
private void MakeDay( CalendarDays days, CalendarPages pages, DateTime date, bool modified, bool inMonth = false) { var day = new CalendarDay { Date = date, InMonth = inMonth }; // filtering prioritizes modified over created and prevent pages from being // displayed twice in the month if both created and modified in the same month var pags = pages.Where(p => (modified && p.Modified.Date.Equals(date)) || (!modified && p.Created.Date.Equals(date)) ); pags.ForEach(p => day.Pages.Add(p)); days.Add(day); }
void GetBeforeDays() { var date = new DateTime(choosedDate.Year, choosedDate.Month, 1); var BeforeDays = DateTime.DaysInMonth(choosedDate.Month == 1 ? choosedDate.Year - 1 : choosedDate.Year, choosedDate.Month == 1 ? 12 : choosedDate.Month - 1); if ((int)date.DayOfWeek != 1) { for (int f = BeforeDays - ((int)date.DayOfWeek - 1); f <= BeforeDays; f++) { var datebefore = new DateTime(choosedDate.Month == 1 ? choosedDate.Year - 1 : choosedDate.Year, choosedDate.Month == 1 ? 12 : choosedDate.Month - 1, f); var DayBefore = new CalendarDays() { DayNumber = f, DayOfTheWeek = (int)datebefore.DayOfWeek, DayNote = "", DateTimeObject = new DateTime((int)datebefore.Year, datebefore.Month, f), IsBeforeOrAfter = true }; listDays.Add(DayBefore); } } }
public CalendarMonth(DateTime month, List <Common.EventBase> events) { Month = month; var days = DateTime.DaysInMonth(month.Year, month.Month); for (int i = 1; i <= days; i++) { CalendarDays.Add(new CalendarDay(new DateTime(month.Year, month.Month, i))); } if (events != null && events.Count > 0) { foreach (var day in CalendarDays) { var items = from item in events where item.IsEventDateMatched((DateTime)day.Date) select item; day.Events.AddRange(items); } } var dayOfTheWeek = new DateTime(month.Year, month.Month, 1).DayOfWeek; var blankDaysToAdd = (int)dayOfTheWeek; if (blankDaysToAdd > 0) { for (var i = 0; i < blankDaysToAdd; i++) { CalendarDays.Insert(0, new CalendarDay()); } } while (CalendarDays.Count < 42) { CalendarDays.Add(new CalendarDay()); } }
void GetAfterDays() { var AfterDays = DateTime.DaysInMonth(choosedDate.Month == 12 ? choosedDate.Year + 1 : choosedDate.Year, choosedDate.Month == 12 ? 1 : choosedDate.Month + 1); var date = new DateTime(choosedDate.Year, choosedDate.Month, 1); if ((int)date.DayOfWeek != 1) { for (int f = ((int)date.DayOfWeek == 0?7: (int)date.DayOfWeek); f <= 6; f++) { int i = 1; var datebefore = new DateTime(choosedDate.Month == 12 ? choosedDate.Year + 1 : choosedDate.Year, choosedDate.Month == 12 ? 1 : choosedDate.Month + 1, i); var DayBefore = new CalendarDays() { DayNumber = i, DayOfTheWeek = (int)datebefore.DayOfWeek, DayNote = "", DateTimeObject = new DateTime((int)datebefore.Year, datebefore.Month, i), IsBeforeOrAfter = true }; listDays.Add(DayBefore); i++; } } }