Пример #1
0
 private void RenderCalDay(DailyView view)
 {
     for (int i = 0; i < view.ViewDays.Length; i++)
     {
         if (i > 0)
         {
             base.Output.Write(",");
         }
         SchedulingAreaVisualContainer schedulingAreaVisualContainer = view.ViewDays[i];
         base.Output.Write("new CalendarDay(");
         base.Output.Write(i.ToString(CultureInfo.InvariantCulture));
         base.Output.Write(", new Array(");
         int num = 0;
         for (int j = 0; j < view.RowFreeBusy[i].Length; j++)
         {
             if (j > 0)
             {
                 base.Output.Write(",");
             }
             BusyTypeWrapper busyTypeWrapper = view.RowFreeBusy[i][j];
             int             num2            = (int)busyTypeWrapper;
             if (num2 > num)
             {
                 num = num2;
             }
             base.Output.Write(num2);
         }
         base.Output.Write("),");
         base.Output.Write(num);
         int          minutesPerCell = (view.TimeStripMode == TimeStripMode.FifteenMinutes) ? 15 : 30;
         WorkingHours workingHours   = view.DataSource.WorkingHours;
         WorkingHours.WorkingPeriod[] workingHoursOnDay = workingHours.GetWorkingHoursOnDay(schedulingAreaVisualContainer.DateRange.Start);
         if (workingHoursOnDay.Length > 0)
         {
             ExDateTime date = schedulingAreaVisualContainer.DateRange.Start.Date;
             base.Output.Write(",");
             base.Output.Write(this.GetCellIndex(workingHoursOnDay[0].Start, minutesPerCell, date));
             base.Output.Write(",");
             base.Output.Write(this.GetCellIndex(workingHoursOnDay[0].End, minutesPerCell, date));
             if (workingHoursOnDay.Length > 1)
             {
                 base.Output.Write(",");
                 base.Output.Write(this.GetCellIndex(workingHoursOnDay[1].Start, minutesPerCell, date));
                 base.Output.Write(",");
                 base.Output.Write(this.GetCellIndex(workingHoursOnDay[1].End, minutesPerCell, date));
             }
         }
         base.Output.Write(")");
     }
 }
Пример #2
0
        private void RenderScheduleAreaVis(int iCalIdx, DailyView view)
        {
            bool flag = true;

            for (int i = 0; i < view.ViewDays.Length; i++)
            {
                SchedulingAreaVisualContainer schedulingAreaVisualContainer = view.ViewDays[i];
                for (int j = 0; j < schedulingAreaVisualContainer.Count; j++)
                {
                    SchedulingAreaVisual schedulingAreaVisual = (SchedulingAreaVisual)schedulingAreaVisualContainer[j];
                    if (!view.IsItemRemoved(schedulingAreaVisual.DataIndex))
                    {
                        if (!flag)
                        {
                            base.Output.Write(",");
                        }
                        flag = false;
                        base.Output.Write("new VisData(");
                        base.Output.Write(iCalIdx);
                        base.Output.Write(",");
                        int num = (base.ItemIndex != null) ? ((int)base.ItemIndex[schedulingAreaVisual.DataIndex]) : schedulingAreaVisual.DataIndex;
                        base.Output.Write(num);
                        base.Output.Write(",");
                        base.Output.Write(schedulingAreaVisual.Rect.X.ToString("0.####", CultureInfo.InvariantCulture));
                        base.Output.Write(",");
                        base.Output.Write(schedulingAreaVisual.Rect.Y.ToString("0.####", CultureInfo.InvariantCulture));
                        base.Output.Write(",");
                        base.Output.Write(schedulingAreaVisual.Rect.Width.ToString("0.####", CultureInfo.InvariantCulture));
                        base.Output.Write(",");
                        base.Output.Write(schedulingAreaVisual.Rect.Height.ToString("0.####", CultureInfo.InvariantCulture));
                        base.Output.Write(",");
                        base.Output.Write("0,0");
                        if (num == base.SelectedItemIndex)
                        {
                            base.Output.Write(",1,");
                        }
                        else
                        {
                            base.Output.Write(",0,");
                        }
                        base.Output.Write(i);
                        base.Output.Write(")");
                    }
                }
            }
        }
Пример #3
0
        // Token: 0x06000154 RID: 340 RVA: 0x0000B1EC File Offset: 0x000093EC
        private int[,] MapSchedulingAreaData(SchedulingAreaVisualContainer day, int totalNumberOfColumns)
        {
            int count = day.Count;

            int[,] visualPositionData = this.GetVisualPositionData(day, totalNumberOfColumns);
            int[,] array = new int[48, totalNumberOfColumns];
            for (int i = 0; i < count; i++)
            {
                int num = (visualPositionData[i, 1] >= 0) ? visualPositionData[i, 1] : 0;
                while (num < 48 && num < visualPositionData[i, 1] + visualPositionData[i, 3])
                {
                    for (int j = visualPositionData[i, 0]; j < visualPositionData[i, 0] + visualPositionData[i, 2]; j++)
                    {
                        array[num, j] = visualPositionData[i, 4];
                    }
                    num++;
                }
            }
            return(array);
        }
Пример #4
0
        // Token: 0x06000155 RID: 341 RVA: 0x0000B294 File Offset: 0x00009494
        private int[,] GetVisualPositionData(SchedulingAreaVisualContainer day, int totalNumberOfColumns)
        {
            int count = day.Count;

            int[,] array = new int[count, 5];
            for (int i = 0; i < count; i++)
            {
                SchedulingAreaVisual schedulingAreaVisual = (SchedulingAreaVisual)day[i];
                if (!base.IsItemRemoved(schedulingAreaVisual.DataIndex))
                {
                    array[i, 0] = (int)Math.Round(schedulingAreaVisual.Rect.X * (double)totalNumberOfColumns);
                    array[i, 1] = (int)Math.Floor(schedulingAreaVisual.Rect.Y);
                    array[i, 2] = (int)Math.Round(schedulingAreaVisual.Rect.Width * (double)totalNumberOfColumns);
                    array[i, 3] = ((schedulingAreaVisual.Rect.Height < 1.0) ? 1 : ((int)Math.Round(schedulingAreaVisual.Rect.Y + schedulingAreaVisual.Rect.Height - (double)array[i, 1])));
                    if (array[i, 1] + array[i, 3] <= 0)
                    {
                        array[i, 1] = 0;
                    }
                    array[i, 4] = schedulingAreaVisual.DataIndex + 1;
                }
            }
            return(array);
        }
Пример #5
0
        // Token: 0x0600014F RID: 335 RVA: 0x0000A3A0 File Offset: 0x000085A0
        public void Render(TextWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            SchedulingAreaVisualContainer schedulingAreaVisualContainer = base.ViewDays[0];

            this.totalNumberOfColumns = this.GetTotalNumberOfColumns(schedulingAreaVisualContainer, this.conflictsPerTimeSlot);
            this.CalculateStartAndEndTimes();
            this.ComputeDayFreeBusy();
            writer.Write("<table cellpadding=0 cellspacing=0 class=\"cdayvw\"><caption>");
            writer.Write(LocalizedStrings.GetHtmlEncoded(573876176));
            writer.Write("</caption>");
            string text = DateTimeUtilities.GetDaysFormat(this.UserContext.UserOptions.DateFormat);

            if (text == null)
            {
                text = "%d";
            }
            ExDateTime exDateTime  = schedulingAreaVisualContainer.DateRange.Start.IncrementDays(-1);
            ExDateTime exDateTime2 = schedulingAreaVisualContainer.DateRange.Start.IncrementDays(1);

            writer.Write("<tr><td rowspan=2 class=\"nv\" align=\"center\"><a href=\"#\" title=\"");
            writer.Write(LocalizedStrings.GetHtmlEncoded(790373277));
            writer.Write("\" onClick=\"return onClkD({0},{1},{2});\"><img src=\"", exDateTime.Year, exDateTime.Month, exDateTime.Day);
            this.UserContext.RenderThemeFileUrl(writer, ThemeFileId.PreviousPage);
            writer.Write("\" alt=\"");
            writer.Write(LocalizedStrings.GetHtmlEncoded(790373277));
            writer.Write("\"></a><a href=\"#\" title=\"");
            writer.Write(LocalizedStrings.GetHtmlEncoded(-943287977));
            writer.Write("\" onClick=\"return onClkD({0},{1},{2});\"><img src=\"", exDateTime2.Year, exDateTime2.Month, exDateTime2.Day);
            this.UserContext.RenderThemeFileUrl(writer, ThemeFileId.NextPage);
            writer.Write("\" alt=\"");
            writer.Write(LocalizedStrings.GetHtmlEncoded(-943287977));
            writer.Write("\"></a></td><td colspan=");
            writer.Write(this.totalNumberOfColumns);
            writer.Write(" class=\"cvhd");
            ExDateTime localTime = DateTimeUtilities.GetLocalTime();

            if (schedulingAreaVisualContainer.DateRange.Start.Year == localTime.Year && schedulingAreaVisualContainer.DateRange.Start.Month == localTime.Month && schedulingAreaVisualContainer.DateRange.Start.Day == localTime.Day)
            {
                writer.Write(" cd");
            }
            writer.Write("\" align=\"center\"><span>");
            writer.Write(Utilities.HtmlEncode(schedulingAreaVisualContainer.DateRange.Start.ToString(text)));
            writer.Write("</span>");
            writer.Write(Utilities.HtmlEncode(schedulingAreaVisualContainer.DateRange.Start.ToString("dddd")));
            writer.Write("</td></tr>");
            string freeBusyStylePrefix = DailyView.GetFreeBusyStylePrefix(this.dayBusyType);

            writer.Write("<tr><td colspan={0} class=\"{1}e\">", this.totalNumberOfColumns, freeBusyStylePrefix);
            if (base.EventArea.Count > 0)
            {
                this.RenderEventArea(writer);
            }
            else
            {
                writer.Write("&nbsp;");
            }
            writer.Write("</td></tr>");
            this.RenderSchedulingArea(writer, schedulingAreaVisualContainer);
            writer.Write("</table>");
        }
Пример #6
0
        // Token: 0x06000156 RID: 342 RVA: 0x0000B3A8 File Offset: 0x000095A8
        private int GetTotalNumberOfColumns(SchedulingAreaVisualContainer day, int[] conflictsPerTimeSlot)
        {
            int count = day.Count;

            for (int i = 0; i < count; i++)
            {
                SchedulingAreaVisual schedulingAreaVisual = (SchedulingAreaVisual)day[i];
                int num  = (int)(1.0 / schedulingAreaVisual.Rect.Width);
                int num2 = 0;
                while ((double)num2 < schedulingAreaVisual.AdjustedRect.Height)
                {
                    int num3 = (int)schedulingAreaVisual.AdjustedRect.Y + num2;
                    if (num3 >= 0 && num3 < 48 && conflictsPerTimeSlot[num3] < this.MaxConflictingItems && num > conflictsPerTimeSlot[num3])
                    {
                        conflictsPerTimeSlot[num3] = num;
                    }
                    num2++;
                }
            }
            bool flag  = false;
            bool flag2 = false;
            bool flag3 = false;
            bool flag4 = false;
            bool flag5 = false;
            bool flag6 = false;

            for (int j = 0; j < 48; j++)
            {
                if (!flag && conflictsPerTimeSlot[j] == 2)
                {
                    flag = true;
                }
                if (!flag2 && conflictsPerTimeSlot[j] == 3)
                {
                    flag2 = true;
                }
                if (!flag3 && conflictsPerTimeSlot[j] == 4)
                {
                    flag3 = true;
                }
                if (!flag4 && conflictsPerTimeSlot[j] == 5)
                {
                    flag4 = true;
                }
                if (!flag5 && conflictsPerTimeSlot[j] == 6)
                {
                    flag5 = true;
                }
                if (!flag6 && conflictsPerTimeSlot[j] >= 7)
                {
                    flag6 = true;
                }
            }
            if (flag5)
            {
                if (flag3)
                {
                    flag3 = false;
                    flag  = true;
                }
                else
                {
                    flag = false;
                }
                flag2 = false;
            }
            if (flag3)
            {
                flag = false;
            }
            int num4 = 1;

            if (flag)
            {
                num4 *= 2;
            }
            if (flag2)
            {
                num4 *= 3;
            }
            if (flag3)
            {
                num4 *= 4;
            }
            if (flag4)
            {
                num4 *= 5;
            }
            if (flag5)
            {
                num4 *= 6;
            }
            if (flag6)
            {
                num4 *= 7;
            }
            return(num4);
        }
Пример #7
0
        // Token: 0x06000153 RID: 339 RVA: 0x0000AA30 File Offset: 0x00008C30
        private void RenderSchedulingArea(TextWriter writer, SchedulingAreaVisualContainer day)
        {
            int[,] array = this.MapSchedulingAreaData(day, this.totalNumberOfColumns);
            string text = DateTimeUtilities.GetHoursFormat(this.UserContext.UserOptions.TimeFormat);
            string arg  = "00";

            if (text == null)
            {
                text = "%h";
            }
            int num  = this.renderDayStartTime / 30;
            int num2 = this.renderDayEndTime / 30;
            int num3 = this.userDayStartTime / 30;
            int num4 = this.userDayEndTime / 30;
            ICalendarDataSource dataSource = base.CalendarAdapter.DataSource;
            ExDateTime          exDateTime = new ExDateTime(this.UserContext.TimeZone, 2000, 1, 1, num / 2, 0, 0);

            for (int i = num; i < num2; i++)
            {
                writer.Write("<tr><td class=\"");
                if (i == num)
                {
                    writer.Write("frst ");
                }
                if (i % 2 == 0)
                {
                    if (text[1] == 'h')
                    {
                        if (exDateTime.Hour >= 0 && exDateTime.Hour < 12)
                        {
                            arg = Utilities.HtmlEncode(Culture.AMDesignator);
                        }
                        else if (exDateTime.Hour >= 12)
                        {
                            arg = Utilities.HtmlEncode(Culture.PMDesignator);
                        }
                    }
                    writer.Write("tm\" align=\"right\">{0}&nbsp;<span>{1}</span>", exDateTime.ToString(text), arg);
                    exDateTime = exDateTime.AddHours(1.0);
                }
                else
                {
                    writer.Write("tme\">&nbsp;");
                }
                writer.Write("</td>");
                for (int j = 0; j < this.totalNumberOfColumns; j++)
                {
                    if (array[i, j] >= 0 && array[i, j] >= 0)
                    {
                        int num5 = j + 1;
                        int num6 = 1;
                        while (num5 < this.totalNumberOfColumns && array[i, num5] == array[i, j])
                        {
                            array[i, num5] = -1;
                            num5++;
                        }
                        int num7 = num5 - j;
                        if (array[i, j] != 0)
                        {
                            num6 = 1;
                            int num8 = i + 1;
                            while (num8 < num2 && array[num8, j] == array[i, j])
                            {
                                num6++;
                                for (int k = 0; k < num7; k++)
                                {
                                    array[num8, j + k] = -1;
                                }
                                num8++;
                            }
                        }
                        string freeBusyStylePrefix = DailyView.GetFreeBusyStylePrefix(base.RowFreeBusy[0][i]);
                        writer.Write("<td class=\"");
                        if (array[i, j] == 0)
                        {
                            writer.Write(freeBusyStylePrefix);
                            if (i % 2 == 0)
                            {
                                writer.Write("d ");
                            }
                            else
                            {
                                writer.Write("l ");
                            }
                            writer.Write(freeBusyStylePrefix);
                            if (num3 <= num4 && i >= num3 && i < num4)
                            {
                                writer.Write("w");
                            }
                            else if (num3 > num4 && (i >= num3 || i < num4))
                            {
                                writer.Write("w");
                            }
                            else
                            {
                                writer.Write("n");
                            }
                        }
                        else if (array[i, j] > 0)
                        {
                            writer.Write("v");
                            int        index     = array[i, j] - 1;
                            ExDateTime startTime = dataSource.GetStartTime(index);
                            ExDateTime endTime   = dataSource.GetEndTime(index);
                            if (startTime.Date < day.DateRange.Start.Date)
                            {
                                writer.Write(" ntp");
                            }
                            else if (endTime.Date > day.DateRange.Start.Date)
                            {
                                writer.Write(" nbtm");
                            }
                        }
                        writer.Write("\"");
                        if (num6 > 1)
                        {
                            writer.Write(" rowspan={0}", num6);
                        }
                        if (num7 > 1)
                        {
                            writer.Write(" colspan={0}", num7);
                        }
                        if (num7 < this.totalNumberOfColumns)
                        {
                            writer.Write(" width=\"{0:f}%\"", num7 * 100 / this.totalNumberOfColumns);
                        }
                        if (array[i, j] > 0)
                        {
                            writer.Write(" nowrap");
                        }
                        writer.Write(">");
                        if (array[i, j] == 0)
                        {
                            writer.Write("&nbsp;</td>");
                        }
                        else if (array[i, j] > 0)
                        {
                            int                     index2          = array[i, j] - 1;
                            ExDateTime              startTime2      = dataSource.GetStartTime(index2);
                            ExDateTime              endTime2        = dataSource.GetEndTime(index2);
                            string                  subject         = dataSource.GetSubject(index2);
                            string                  location        = dataSource.GetLocation(index2);
                            OwaStoreObjectId        itemId          = dataSource.GetItemId(index2);
                            bool                    isPrivate       = dataSource.IsPrivate(index2);
                            CalendarItemTypeWrapper wrappedItemType = dataSource.GetWrappedItemType(index2);
                            bool                    flag            = dataSource.IsMeeting(index2);
                            string                  text2           = string.Empty;
                            if (flag)
                            {
                                text2 = dataSource.GetOrganizerDisplayName(index2);
                            }
                            bool hasAttachment = dataSource.HasAttachment(index2);
                            int  num9          = 64;
                            int  num10         = 3;
                            this.ComputeMaxCharactersAndIcons(num6, num7, out num9, out num10);
                            writer.Write("<table cellspacing=0 cellpadding=0 class=\"vis\"><tr>");
                            BusyTypeWrapper wrappedBusyType = dataSource.GetWrappedBusyType(index2);
                            if (wrappedBusyType != BusyTypeWrapper.Busy)
                            {
                                writer.Write("<td class=\"");
                                switch (wrappedBusyType)
                                {
                                case BusyTypeWrapper.Free:
                                    writer.Write("f\"><img src=\"");
                                    this.UserContext.RenderThemeFileUrl(writer, ThemeFileId.Clear);
                                    writer.Write("\" alt=\"\"></td>");
                                    break;

                                case BusyTypeWrapper.Tentative:
                                    writer.Write("t\"></td>");
                                    break;

                                case BusyTypeWrapper.OOF:
                                    writer.Write("o\"></td>");
                                    break;

                                case BusyTypeWrapper.Unknown:
                                    writer.Write("u\"></td>");
                                    break;
                                }
                            }
                            writer.Write("<td class=\"txt\">");
                            switch (num6)
                            {
                            case 1:
                                this.RenderSubject(writer, subject, num9, startTime2, endTime2, location, false, flag, itemId);
                                if (!string.IsNullOrEmpty(subject))
                                {
                                    num9 -= subject.Length;
                                }
                                else if (flag)
                                {
                                    num9 -= LocalizedStrings.GetNonEncoded(-1500721828).Length;
                                }
                                else
                                {
                                    num9 -= LocalizedStrings.GetNonEncoded(-1178892512).Length;
                                }
                                if (!string.IsNullOrEmpty(location) && (location.Length + 2 <= num9 || num9 >= 5))
                                {
                                    writer.Write("; ");
                                    Utilities.CropAndRenderText(writer, location, num9 - 2);
                                }
                                break;

                            case 2:
                                this.RenderSubject(writer, subject, num9, startTime2, endTime2, location, false, flag, itemId);
                                if (!string.IsNullOrEmpty(location))
                                {
                                    writer.Write("<br>");
                                    Utilities.CropAndRenderText(writer, location, num9);
                                    num9 -= location.Length;
                                }
                                if (!string.IsNullOrEmpty(text2) && flag && num9 > 3)
                                {
                                    writer.Write("; ");
                                    Utilities.CropAndRenderText(writer, text2, num9);
                                }
                                break;

                            default:
                                this.RenderSubject(writer, subject, num9, startTime2, endTime2, location, false, flag, itemId);
                                if (!string.IsNullOrEmpty(location))
                                {
                                    writer.Write("<br>");
                                    Utilities.CropAndRenderText(writer, location, num9);
                                }
                                if (!string.IsNullOrEmpty(text2) && flag)
                                {
                                    writer.Write("<br>");
                                    Utilities.CropAndRenderText(writer, text2, num9);
                                }
                                break;
                            }
                            writer.Write("</td>");
                            if (num10 > 0)
                            {
                                writer.Write("<td class=\"icn\" align=\"right\">");
                                this.RenderIcons(writer, num10, isPrivate, wrappedItemType, hasAttachment);
                                writer.Write("</td>");
                            }
                            writer.Write("</tr></table></td>");
                        }
                    }
                }
                writer.Write("</tr>");
            }
            int    num11 = base.RowFreeBusy[0].Length - 1;
            string freeBusyStylePrefix2 = DailyView.GetFreeBusyStylePrefix(base.RowFreeBusy[0][num11]);

            writer.Write("<tr><td class=\"tm\"><img src=\"");
            this.UserContext.RenderThemeFileUrl(writer, ThemeFileId.Clear);
            writer.Write("\" alt=\"\"></td><td colspan=\"{0}\" class=\"{1}d {1}n\"><img src=\"", this.totalNumberOfColumns, freeBusyStylePrefix2);
            this.UserContext.RenderThemeFileUrl(writer, ThemeFileId.Clear);
            writer.Write("\" alt=\"\"></td></tr>");
            writer.Write("<tr><td class=\"tme h100\"><img src=\"");
            this.UserContext.RenderThemeFileUrl(writer, ThemeFileId.Clear);
            writer.Write("\" alt=\"\"></td><td colspan=\"{0}\" class=\"{1}n\"></td></tr>", this.totalNumberOfColumns, freeBusyStylePrefix2);
        }