Exemple #1
0
        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();
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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
                });
            };
        }
Exemple #4
0
        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);
                }
            }
        }
Exemple #5
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);
        }
Exemple #6
0
        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);
                }
            }
        }
Exemple #7
0
        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());
            }
        }
Exemple #8
0
        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++;
                }
            }
        }