示例#1
0
 public override void ShowDay(CalendarModel.Day day)
 {
     numberLabel = new Label();
     View.SetDoubleBuffered(numberLabel);
     numberLabel.Anchor = AnchorStyles.None;
     numberLabel.Text   = day.Number.ToString();
 }
示例#2
0
 public override void SelectDay(CalendarModel.Day day)
 {
     if (selectedDay != null)
     {
         selectedDay.LabelTitle.ForeColor = Color.Black;
     }
     base.SelectDay(day);
     selectedDay.LabelTitle.ForeColor = selectedDayColor;
 }
示例#3
0
        public override void ShowDays(CalendarModel.Day _selectedDay)
        {
            if (_selectedDay == null)
            {
                _selectedDay = selectedDay;
            }

            title.Text = $"{(model as WeekModel).Days[6].WeekOfYear.ToString()}. week of {(model as WeekModel).Days[6].Year}";

            View.SetDoubleBuffered(panel);

            if (headerPanel.Controls.Count >= 7)
            {
                for (int i = 0; i < 7; i++)
                {
                    headerPanel.Controls.RemoveAt(0);
                }
            }

            for (int i = 0; i < (model as WeekModel).Days.Length; i++)
            {
                Label label = new Label();
                label.Dock      = DockStyle.Fill;
                label.TextAlign = ContentAlignment.MiddleLeft;
                label.Text      = $"{(model as WeekModel).Days[i].DayOfWeek}\n{(model as WeekModel).Days[i].Number}.{(model as WeekModel).Days[i].Month}";
                label.Font      = new Font("Arial", 10, FontStyle.Bold);
                label.Tag       = (model as WeekModel).Days[i];
                (model as WeekModel).Days[i].LabelTitle = label;
                label.MouseClick += new MouseEventHandler(day_MouseClick);
                headerPanel.Controls.Add(label, i + 1, 0);
                if ((model as WeekModel).Days[i].DateEquals(_selectedDay))
                {
                    this.SelectDay((model as WeekModel).Days[i]);
                }
            }

            while (panel.Controls.Count > 0)
            {
                panel.Controls.RemoveAt(0);
            }
            panel.Controls.Add(hoursPictureBox, 0, 0);
            for (int i = 0; i < (model as WeekModel).Days.Length; i++)
            {
                panel.Controls.Add((model as WeekModel).Days[i].PictureBox, i + 1, 0);
                this.ShowDay((model as WeekModel).Days[i]);
            }

            panel.AutoScrollPosition = new Point(0, 8 * cellHeight);
        }
示例#4
0
        public override void ShowDay(CalendarModel.Day day)
        {
            Bitmap bitmap = new Bitmap(day.PictureBox.Width, day.PictureBox.Height);

            using (Graphics g = Graphics.FromImage(bitmap))
            {
                for (int i = 1; i < 24; i++)
                {
                    g.DrawLine(Pens.DarkGray, new Point(0, i * cellHeight), new Point(bitmap.Width, i * cellHeight));
                }
            }
            day.PictureBox.BackgroundImage = bitmap;
            day.PictureBox.BackColor       = Color.Transparent;
            day.PictureBox.MouseClick     += new MouseEventHandler(day_MouseClick);
            day.PictureBox.Image           = new Bitmap(day.PictureBox.Width, day.PictureBox.Height);
            using (Graphics g = Graphics.FromImage(day.PictureBox.Image))
            {
                int cornerX = 0;
                for (int i = 0; i < day.Events.Count; i++)
                {
                    Event e = day.Events[i];

                    int j = i + 1;
                    while (j < day.Events.Count && (day.Events[j].Start.Hour < e.End.Hour || (day.Events[j].Start.Hour == e.End.Hour && day.Events[j].Start.Minute < e.End.Minute)))
                    {
                        j++;
                    }
                    int width = (day.PictureBox.Width - cornerX - 1) / (j - i);

                    Color eventColor        = DataModel.IsEventAccepted(e.Id) ? e.Type.Color.Color : notAcceptedEventColor;
                    Color lighterEventColor = ControlPaint.Light(ControlPaint.LightLight(eventColor));
                    Point corner            = new Point(cornerX, cellHeight * e.Start.Hour + (e.Start.Minute / 60) * cellHeight);
                    int   height            = (int)(((e.End.Hour - e.Start.Hour) * 60 + e.End.Minute - e.Start.Minute) * cellHeight / 60);
                    g.FillRectangle(new SolidBrush(lighterEventColor), new Rectangle(new Point(corner.X, corner.Y), new Size(width, height)));
                    TextRenderer.DrawText(g, e.Name, new Font("Arial", 10, FontStyle.Bold), new Rectangle(new Point(corner.X + 3, corner.Y + 3), new Size(width, height)), Color.Gray, lighterEventColor, TextFormatFlags.WordBreak | TextFormatFlags.WordEllipsis | TextFormatFlags.Top | TextFormatFlags.Left);
                    g.DrawRectangle(new Pen(eventColor, 1), new Rectangle(corner, new Size(width, height)));

                    if (j - i == 1)
                    {
                        cornerX = 0;
                    }
                    else
                    {
                        cornerX += width + 1;
                    }
                }
            }
        }
示例#5
0
 public override void ShowDay(CalendarModel.Day day)
 {
     day.PictureBox.MouseClick += new MouseEventHandler(pictureBox_MouseClick);
     day.PictureBox.Paint      += new PaintEventHandler(pictureBox_Paint);
     day.PictureBox.Image       = new Bitmap(day.PictureBox.Width, day.PictureBox.Height);
     using (Graphics g = Graphics.FromImage(day.PictureBox.Image))
     {
         TextRenderer.DrawText(g, day.Number.ToString(), new Font("Arial", 12, FontStyle.Bold), new Point(0, 0), daysAndHoursColor, day.PictureBox.BackColor);
         int diff = 15;
         foreach (Event e in day.Events)
         {
             TextRenderer.DrawText(g, e.ToString(), new Font("Arial", 8), new Rectangle(0, diff, day.PictureBox.Image.Width, diff), DataModel.IsEventAccepted(e.Id) ? e.Type.Color.Color : notAcceptedEventColor, day.PictureBox.BackColor, TextFormatFlags.WordEllipsis);
             diff += 12;
         }
     }
 }
示例#6
0
        public override void ShowDays(CalendarModel.Day _selectedDay)
        {
            title.Text = $"{_selectedDay.MonthName} {_selectedDay.Year}";

            TableLayoutPanel panel = new TableLayoutPanel();

            View.SetDoubleBuffered(panel);
            panel.Dock        = DockStyle.Fill;
            panel.ColumnCount = 7;
            panel.RowCount    = (model as MonthModel).Days.Count;
            for (int i = 0; i < panel.ColumnCount; i++)
            {
                panel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100));
            }
            for (int i = 0; i < panel.RowCount; i++)
            {
                panel.RowStyles.Add(new RowStyle(SizeType.Percent, 100));
            }

            int j = 0;

            while ((model as MonthModel).Days[0][j].Number != 1)
            {
                j++;
            }
            for (int i = 0; i < (model as MonthModel).Days.Count; i++, j = 0)
            {
                for (; j < 7; j++)
                {
                    if ((model as MonthModel).Days[i][j].Month != _selectedDay.Month)
                    {
                        break;
                    }
                    this.ShowDay((model as MonthModel).Days[i][j]);
                    panel.Controls.Add(numberLabel, j, i);
                    if ((model as MonthModel).Days[i][j].DateEquals(_selectedDay))
                    {
                        base.SelectDay((model as MonthModel).Days[i][j]);
                    }
                }
            }
            if (bigPanel.Controls.Count >= 2)
            {
                bigPanel.Controls.RemoveAt(1);
            }
            bigPanel.Controls.Add(panel, 0, 1);
        }
示例#7
0
        public void Show(CalendarModel.Day day)
        {
            shownDay = day;
            TableLayoutPanel panel = new TableLayoutPanel();

            panel.Dock     = DockStyle.Fill;
            panel.RowCount = day.Events.Count + 2;
            for (int i = 0; i < panel.RowCount; i++)
            {
                panel.RowStyles.Add(new RowStyle(SizeType.AutoSize));
            }
            panel.RowStyles.Add(new RowStyle(SizeType.AutoSize));

            Label label = new Label();

            label.Dock   = DockStyle.Fill;
            label.Height = controlHeight;
            label.Text   = $"{day.Number} {day.MonthName} {day.Year}";
            panel.Controls.Add(label, 0, 0);

            for (int i = 0; i < day.Events.Count; i++)
            {
                Button button = new Button();
                button.Click    += new EventHandler(button_Click);
                button.Dock      = DockStyle.Fill;
                button.Height    = controlHeight;
                button.Text      = day.Events[i].ToString();
                button.ForeColor = DataModel.IsEventAccepted(day.Events[i].Id) ? day.Events[i].Type.Color.Color : notAcceptedEventColor;
                button.FlatStyle = FlatStyle.Flat;
                button.FlatAppearance.MouseOverBackColor = Color.Lavender;
                button.FlatAppearance.BorderSize         = 0;
                button.Tag = i;
                panel.Controls.Add(button, 0, i + 1);
            }

            if (calendar.DayEventsTableLayoutPanel.Controls.Count >= 2)
            {
                calendar.DayEventsTableLayoutPanel.Controls.RemoveAt(1);
            }
            calendar.DayEventsTableLayoutPanel.Controls.Add(panel, 0, 1);
            calendar.RightTabControl.SelectedIndex = 1;
        }
示例#8
0
 public override void SelectDay(CalendarModel.Day day)
 {
     if (selectedDay != null)
     {
         if (selectedDay.Month == (model as MonthModel).Days[1][0].Month)
         {
             selectedDay.PictureBox.BackColor = normalDaysBackgroundColor;
         }
         else
         {
             selectedDay.PictureBox.BackColor = daysFromDifferentMonthBackgroundColor;
         }
         selectedDay.PictureBox.Invalidate();
         this.ShowDay(selectedDay);
     }
     base.SelectDay(day);
     selectedDay.PictureBox.BackColor = selectedDayBackgroundColor;
     selectedDay.PictureBox.Invalidate();
     this.ShowDay(selectedDay);
 }
示例#9
0
        public override void ShowDays(CalendarModel.Day _selectedDay)
        {
            if (_selectedDay == null)
            {
                _selectedDay = selectedDay;
            }

            title.Text        = $"{(model as DayModel).Day.Number} {(model as DayModel).Day.MonthName} {(model as DayModel).Day.Year}";
            title.MouseClick += new MouseEventHandler(day_MouseClick);

            View.SetDoubleBuffered(panel);

            while (panel.Controls.Count > 0)
            {
                panel.Controls.RemoveAt(0);
            }
            panel.Controls.Add(hoursPictureBox, 0, 0);
            panel.Controls.Add((model as DayModel).Day.PictureBox, 1, 0);
            this.ShowDay((model as DayModel).Day);

            this.SelectDay(_selectedDay);
        }
示例#10
0
        public override void ShowDays(CalendarModel.Day _selectedDay)
        {
            if (_selectedDay == null)
            {
                _selectedDay = selectedDay;
            }
            title.Text = $"{_selectedDay.MonthName} {_selectedDay.Year}";

            TableLayoutPanel panel = new TableLayoutPanel();

            View.SetDoubleBuffered(panel);
            panel.Dock            = DockStyle.Fill;
            panel.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
            panel.ColumnCount     = 8;
            panel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 40));
            for (int i = 0; i < panel.ColumnCount - 1; i++)
            {
                panel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100));
            }
            panel.RowCount = (model as MonthModel).Days.Count + 1;
            panel.RowStyles.Add(new RowStyle(SizeType.Absolute, 50));
            for (int i = 0; i < panel.RowCount; i++)
            {
                panel.RowStyles.Add(new RowStyle(SizeType.Percent, 100));
            }

            for (int i = 0; i < (model as MonthModel).Days.Count; i++)
            {
                Label label = new Label();
                label.Dock      = DockStyle.Fill;
                label.TextAlign = ContentAlignment.TopCenter;
                label.Text      = (model as MonthModel).Days[i][6].WeekOfYear.ToString();
                label.Font      = new Font("Arial", 10, FontStyle.Bold);
                label.ForeColor = daysAndHoursColor;
                panel.Controls.Add(label, 0, i + 1);
            }

            for (int i = 0; i < 7; i++)
            {
                Label label = new Label();
                label.Dock      = DockStyle.Fill;
                label.TextAlign = ContentAlignment.MiddleCenter;
                label.Text      = $"{(model as MonthModel).Days[0][i].DayOfWeek}";
                label.Font      = new Font("Arial", 10, FontStyle.Bold);
                panel.Controls.Add(label, i + 1, 0);
            }

            if (bigPanel.Controls.Count >= 2)
            {
                bigPanel.Controls.RemoveAt(1);
            }
            bigPanel.Controls.Add(panel, 0, 1);

            for (int i = 0; i < (model as MonthModel).Days.Count; i++)
            {
                for (int j = 0; j < (model as MonthModel).Days[i].Length; j++)
                {
                    if ((model as MonthModel).Days[i][j].Month != (model as MonthModel).Days[1][0].Month)
                    {
                        (model as MonthModel).Days[i][j].PictureBox.BackColor = daysFromDifferentMonthBackgroundColor;
                    }
                    else
                    {
                        (model as MonthModel).Days[i][j].PictureBox.BackColor = normalDaysBackgroundColor;
                    }
                    panel.Controls.Add((model as MonthModel).Days[i][j].PictureBox, j + 1, i + 1);
                    this.ShowDay((model as MonthModel).Days[i][j]);
                    if ((model as MonthModel).Days[i][j].DateEquals(_selectedDay))
                    {
                        this.SelectDay((model as MonthModel).Days[i][j]);
                    }
                }
            }
        }
示例#11
0
 public virtual void SelectDay(CalendarModel.Day day)
 {
     selectedDay = day;
 }
示例#12
0
 public abstract void ShowDay(CalendarModel.Day day);
示例#13
0
 public abstract void ShowDays(CalendarModel.Day _selectedDay = null);
示例#14
0
 public virtual void Load(CalendarModel.Day _selectedDay = null)
 {
     model.GenerateDays(_selectedDay);
     model.GetEventsForDays();
     this.ShowDays(_selectedDay);
 }