Example #1
0
        /// <summary>
        /// Processes VTimeZone parts (DayLight, Standard)
        /// </summary>
        /// <param name="zone"></param>
        /// <param name="tkn"></param>
        private void ProcessZonePart(CalendarTimeZone zone, ComponentToken tkn)
        {
            bool isDtStartValue = false;

            TimeZonePart part = new TimeZonePart();

            CalendarEntry entry = GetNextEntry();

            while (entry != null)
            {
                switch ((PropertyToken) GetToken(_properties, entry.Id))
                {
                    case PropertyToken.DtStart:
                        part.StartDate = ProcessDate(entry, ref isDtStartValue);
                        break;

                    case PropertyToken.RDate:
                        part.RecurDate = ProcessRDate(entry, part.RecurDate);
                        break;

                    case PropertyToken.RRule:
                        part.RecurRule = ProcessRRule(entry);
                        break;

                    case PropertyToken.TzOffsetTo:
                        part.OffsetTo = ProcessTzOffset(entry);
                        break;

                    case PropertyToken.End:
                        ProcessZonePartEnd(entry, zone, part, tkn);
                        return;
                }

                entry = GetNextEntry();
            }

            ReportError(entry, "Expected \"END:" + _components[(int)tkn].Text.ToUpper() + "\"");
        }
Example #2
0
        private void ProcessZonePartEnd(CalendarEntry entry,
            CalendarTimeZone zone, TimeZonePart part, ComponentToken tkn)
        {
            if ((ComponentToken)GetToken(_components, entry.Value) != tkn)
                ReportError(entry, "Expected \"END:" + _components[(int)tkn].Text.ToUpper() + "\"");

            if (zone.Part == null)
                zone.Part = new List<TimeZonePart>();

            zone.Part.Add(part);
        }
Example #3
0
        /// <summary>
        /// GetLastPartDate
        /// </summary>
        /// <param name="part"></param>
        /// <param name="date"></param>
        /// <returns></returns>
        private DateTime GetLastPartDate(TimeZonePart part, DateTime date)
        {
            DateTime pdate = part.StartDate;

            if (part.Appc == null)
            {
                CalendarModel model = new CalendarModel();
                Appointment app = new Appointment();

                app.StartTime = part.StartDate.Date;
                app.EndTime = app.StartTime;

                VEventData evData = new VEventData();

                evData.RecurRule = part.RecurRule;

                ProcessEventEndEx(model, null, app, evData);

                part.Appc = new AppointmentSubsetCollection(model, part.StartDate, date);
            }

            if (part.Appc.Count > 0)
            {
                foreach (Appointment app in part.Appc)
                {
                    if (app.StartTime > pdate && app.StartTime <= date)
                        pdate = app.StartTime;
                }
            }

            return (pdate);
        }