示例#1
0
        public void Deserialize(System.IO.TextReader rdr, Serializer serializer)
        {
            string name, value;
            var    parameters = new System.Collections.Specialized.NameValueCollection();

            while (rdr.Property(out name, out value, parameters) && !string.IsNullOrEmpty(name))
            {
                switch (name)
                {
                case "BEGIN":
                    var detail = serializer.GetService <TimeZoneDetail>();
                    detail.Type     = value;
                    detail.Calendar = Calendar;
                    detail.Deserialize(rdr, serializer);
                    Add(detail);
                    break;

                case "END":
                    if (value == "VTIMEZONE")
                    {
                        return;
                    }
                    break;
                }
            }
        }
示例#2
0
            public void Deserialize(System.IO.TextReader rdr, Serializer serializer)
            {
                string name, value;
                var    parameters = new System.Collections.Specialized.NameValueCollection();

                while (rdr.Property(out name, out value, parameters) && !string.IsNullOrEmpty(name))
                {
                    switch (name.ToUpper())
                    {
                    case "TZID": ID = value; break;

                    case "TZNAME": Name = value; break;

                    case "DTSTART": Start = value.ToDateTime(); break;

                    case "RRULE":
                        var rule = serializer.GetService <Recurrence>();
                        rule.Deserialize(value, parameters);
                        Recurrences.Add(rule);
                        break;

                    case "TZOFFSETFROM": OffsetFrom = value.ToOffset(); break;

                    case "TZOFFSETTO": OffsetTo = value.ToOffset(); break;

                    case "END": return;
                    }
                }
            }
示例#3
0
        public void Deserialize(System.IO.TextReader rdr, Serializer serializer)
        {
            string name, value;
            var    parameters = new System.Collections.Specialized.NameValueCollection();

            while (rdr.Property(out name, out value, parameters) && !string.IsNullOrEmpty(name))
            {
                switch (name)
                {
                case "ACTION": Action = value; break;

                case "DESCRIPTION": Description = value; break;

                case "TRIGGER": Trigger = serializer.GetService <Trigger>(); Trigger.Deserialize(value, parameters); break;
                }
            }
        }
示例#4
0
        public void Deserialize(System.IO.TextReader rdr, Serializer serializer)
        {
            string name, value;
            var    parameters = new System.Collections.Specialized.NameValueCollection();

            while (rdr.Property(out name, out value, parameters) && !string.IsNullOrEmpty(name))
            {
                switch (name.ToUpper())
                {
                case "UID": UID = value; break;

                case "ORGANIZER":
                    Organizer = new Contact();
                    Organizer.Deserialize(value, parameters);
                    break;

                case "SEQUENCE": Sequence = value.ToInt(); break;

                case "LAST-MODIFIED": LastModified = value.ToDateTime(); break;

                case "DTSTART": LastModified = value.ToDateTime(); break;

                case "DTEND": LastModified = value.ToDateTime(); break;

                case "DTSTAMP": DTSTAMP = value.ToDateTime(); break;

                case "FREEBUSY":
                    var parts = value.Split('/');
                    Details.Add(new DateTimeRange
                    {
                        From = parts.FirstOrDefault().ToDateTime(),
                        To   = parts.ElementAtOrDefault(1).ToDateTime()
                    });
                    break;

                case "END": return;

                default:
                    Properties.Add(Tuple.Create(name, value, parameters));
                    break;
                }
            }
        }
示例#5
0
        public void Deserialize(System.IO.TextReader rdr, Serializer serializer)
        {
            string name, value;
            var    parameters = new XNameValueCollection();

            while (rdr.Property(out name, out value, parameters) && !string.IsNullOrEmpty(name))
            {
                switch (name.ToUpper())
                {
                case "BEGIN":
                    if (value == "VCALENDAR")
                    {
                        var e = serializer.GetService <Calendar>();
                        e.Deserialize(rdr, serializer);
                        this.Add(e);
                    }
                    break;
                }
            }
        }
示例#6
0
        public void Deserialize(System.IO.TextReader rdr, Serializer serializer)
        {
            string name, value;
            var    parameters = new System.Collections.Specialized.NameValueCollection();

            while (rdr.Property(out name, out value, parameters) && !string.IsNullOrEmpty(name))
            {
                switch (name.ToUpper())
                {
                case "UID": UID = value; break;

                case "DTSTAMP": DTSTAMP = value.ToDateTime(); break;

                case "DTSTART": Start = value.ToDateTime(); break;

                case "DUE": Due = value.ToDateTime(); break;

                case "SUMMARY": Summary = value; break;

                case "CLASS": Class = value.ToEnum <Classes>(); break;

                case "CATEGORIES": Categories = value.SplitEscaped().ToList(); break;

                case "PRIORITY": Priority = value.ToInt(); break;

                case "STATUS": Status = value.ToEnum <Statuses>(); break;

                case "LAST-MODIFIED": LastModified = value.ToDateTime(); break;

                case "COMPLETED": Completed = value.ToDateTime(); break;

                case "SEQUENCE": Sequence = value.ToInt(); break;

                case "END": return;

                default:
                    Properties.Add(Tuple.Create(name, value, parameters));
                    break;
                }
            }
        }
示例#7
0
        public void Deserialize(System.IO.TextReader rdr, Serializer serializer)
        {
            string name, value;
            var    parameters = new System.Collections.Specialized.NameValueCollection();

            while (rdr.Property(out name, out value, parameters) && !string.IsNullOrEmpty(name))
            {
                switch (name.ToUpper())
                {
                case "CLASS": Class = value.ToEnum <Classes>(); break;

                case "STATUS": Status = value.ToEnum <Statuses>(); break;

                case "UID": UID = value; break;

                case "ORGANIZER":
                    Organizer = new Contact();
                    Organizer.Deserialize(value, parameters);
                    break;

                case "CATEGORIES":
                    Categories = value.SplitEscaped().ToList();
                    break;

                case "DESCRIPTION": Description = value; break;

                case "SEQUENCE": Sequence = value.ToInt(); break;

                case "LAST-MODIFIED": LastModified = value.ToDateTime(); break;

                case "DTSTAMP": _dtstamp = value.ToDateTime(); break;

                case "END": return;

                default:
                    Properties.Add(Tuple.Create(name, value, parameters));
                    break;
                }
            }
        }
示例#8
0
        public void Deserialize(System.IO.TextReader rdr, Serializer serializer)
        {
            string name, value;
            var    parameters = new System.Collections.Specialized.NameValueCollection();

            while (rdr.Property(out name, out value, parameters) && !string.IsNullOrEmpty(name))
            {
                switch (name.ToUpper())
                {
                case "BEGIN":
                    switch (value)
                    {
                    case "VALARM":
                        var a = serializer.GetService <Alarm>();
                        a.Deserialize(rdr, serializer);
                        Alarms.Add(a);
                        break;
                    }
                    break;

                case "ATTENDEE":
                    var contact = new Contact();
                    contact.Deserialize(value, parameters);
                    Attendees.Add(contact);
                    break;

                case "CATEGORIES":
                    Categories = value.SplitEscaped().ToList();
                    break;

                case "CLASS": Class = value.ToEnum <Classes>(); break;

                case "CREATED": Created = value.ToDateTime(); break;

                case "DESCRIPTION": Description = value; break;

                case "DTEND": End = value.ToDateTime(); break;

                case "DTSTAMP": DTSTAMP = value.ToDateTime().GetValueOrDefault(); break;

                case "DTSTART": Start = value.ToDateTime(); break;

                case "LAST-MODIFIED": LastModified = value.ToDateTime(); break;

                case "LOCATION": Location = value; break;

                case "ORGANIZER":
                    Organizer = serializer.GetService <Contact>();
                    Organizer.Deserialize(value, parameters);
                    break;

                case "PRIORITY": Priority = value.ToInt(); break;

                case "SEQUENCE": Sequence = value.ToInt(); break;

                case "STATUS": Status = value.ToEnum <Statuses>(); break;

                case "SUMMARY": Summary = value; break;

                case "TRANSP": Transparency = value; break;

                case "UID": UID = value; break;

                case "URL": Url = value.ToUri(); break;

                case "ATTACH":
                    var attach = value.ToUri();
                    if (attach != null)
                    {
                        Attachments.Add(attach);
                    }
                    break;

                case "RRULE":
                    var rule = serializer.GetService <Recurrence>();
                    rule.Deserialize(null, parameters);
                    Recurrences.Add(rule);
                    break;

                case "END": return;

                default:
                    Properties.Add(Tuple.Create(name, value, parameters));
                    break;
                }
            }

            IsAllDay = Start == End;
        }
示例#9
0
        public virtual void Deserialize(System.IO.TextReader rdr, Serializer serializer = null)
        {
            if (serializer == null)
            {
                serializer = new Serializer();
            }
            string name, value;
            var    parameters = new System.Collections.Specialized.NameValueCollection();

            while (rdr.Property(out name, out value, parameters) && !string.IsNullOrEmpty(name))
            {
                switch (name.ToUpper())
                {
                case "BEGIN":
                    switch (value)
                    {
                    case "VEVENT":
                        var e = serializer.GetService <Event>();
                        e.Calendar = this;
                        Events.Add(e);
                        e.Deserialize(rdr, serializer);
                        break;

                    case "VTIMEZONE":
                        var tz = serializer.GetService <TimeZone>();
                        tz.Calendar = this;
                        TimeZones.Add(tz);
                        tz.Deserialize(rdr, serializer);
                        break;

                    case "VTODO":
                        var td = serializer.GetService <ToDo>();
                        td.Calendar = this;
                        ToDos.Add(td);
                        td.Deserialize(rdr, serializer);
                        break;

                    case "VFREEBUSY":
                        var fb = serializer.GetService <FreeBusy>();
                        fb.Calendar = this;
                        FreeBusy.Add(fb);
                        fb.Deserialize(rdr, serializer);
                        break;

                    case "VJOURNAL":
                        var jn = serializer.GetService <JournalEntry>();
                        jn.Calendar = this;
                        JournalEntries.Add(jn);
                        jn.Deserialize(rdr, serializer);
                        break;
                    }
                    break;

                case "CALSCALE": Scale = value; break;

                case "VERSION": Version = value; break;

                case "PRODID": ProdID = value; break;

                case "END":
                    if (value == "VCALENDAR")
                    {
                        return;
                    }
                    break;

                default:
                    Properties.Add(Tuple.Create(name, value, parameters));
                    break;
                }
            }
        }