Пример #1
0
        public Grid CreateWeekGrid(string ActiveDate, int ActiveWeekDay)
        {
            
            int ActiveDay = int.Parse(CalendarClass.DayNumber(ActiveDate));

            var grdTemp = new Grid();

            grdTemp.RowDefinitions.Add(new RowDefinition { Height = 30 * FixParams.AspectRate });
            grdTemp.RowDefinitions.Add(new RowDefinition { Height = 40 * FixParams.AspectRate });

            grdTemp.RowSpacing = 0;
            grdTemp.ColumnSpacing = 2 * FixParams.AspectRate;
            grdTemp.Padding = 2 * FixParams.AspectRate;
            grdTemp.BackgroundColor = FixParams.PanelColor; 

            for (int i = 0; i < 7; i++)
            {
                grdTemp.Children.Add(new Label
                {
                    TextColor = FixParams.AlterFontColor,
                    BackgroundColor = FixParams.PanelColor,
                    Text = " " + CalendarClass.ShortDayNames[6 - i],
                    XAlign = TextAlignment.Center,
                    YAlign = TextAlignment.Center,
                    FontSize = FixParams.StandardSize
                }, i, 0);

                var clr = new Color();
                if (ActiveWeekDay == i)
                    clr = FixParams.SpecFontColor;
                else
                    clr = FixParams.FontColor;

                var lblDayNum = new MyLabel
                {
                    TextColor = clr,
                    BackgroundColor = FixParams.BackgroundColor,
                    Text = " " + CalendarClass.DayNumber(CalendarClass.AddDayToDate(ActiveDate, i - ActiveWeekDay).ToString()),
                    XAlign = TextAlignment.Center,
                    YAlign = TextAlignment.Center,
                    FontSize = FixParams.MediumSize,
                    Property1 = i.ToString(),
                    Property2 = CalendarClass.AddDayToDate(ActiveDate, i - ActiveWeekDay).ToString()
                };
                if (CalendarClass.IsHolyDay(CalendarClass.DateToDateTime(lblDayNum.Property2))) lblDayNum.TextColor = FixParams.AlterFontColor;
                if (i==6) lblDayNum.TextColor = FixParams.AlterFontColor;

                lblDayNum.GestureRecognizers.Add(new TapGestureRecognizer { Command = new Command(() => 
                    {
                        _ActiveDate = lblDayNum.Property2;
                        _ActiveWeekDay = int.Parse(lblDayNum.Property1);

                        DayNumber.Text = lblDayNum.Text;
                        DayName.Text = CalendarClass.WeekDayName(_ActiveWeekDay);
                        MonthName.Text = CalendarClass.MonthName(_ActiveDate) + " ماه " + CalendarClass.YearName(_ActiveDate);

                        grdWeekDays = CreateWeekGrid(_ActiveDate, _ActiveWeekDay);

                        Animateview(_pnlDayNote, 400);

                        _layout.Children.Remove(DayNumber);
                        _layout.Children.Remove(DayName);
                        _layout.Children.Remove(MonthName);
                        _layout.Children.Remove(grdWeekDays);

                        _layout.Children.Add(DayNumber,
                                            Constraint.RelativeToParent((p) => {
                                                return _layout.Width - (65 * FixParams.AspectRate);
                                            }),
                                            Constraint.RelativeToParent((p) => {
                                                return 5 * FixParams.AspectRate;
                                            }),
                                            Constraint.RelativeToParent((p) => {
                                                return 60 * FixParams.AspectRate;
                                            }),
                                            Constraint.RelativeToParent((p) => {
                                                return 55 * FixParams.AspectRate;
                                            })
                                        );

                        _layout.Children.Add(MonthName,
                                            Constraint.RelativeToParent((p) => {
                                                return _layout.Width - (180 * FixParams.AspectRate);
                                            }),
                                            Constraint.RelativeToParent((p) => {
                                                return 1 * FixParams.AspectRate;
                                            }),
                                            Constraint.RelativeToParent((p) => {
                                                return 120 * FixParams.AspectRate;
                                            }),
                                            Constraint.RelativeToParent((p) => {
                                                return 30 * FixParams.AspectRate;
                                            })
                                        );

                        _layout.Children.Add(DayName,
                                            Constraint.RelativeToParent((p) => {
                                                return _layout.Width - (180 * FixParams.AspectRate);
                                            }),
                                            Constraint.RelativeToParent((p) => {
                                                return 25 * FixParams.AspectRate;
                                            }),
                                            Constraint.RelativeToParent((p) => {
                                                return 120 * FixParams.AspectRate;
                                            }),
                                            Constraint.RelativeToParent((p) => {
                                                return 30 * FixParams.AspectRate;
                                            })
                                        );

                        _layout.Children.Add(grdWeekDays,
                                            Constraint.RelativeToParent((p) => {
                                                return 10 * FixParams.AspectRate;
                                            }),
                                            Constraint.RelativeToParent((p) => {
                                                return DayNumber.Height;
                                            }),
                                            Constraint.RelativeToParent((p) => {
                                                return _layout.Width - (20 * FixParams.AspectRate);
                                            }),
                                            Constraint.RelativeToParent((p) => {
                                                return 75 * FixParams.AspectRate;
                                            })
                                        );


                        for (int j = 11; j >= 6; j--)
                            grdPryingTimes.Children.RemoveAt(j);

                        prayer _prayer = new prayer();
                        _prayer.UpdatePryTimes(_ActiveDate);

                        grdPryingTimes.Children.Add(new Label { FontSize = FixParams.SmallSize, Text = prayer._MP, XAlign = TextAlignment.Center, YAlign = TextAlignment.Center, TextColor = FixParams.FontColor, BackgroundColor = FixParams.BackgroundColor }, 5, 1);
                        grdPryingTimes.Children.Add(new Label { FontSize = FixParams.SmallSize, Text = prayer._SR, XAlign = TextAlignment.Center, YAlign = TextAlignment.Center, TextColor = FixParams.FontColor, BackgroundColor = FixParams.BackgroundColor }, 4, 1);
                        grdPryingTimes.Children.Add(new Label { FontSize = FixParams.SmallSize, Text = prayer._MD, XAlign = TextAlignment.Center, YAlign = TextAlignment.Center, TextColor = FixParams.FontColor, BackgroundColor = FixParams.BackgroundColor }, 3, 1);
                        grdPryingTimes.Children.Add(new Label { FontSize = FixParams.SmallSize, Text = prayer._SS, XAlign = TextAlignment.Center, YAlign = TextAlignment.Center, TextColor = FixParams.FontColor, BackgroundColor = FixParams.BackgroundColor }, 2, 1);
                        grdPryingTimes.Children.Add(new Label { FontSize = FixParams.SmallSize, Text = prayer._NP, XAlign = TextAlignment.Center, YAlign = TextAlignment.Center, TextColor = FixParams.FontColor, BackgroundColor = FixParams.BackgroundColor }, 1, 1);
                        grdPryingTimes.Children.Add(new Label { FontSize = FixParams.SmallSize, Text = prayer._MN, XAlign = TextAlignment.Center, YAlign = TextAlignment.Center, TextColor = FixParams.FontColor, BackgroundColor = FixParams.BackgroundColor }, 0, 1);

                        _pnlDayNote.Children.Clear();
                        lblNote.Text = CalendarClass.Events(CalendarClass.DateToDateTime(_ActiveDate));
                        if (CalendarClass.IsHolyDay(CalendarClass.DateToDateTime(_ActiveDate))) lblNote.TextColor = FixParams.AlterFontColor;
                        _pnlDayNote.Children.Add(lblNote);

                    }), NumberOfTapsRequired = 1 });

                grdTemp.Children.Add(lblDayNum, 6 - i, 1);
            }
            return grdTemp;
        }