예제 #1
0
        public void Move(DateItem value, int index)
        {
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }

            if (index < 0)
            {
                index = 0;
            }
            else if (index > this.Count)
            {
                index = this.Count;
            }

            if (!this.Contains(value) || this.IndexOf(value) == index)
            {
                return;
            }

            this.List.Remove(value);

            if (index > this.Count)
            {
                this.List.Add(value);
            }
            else
            {
                this.List.Insert(index, value);
            }
        }
예제 #2
0
        public void Remove(DateItem value)
        {
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }

            this.List.Remove(value);
        }
예제 #3
0
        public bool Contains(DateItem dateItem)
        {
            if (dateItem == null)
            {
                throw new ArgumentNullException("dateItem");
            }

            return(this.IndexOf(dateItem) != -1);
        }
예제 #4
0
 public RoomRateItem(DateItem item)
 {
     this.Price            = 0;
     this._priceTitle      = "预订价:";
     this._commissionTitle = "佣金:";
     this._serviceFeeTitle = "服务费:";
     this.Commssion        = 0;
     this.CommssionPercent = 0;
     this.RoomControl      = ControlHelper.NA;
     this.DateItem         = item;
 }
예제 #5
0
        protected virtual ImageList GetImageList(object component)
        {
            DateItem item = component as DateItem;

            if (item != null)
            {
                return(item.GetImageList());
            }

            return(null);
        }
예제 #6
0
        public DateItem[] AddInfo(DateItem dt, DateItem[] old)
        {
            int l = old.Length;
            int i;

            DateItem[] n = new DateItem[l + 1];
            n.Initialize();
            for (i = 0; i < l; i++)
            {
                n[i] = old[i];
            }
            n[i] = dt;
            return(n);
        }
예제 #7
0
        public int IndexOf(DateItem dateItem)
        {
            if (dateItem == null)
            {
                throw new ArgumentNullException("dateItem");
            }

            for (int i = 0; i < this.Count; i++)
            {
                if (this[i] == dateItem)
                {
                    return(i);
                }
            }

            return(-1);
        }
예제 #8
0
        public void Add(DateItem value)
        {
            int index;

            if (value == null)
            {
                throw new ArgumentNullException("value");
            }

            if ((MonthCalendar)value.Calendar == null)
            {
                value.Calendar = this.owner;
            }

            index = this.IndexOf(value);
            if (index == -1)
            {
                this.List.Add(value);
            }
            else
            {
                this.List[index] = value;
            }
        }
예제 #9
0
 public void MoveToBottom(DateItem value)
 {
     this.Move(value, this.Count);
 }
예제 #10
0
 public void MoveToTop(DateItem value)
 {
     this.Move(value, 0);
 }
예제 #11
0
        public DateItem[] DateInfo(DateTime dt)
        {
            DateItem[] ret = new DateItem[0];
            ret.Initialize();
            for (int i = 0; i < this.Count; i++)
            {
                if (((this[i].Date <= dt) && (this[i].Range >= dt)))
                {
                    switch (this[i].Pattern)
                    {
                    case mcDayInfoRecurrence.None:
                    {
                        if (this[i].Date.ToShortDateString() == dt.ToShortDateString())
                        {
                            this[i].Index = i;
                            ret           = AddInfo(this[i], ret);
                        }
                        break;
                    }

                    case mcDayInfoRecurrence.Daily:
                    {
                        this[i].Index = i;
                        ret           = AddInfo(this[i], ret);
                        break;
                    }

                    case mcDayInfoRecurrence.Weekly:
                    {
                        if ((this[i].Date.DayOfWeek == dt.DayOfWeek))
                        {
                            this[i].Index = i;
                            ret           = AddInfo(this[i], ret);
                        }
                        break;
                    }

                    case mcDayInfoRecurrence.Monthly:
                    {
                        if ((this[i].Date.Day == dt.Day))
                        {
                            this[i].Index = i;
                            ret           = AddInfo(this[i], ret);
                        }
                        break;
                    }

                    case mcDayInfoRecurrence.Yearly:
                    {
                        if (this[i].Date.ToShortDateString().Substring(5) ==
                            dt.ToShortDateString().Substring(5))
                        {
                            this[i].Index = i;
                            ret           = AddInfo(this[i], ret);
                        }
                        break;
                    }
                    }
                }
            }
            return(ret);
        }
예제 #12
0
        internal void Draw(Graphics e, DateItem queryInfo)
        {
            StringFormat   dateAlign    = new StringFormat();
            StringFormat   textAlign    = new StringFormat();
            Font           boldFont     = new Font(m_month.DateFont.Name, m_month.DateFont.Size, m_month.DateFont.Style | FontStyle.Bold);
            Color          bgColor1     = m_month.Colors.Days.BackColor1;
            Color          bgColor2     = m_month.Colors.Days.BackColor2;
            mcGradientMode gradientMode = m_month.Colors.Days.GradientMode;
            Color          textColor    = m_month.Colors.Days.Text;
            Color          dateColor    = m_month.Colors.Days.Date;
            Brush          dateBrush    = new SolidBrush(dateColor);
            Brush          textBrush    = new SolidBrush(textColor);
            Brush          bgBrush      = new SolidBrush(bgColor1);

            string dateString;

            m_imageRect = new Rectangle();
            string text    = "";
            bool   drawDay = false;
            bool   enabled = true;
            Image  bgImage = null;

            int i = -1;

            bool boldedDate = false;

            DateItem[] info;
            m_dayImage = null;

            dateAlign = GetStringAlignment(m_month.DateAlign);
            textAlign = GetStringAlignment(m_month.TextAlign);

            if ((m_month.SelectedMonth.Month == m_date.Month) || (m_month.Calendar.ShowTrailingDates))
            {
                drawDay = true;
            }

            if (((m_date.DayOfWeek == DayOfWeek.Saturday) && (m_month.Colors.Weekend.Saturday)) ||
                ((m_date.DayOfWeek == DayOfWeek.Sunday) && (m_month.Colors.Weekend.Sunday)))
            {
                bgColor1     = m_month.Colors.Weekend.BackColor1;
                bgColor2     = m_month.Colors.Weekend.BackColor2;
                dateColor    = m_month.Colors.Weekend.Date;
                textColor    = m_month.Colors.Weekend.Text;
                gradientMode = m_month.Colors.Weekend.GradientMode;
            }

            if (m_month.SelectedMonth.Month != m_date.Month)
            {
                bgColor1     = m_month.Colors.Trailing.BackColor1;
                bgColor2     = m_month.Colors.Trailing.BackColor2;
                gradientMode = m_month.Colors.Trailing.GradientMode;
                dateColor    = m_month.Colors.Trailing.Date;
                textColor    = m_month.Colors.Trailing.Text;
            }

            // Check if formatting should be applied
            if ((m_month.FormatTrailing) || (m_month.SelectedMonth.Month == m_date.Month))
            {
                // check of there is formatting for this day
                if (queryInfo != null)
                {
                    info    = new DateItem[1];
                    info[0] = queryInfo;
                }
                else
                {
                    info = m_calendar.GetDateInfo(this.Date);
                }
                if (info.Length > 0)
                {
                    i = 0;
                }
                // go through the available dateitems
                while ((i < info.Length) && (drawDay))
                {
                    if (info.Length > 0)
                    {
                        DateItem dateInfo = info[i];

                        if (dateInfo.BackColor1 != Color.Empty)
                        {
                            bgColor1 = dateInfo.BackColor1;
                        }
                        if (dateInfo.BackColor2 != Color.Empty)
                        {
                            bgColor2 = dateInfo.BackColor2;
                        }
                        gradientMode = dateInfo.GradientMode;
                        if (dateInfo.DateColor != Color.Empty)
                        {
                            dateColor = dateInfo.DateColor;
                        }
                        if (dateInfo.TextColor != Color.Empty)
                        {
                            textColor = dateInfo.TextColor;
                        }
                        text = dateInfo.Text;

                        if (dateInfo.Weekend)
                        {
                            bgColor1     = m_month.Colors.Weekend.BackColor1;
                            bgColor2     = m_month.Colors.Weekend.BackColor2;
                            gradientMode = m_month.Colors.Weekend.GradientMode;
                            dateColor    = m_month.Colors.Weekend.Date;
                            textColor    = m_month.Colors.Weekend.Text;
                        }
                        boldedDate = dateInfo.BoldedDate;
                        enabled    = dateInfo.Enabled;
                        if (!dateInfo.Enabled)
                        {
                            bgColor1     = m_month.Colors.Disabled.BackColor1;
                            bgColor2     = m_month.Colors.Disabled.BackColor2;
                            gradientMode = m_month.Colors.Disabled.GradientMode;
                            dateColor    = m_month.Colors.Disabled.Date;
                            textColor    = m_month.Colors.Disabled.Text;
                        }

                        m_dayImage = dateInfo.Image;

                        if (m_dayImage != null)
                        {
                            m_imageRect = ImageRect(m_month.ImageAlign);
                        }

                        bgImage = dateInfo.BackgroundImage;
                    }

                    if (m_state == mcDayState.Selected)
                    {
                        dateColor = m_month.Colors.Selected.Date;
                        textColor = m_month.Colors.Selected.Text;
                    }
                    if ((m_state == mcDayState.Focus) && (m_month.Calendar.ShowFocus))
                    {
                        dateColor = m_month.Colors.Focus.Date;
                        textColor = m_month.Colors.Focus.Text;
                    }


                    if (bgImage != null)
                    {
                        e.DrawImage(bgImage, m_rect);
                    }
                    else
                    {
                        if (gradientMode == mcGradientMode.None)
                        {
                            if (bgColor1 != Color.Transparent)
                            {
                                bgBrush = new SolidBrush(Color.FromArgb(m_month.Transparency.Background, bgColor1));
                                e.FillRectangle(bgBrush, m_rect);
                            }
                        }
                        else
                        {
                            m_calendar.DrawGradient(e, Rectangle, bgColor1, bgColor2, gradientMode);
                        }
                    }


                    ControlPaint.DrawBorder(e, m_rect, m_month.Colors.Days.Border, m_month.BorderStyles.Normal);
                    if (m_dayImage != null)
                    {
                        if (enabled)
                        {
                            e.DrawImageUnscaled(m_dayImage, m_imageRect);
                        }
                        else
                        {
                            ControlPaint.DrawImageDisabled(e, m_dayImage, m_imageRect.X, m_imageRect.Y, m_month.Colors.Disabled.BackColor1);
                        }
                    }

                    // Check if we should append month name to date
                    if ((m_month.ShowMonthInDay) &&
                        ((m_date.AddDays(-1).Month != m_date.Month) ||
                         (m_date.AddDays(1).Month != m_date.Month)))
                    {
                        dateString = m_date.Day.ToString() + " " + m_calendar.m_dateTimeFormat.GetMonthName(m_date.Month);
                    }
                    else
                    {
                        dateString = m_date.Day.ToString();
                    }

                    if (dateColor != Color.Transparent)
                    {
                        dateBrush = new SolidBrush(Color.FromArgb(m_month.Transparency.Text, dateColor));
                        CharacterRange[] characterRanges = { new CharacterRange(0, dateString.Length) };
                        dateAlign.SetMeasurableCharacterRanges(characterRanges);
                        m_dateRgn = new Region[1];
                        // Should date be bolded ?
                        if (!boldedDate)
                        {
                            e.DrawString(dateString, m_month.DateFont, dateBrush, m_rect, dateAlign);
                            m_dateRgn = e.MeasureCharacterRanges(dateString, m_month.DateFont, m_rect, dateAlign);
                        }
                        else
                        {
                            e.DrawString(dateString, boldFont, dateBrush, m_rect, dateAlign);
                            m_dateRgn = e.MeasureCharacterRanges(dateString, boldFont, m_rect, dateAlign);
                        }
                    }
                    if ((text.Length > 0) && (textColor != Color.Transparent))
                    {
                        textBrush = new SolidBrush(Color.FromArgb(m_month.Transparency.Text, textColor));
                        CharacterRange[] characterRanges = { new CharacterRange(0, text.Length) };
                        textAlign.SetMeasurableCharacterRanges(characterRanges);
                        m_textRgn = new Region[1];
                        e.DrawString(text, m_month.TextFont, textBrush, m_rect, textAlign);
                        m_textRgn = e.MeasureCharacterRanges(text, m_month.TextFont, m_rect, textAlign);
                    }
                    i++;
                }
            }

            dateBrush.Dispose();
            bgBrush.Dispose();
            textBrush.Dispose();
            boldFont.Dispose();
            dateAlign.Dispose();
            textAlign.Dispose();
        }