This commit is contained in:
Christian Fiedler
2013-09-06 16:44:37 +02:00
parent 51a100d34b
commit 34c38cc1b2
2 changed files with 182 additions and 183 deletions

View File

@@ -20,44 +20,34 @@ namespace CampusAppWP8.Utility
public class ICSObject
{
private List<ICSDict.ICSValueDesc> readParentList = null;
private VCalendar data;
private struct VCalendar
{
public string version;
public VEvent vevent;
public List<object> props;
}
private struct VEvent
{
public DateTime created;
public string uid;
public DateTime lastModified;
public DateTime stamp;
public string summary;
public DateTime start;
public DateTime end;
public string accessClass;
public string location;
public string description;
public string categories;
public List<object> props;
}
private struct ContentLine
{
public string name;
public List<string> paramList;
public List<string> valueList;
//public List<string> valueList;
public string valueString;
}
List<object> vcalProps;
List<List<object>> subProps;
private Dictionary<string, object> data = null;
/// <summary>Default constructor. </summary>
/// <remarks>Fiedler, 27.08.2013. </remarks>
public ICSObject()
{
this.readParentList = new List<ICSDict.ICSValueDesc>();
this.data = new Dictionary<string, object>();
}
public ICSObject(string icsData) : this()
@@ -79,26 +69,25 @@ namespace CampusAppWP8.Utility
if ((tempElem = parentList.Last().GetValue(prop.name)) != null)
{
object t1 = tempElem.CreateObj();
Type t2 = t1.GetType();
Type t3 = tempElem.GetObjType();
string s1 = (t1 as ICSClasses.Interface).GetName();
object propObj = tempElem.CreateObj(prop.valueString, prop.paramList.ToArray());
ICSDict.ICSValueDesc va = null;
//tempElem.
if (this.Is(prop, ICSTag.BEGIN))
if (this.Is((propObj as ICSClasses.Interface).GetName(), ICSTag.BEGIN))
{
parentList.Add(this.GetSubValue(prop.valueList[0], tempElem));
parentList.Add(this.GetSubValue((propObj as ICSProperties.Begin).Value, tempElem));
}
else if (this.Is(prop, ICSTag.END))
else if (this.Is((propObj as ICSClasses.Interface).GetName(), ICSTag.END))
{
if (this.GetSubValue(prop.valueList[0], tempElem) != null)
if (this.GetSubValue((propObj as ICSProperties.End).Value, tempElem) != null)
{
parentList.RemoveAt(parentList.Count - 1);
}
}
else
{
}
}
else
{
@@ -222,8 +211,9 @@ namespace CampusAppWP8.Utility
}
// values
retValue.valueList = new List<string>();
retValue.valueList.AddRange(valueSplit[1].Split(','));
//retValue.valueList = new List<string>();
//retValue.valueList.AddRange(valueSplit[1].Split(','));
retValue.valueString = valueSplit[1];
// params
int paramNum = StringManager.CountChar(valueSplit[0], ';');

View File

@@ -146,11 +146,11 @@ namespace CampusAppWP8.Utility
private List<ICSValueDesc> value = null;
private Type objType;
public ICSElemDesc(string name, Type t, ICSValueDesc[] valueList) : base()
public ICSElemDesc(Type t, ICSValueDesc[] valueList) : base()
{
this.Name = name;
this.objType = t;
this.Name = (this.CreateObj() as ICSClasses.Interface).GetName();
if ((valueList != null) && (valueList.Length > 0))
{
this.value = new List<ICSValueDesc>();
@@ -216,15 +216,24 @@ namespace CampusAppWP8.Utility
return Activator.CreateInstance(this.objType);
}
public object CreateObj(string valueStr, string paramStr)
public object CreateObj(string valueString, string paramString)
{
object retValue = this.CreateObj();
(retValue as ICSClasses.Interface).Set(valueStr, paramStr);
(retValue as ICSClasses.Interface).Set(valueString, paramString);
return retValue;
}
public object CreateObj(string valueString, string[] paramStringList)
{
object retValue = this.CreateObj();
(retValue as ICSClasses.Interface).Set(valueString, paramStringList);
return retValue;
}
public Type GetObjType()
{
return this.objType;
@@ -232,202 +241,202 @@ namespace CampusAppWP8.Utility
}
public static ICSValueDesc Root = new ICSValueDesc("ROOT", new ICSElemDesc[] {
new ICSElemDesc(ICSTag.BEGIN, typeof(ICSProperties.Begin), new ICSValueDesc[] {
new ICSElemDesc(typeof(ICSProperties.Begin), new ICSValueDesc[] {
new ICSValueDesc(ICSTag.VCALENDAR, new ICSElemDesc[] {
new ICSElemDesc(ICSTag.VERSION, typeof(ICSProperties.Version), null),
new ICSElemDesc(ICSTag.PRODUCT_ID, typeof(ICSProperties.ProductID), null),
new ICSElemDesc(ICSTag.CAL_SCALE, typeof(ICSProperties.CalendarScale), new ICSValueDesc[] {
new ICSElemDesc(typeof(ICSProperties.Version), null),
new ICSElemDesc(typeof(ICSProperties.ProductID), null),
new ICSElemDesc(typeof(ICSProperties.CalendarScale), new ICSValueDesc[] {
new ICSValueDesc(ICSValue.GREGORIAN, null)
}),
new ICSElemDesc(ICSTag.METHOD, typeof(ICSProperties.Method), null),
new ICSElemDesc(ICSTag.END, typeof(ICSProperties.End), new ICSValueDesc[] {
new ICSElemDesc(typeof(ICSProperties.Method), null),
new ICSElemDesc(typeof(ICSProperties.End), new ICSValueDesc[] {
new ICSValueDesc(ICSTag.VCALENDAR, null)
}),
new ICSElemDesc(ICSTag.BEGIN, typeof(ICSProperties.Begin), new ICSValueDesc[] {
new ICSElemDesc(typeof(ICSProperties.Begin), new ICSValueDesc[] {
new ICSValueDesc(ICSTag.VEVENT, new ICSElemDesc[] {
new ICSElemDesc(ICSTag.DT_STAMP, typeof(ICSProperties.DTStamp), null),
new ICSElemDesc(ICSTag.UNIQUE_ID, typeof(ICSProperties.UniqueID), null),
new ICSElemDesc(ICSTag.DT_START, typeof(ICSProperties.DTStart), null),
new ICSElemDesc(ICSTag.ACCESS_CLASS, typeof(ICSProperties.AccessClass), null),
new ICSElemDesc(ICSTag.DT_CREATED, typeof(ICSProperties.DTCreated), null),
new ICSElemDesc(ICSTag.DESCRIPTION, typeof(ICSProperties.Description), null),
new ICSElemDesc(ICSTag.GEO, typeof(ICSProperties.Geo), null),
new ICSElemDesc(ICSTag.DT_MODIFIED, typeof(ICSProperties.LastModified), null),
new ICSElemDesc(ICSTag.LOCATION, typeof(ICSProperties.Location), null),
new ICSElemDesc(ICSTag.ORGANIZER, typeof(ICSProperties.Organizer), null),
new ICSElemDesc(ICSTag.PRIORITY, typeof(ICSProperties.Priority), null),
new ICSElemDesc(ICSTag.SEQ, typeof(ICSProperties.SequenceNumber), null),
new ICSElemDesc(ICSTag.STATUS, typeof(ICSProperties.Status), null),
new ICSElemDesc(ICSTag.SUMMARY, typeof(ICSProperties.Summary), null),
new ICSElemDesc(ICSTag.TRANSP, typeof(ICSProperties.TimeTransparency), null),
new ICSElemDesc(ICSTag.URL, typeof(ICSProperties.Url), null),
new ICSElemDesc(ICSTag.RECURRENCE_ID, typeof(ICSProperties.RecurrenceID), null),
new ICSElemDesc(ICSTag.RRULE, typeof(ICSProperties.RecurrenceRule), null),
new ICSElemDesc(ICSTag.DT_END, typeof(ICSProperties.DTEnd), null),
new ICSElemDesc(ICSTag.DURATION, typeof(ICSProperties.Duration), null),
new ICSElemDesc(ICSTag.ATTACHMENT, typeof(ICSProperties.Attachment), null),
new ICSElemDesc(ICSTag.ATTENDEE, typeof(ICSProperties.Attendee), null),
new ICSElemDesc(ICSTag.CATEGORIES, typeof(ICSProperties.Categories), null),
new ICSElemDesc(ICSTag.COMMENT, typeof(ICSProperties.Comment), null),
new ICSElemDesc(ICSTag.CONTACT, typeof(ICSProperties.Contact), null),
new ICSElemDesc(ICSTag.EXDATE, typeof(ICSProperties.DTException), null),
new ICSElemDesc(ICSTag.RSTATUS, typeof(ICSProperties.RequestStatus), null),
new ICSElemDesc(ICSTag.RELATED, typeof(ICSProperties.RelatedTo), null),
new ICSElemDesc(ICSTag.RESOURCES, typeof(ICSProperties.Resources), null),
new ICSElemDesc(ICSTag.RDATE, typeof(ICSProperties.DTRecurrence), null),
new ICSElemDesc(ICSTag.BEGIN, typeof(ICSProperties.Begin), new ICSValueDesc[] {
new ICSElemDesc(typeof(ICSProperties.DTStamp), null),
new ICSElemDesc(typeof(ICSProperties.UniqueID), null),
new ICSElemDesc(typeof(ICSProperties.DTStart), null),
new ICSElemDesc(typeof(ICSProperties.AccessClass), null),
new ICSElemDesc(typeof(ICSProperties.DTCreated), null),
new ICSElemDesc(typeof(ICSProperties.Description), null),
new ICSElemDesc(typeof(ICSProperties.Geo), null),
new ICSElemDesc(typeof(ICSProperties.LastModified), null),
new ICSElemDesc(typeof(ICSProperties.Location), null),
new ICSElemDesc(typeof(ICSProperties.Organizer), null),
new ICSElemDesc(typeof(ICSProperties.Priority), null),
new ICSElemDesc(typeof(ICSProperties.SequenceNumber), null),
new ICSElemDesc(typeof(ICSProperties.Status), null),
new ICSElemDesc(typeof(ICSProperties.Summary), null),
new ICSElemDesc(typeof(ICSProperties.TimeTransparency), null),
new ICSElemDesc(typeof(ICSProperties.Url), null),
new ICSElemDesc(typeof(ICSProperties.RecurrenceID), null),
new ICSElemDesc(typeof(ICSProperties.RecurrenceRule), null),
new ICSElemDesc(typeof(ICSProperties.DTEnd), null),
new ICSElemDesc(typeof(ICSProperties.Duration), null),
new ICSElemDesc(typeof(ICSProperties.Attachment), null),
new ICSElemDesc(typeof(ICSProperties.Attendee), null),
new ICSElemDesc(typeof(ICSProperties.Categories), null),
new ICSElemDesc(typeof(ICSProperties.Comment), null),
new ICSElemDesc(typeof(ICSProperties.Contact), null),
new ICSElemDesc(typeof(ICSProperties.DTException), null),
new ICSElemDesc(typeof(ICSProperties.RequestStatus), null),
new ICSElemDesc(typeof(ICSProperties.RelatedTo), null),
new ICSElemDesc(typeof(ICSProperties.Resources), null),
new ICSElemDesc(typeof(ICSProperties.DTRecurrence), null),
new ICSElemDesc(typeof(ICSProperties.Begin), new ICSValueDesc[] {
new ICSValueDesc(ICSTag.VALARM, new ICSElemDesc[] {
new ICSElemDesc(ICSTag.ACTION, typeof(ICSProperties.Action), new ICSValueDesc[] { // audio, display, email
new ICSElemDesc(typeof(ICSProperties.Action), new ICSValueDesc[] { // audio, display, email
new ICSValueDesc(ICSValue.AUDIO, null),
new ICSValueDesc(ICSValue.DISP, null),
new ICSValueDesc(ICSValue.EMAIL, null)
}),
new ICSElemDesc(ICSTag.TRIGGER, typeof(ICSProperties.Trigger), null), // audio, display, email
new ICSElemDesc(ICSTag.DURATION, typeof(ICSProperties.Duration), null), // audio, display, email
new ICSElemDesc(ICSTag.REPEAT, typeof(ICSProperties.RepeatCount), null), // audio, display, email
new ICSElemDesc(ICSTag.ATTACHMENT, typeof(ICSProperties.Attachment), null), // audio, email
new ICSElemDesc(ICSTag.DESCRIPTION, typeof(ICSProperties.Description), null),// display, eamil
new ICSElemDesc(ICSTag.SUMMARY, typeof(ICSProperties.Summary), null), // email
new ICSElemDesc(ICSTag.ATTENDEE, typeof(ICSProperties.Attendee), null), // email
new ICSElemDesc(ICSTag.END, typeof(ICSProperties.End), new ICSValueDesc[] { // audio, display, email
new ICSElemDesc(typeof(ICSProperties.Trigger), null), // audio, display, email
new ICSElemDesc(typeof(ICSProperties.Duration), null), // audio, display, email
new ICSElemDesc(typeof(ICSProperties.RepeatCount), null), // audio, display, email
new ICSElemDesc(typeof(ICSProperties.Attachment), null), // audio, email
new ICSElemDesc(typeof(ICSProperties.Description), null),// display, eamil
new ICSElemDesc(typeof(ICSProperties.Summary), null), // email
new ICSElemDesc(typeof(ICSProperties.Attendee), null), // email
new ICSElemDesc(typeof(ICSProperties.End), new ICSValueDesc[] { // audio, display, email
new ICSValueDesc(ICSTag.VALARM, null)
})
})
}),
new ICSElemDesc(ICSTag.END, typeof(ICSProperties.End), new ICSValueDesc[] {
new ICSElemDesc(typeof(ICSProperties.End), new ICSValueDesc[] {
new ICSValueDesc(ICSTag.VEVENT, null)
})
}),
new ICSValueDesc(ICSTag.VTODO, new ICSElemDesc[] {
new ICSElemDesc(ICSTag.DT_STAMP, typeof(ICSProperties.DTStamp), null),
new ICSElemDesc(ICSTag.UNIQUE_ID, typeof(ICSProperties.UniqueID), null),
new ICSElemDesc(ICSTag.ACCESS_CLASS, typeof(ICSProperties.AccessClass), null),
new ICSElemDesc(ICSTag.COMPLETED, typeof(ICSProperties.DTCompleted), null),
new ICSElemDesc(ICSTag.DT_CREATED, typeof(ICSProperties.DTCreated), null),
new ICSElemDesc(ICSTag.DESCRIPTION, typeof(ICSProperties.Description), null),
new ICSElemDesc(ICSTag.DT_START, typeof(ICSProperties.DTStart), null),
new ICSElemDesc(ICSTag.GEO, typeof(ICSProperties.Geo), null),
new ICSElemDesc(ICSTag.DT_MODIFIED, typeof(ICSProperties.LastModified), null),
new ICSElemDesc(ICSTag.LOCATION, typeof(ICSProperties.Location), null),
new ICSElemDesc(ICSTag.ORGANIZER, typeof(ICSProperties.Organizer), null),
new ICSElemDesc(ICSTag.PERCENT, typeof(ICSProperties.PercentComplete), null),
new ICSElemDesc(ICSTag.PRIORITY, typeof(ICSProperties.Priority), null),
new ICSElemDesc(ICSTag.RECURRENCE_ID, typeof(ICSProperties.RecurrenceID), null),
new ICSElemDesc(ICSTag.SEQ, typeof(ICSProperties.SequenceNumber), null),
new ICSElemDesc(ICSTag.STATUS, typeof(ICSProperties.Status), null),
new ICSElemDesc(ICSTag.SUMMARY, typeof(ICSProperties.Summary), null),
new ICSElemDesc(ICSTag.URL, typeof(ICSProperties.Url), null),
new ICSElemDesc(ICSTag.RRULE, typeof(ICSProperties.RecurrenceRule), null),
new ICSElemDesc(ICSTag.DUE, typeof(ICSProperties.DTDue), null),
new ICSElemDesc(ICSTag.DURATION, typeof(ICSProperties.Duration), null),
new ICSElemDesc(ICSTag.ATTACHMENT, typeof(ICSProperties.Attachment), null),
new ICSElemDesc(ICSTag.ATTENDEE, typeof(ICSProperties.Attendee), null),
new ICSElemDesc(ICSTag.CATEGORIES, typeof(ICSProperties.Categories), null),
new ICSElemDesc(ICSTag.COMMENT, typeof(ICSProperties.Comment), null),
new ICSElemDesc(ICSTag.CONTACT, typeof(ICSProperties.Contact), null),
new ICSElemDesc(ICSTag.EXDATE, typeof(ICSProperties.DTException), null),
new ICSElemDesc(ICSTag.RSTATUS, typeof(ICSProperties.RequestStatus), null),
new ICSElemDesc(ICSTag.RELATED, typeof(ICSProperties.RelatedTo), null),
new ICSElemDesc(ICSTag.RESOURCES, typeof(ICSProperties.Resources), null),
new ICSElemDesc(ICSTag.RDATE, typeof(ICSProperties.DTRecurrence), null),
new ICSElemDesc(ICSTag.BEGIN, typeof(ICSProperties.Begin), new ICSValueDesc[] {
new ICSElemDesc(typeof(ICSProperties.DTStamp), null),
new ICSElemDesc(typeof(ICSProperties.UniqueID), null),
new ICSElemDesc(typeof(ICSProperties.AccessClass), null),
new ICSElemDesc(typeof(ICSProperties.DTCompleted), null),
new ICSElemDesc(typeof(ICSProperties.DTCreated), null),
new ICSElemDesc(typeof(ICSProperties.Description), null),
new ICSElemDesc(typeof(ICSProperties.DTStart), null),
new ICSElemDesc(typeof(ICSProperties.Geo), null),
new ICSElemDesc(typeof(ICSProperties.LastModified), null),
new ICSElemDesc(typeof(ICSProperties.Location), null),
new ICSElemDesc(typeof(ICSProperties.Organizer), null),
new ICSElemDesc(typeof(ICSProperties.PercentComplete), null),
new ICSElemDesc(typeof(ICSProperties.Priority), null),
new ICSElemDesc(typeof(ICSProperties.RecurrenceID), null),
new ICSElemDesc(typeof(ICSProperties.SequenceNumber), null),
new ICSElemDesc(typeof(ICSProperties.Status), null),
new ICSElemDesc(typeof(ICSProperties.Summary), null),
new ICSElemDesc(typeof(ICSProperties.Url), null),
new ICSElemDesc(typeof(ICSProperties.RecurrenceRule), null),
new ICSElemDesc(typeof(ICSProperties.DTDue), null),
new ICSElemDesc(typeof(ICSProperties.Duration), null),
new ICSElemDesc(typeof(ICSProperties.Attachment), null),
new ICSElemDesc(typeof(ICSProperties.Attendee), null),
new ICSElemDesc(typeof(ICSProperties.Categories), null),
new ICSElemDesc(typeof(ICSProperties.Comment), null),
new ICSElemDesc(typeof(ICSProperties.Contact), null),
new ICSElemDesc(typeof(ICSProperties.DTException), null),
new ICSElemDesc(typeof(ICSProperties.RequestStatus), null),
new ICSElemDesc(typeof(ICSProperties.RelatedTo), null),
new ICSElemDesc(typeof(ICSProperties.Resources), null),
new ICSElemDesc(typeof(ICSProperties.DTRecurrence), null),
new ICSElemDesc(typeof(ICSProperties.Begin), new ICSValueDesc[] {
new ICSValueDesc(ICSTag.VALARM, new ICSElemDesc[] {
new ICSElemDesc(ICSTag.ACTION, typeof(ICSProperties.Action), new ICSValueDesc[] { // audio, display, email
new ICSElemDesc(typeof(ICSProperties.Action), new ICSValueDesc[] { // audio, display, email
new ICSValueDesc(ICSValue.AUDIO, null),
new ICSValueDesc(ICSValue.DISP, null),
new ICSValueDesc(ICSValue.EMAIL, null)
}),
new ICSElemDesc(ICSTag.TRIGGER, typeof(ICSProperties.Trigger), null), // audio, display, email
new ICSElemDesc(ICSTag.DURATION, typeof(ICSProperties.Duration), null), // audio, display, email
new ICSElemDesc(ICSTag.REPEAT, typeof(ICSProperties.RepeatCount), null), // audio, display, email
new ICSElemDesc(ICSTag.ATTACHMENT, typeof(ICSProperties.Attachment), null), // audio, email
new ICSElemDesc(ICSTag.DESCRIPTION, typeof(ICSProperties.Description), null),// display, eamil
new ICSElemDesc(ICSTag.SUMMARY, typeof(ICSProperties.Summary), null), // email
new ICSElemDesc(ICSTag.ATTENDEE, typeof(ICSProperties.Attendee), null), // email
new ICSElemDesc(ICSTag.END, typeof(ICSProperties.End), new ICSValueDesc[] { // audio, display, email
new ICSElemDesc(typeof(ICSProperties.Trigger), null), // audio, display, email
new ICSElemDesc(typeof(ICSProperties.Duration), null), // audio, display, email
new ICSElemDesc(typeof(ICSProperties.RepeatCount), null), // audio, display, email
new ICSElemDesc(typeof(ICSProperties.Attachment), null), // audio, email
new ICSElemDesc(typeof(ICSProperties.Description), null),// display, eamil
new ICSElemDesc(typeof(ICSProperties.Summary), null), // email
new ICSElemDesc(typeof(ICSProperties.Attendee), null), // email
new ICSElemDesc(typeof(ICSProperties.End), new ICSValueDesc[] { // audio, display, email
new ICSValueDesc(ICSTag.VALARM, null)
})
})
}),
new ICSElemDesc(ICSTag.END, typeof(ICSProperties.End), new ICSValueDesc[] {
new ICSElemDesc(typeof(ICSProperties.End), new ICSValueDesc[] {
new ICSValueDesc(ICSTag.VTODO, null)
})
}),
new ICSValueDesc(ICSTag.VJOURNAL, new ICSElemDesc[] {
new ICSElemDesc(ICSTag.DT_STAMP, typeof(ICSProperties.DTStamp), null),
new ICSElemDesc(ICSTag.UNIQUE_ID, typeof(ICSProperties.UniqueID), null),
new ICSElemDesc(ICSTag.ACCESS_CLASS, typeof(ICSProperties.AccessClass), null),
new ICSElemDesc(ICSTag.DT_CREATED, typeof(ICSProperties.DTCreated), null),
new ICSElemDesc(ICSTag.DT_START, typeof(ICSProperties.DTStart), null),
new ICSElemDesc(ICSTag.DT_MODIFIED, typeof(ICSProperties.LastModified), null),
new ICSElemDesc(ICSTag.ORGANIZER, typeof(ICSProperties.Organizer), null),
new ICSElemDesc(ICSTag.RECURRENCE_ID, typeof(ICSProperties.RecurrenceID), null),
new ICSElemDesc(ICSTag.SEQ, typeof(ICSProperties.SequenceNumber), null),
new ICSElemDesc(ICSTag.STATUS, typeof(ICSProperties.Status), null),
new ICSElemDesc(ICSTag.SUMMARY, typeof(ICSProperties.Summary), null),
new ICSElemDesc(ICSTag.URL, typeof(ICSProperties.Url), null),
new ICSElemDesc(ICSTag.RRULE, typeof(ICSProperties.RecurrenceRule), null),
new ICSElemDesc(ICSTag.ATTACHMENT, typeof(ICSProperties.Attachment), null),
new ICSElemDesc(ICSTag.ATTENDEE, typeof(ICSProperties.Attendee), null),
new ICSElemDesc(ICSTag.CATEGORIES, typeof(ICSProperties.Categories), null),
new ICSElemDesc(ICSTag.COMMENT, typeof(ICSProperties.Comment), null),
new ICSElemDesc(ICSTag.CONTACT, typeof(ICSProperties.Contact), null),
new ICSElemDesc(ICSTag.DESCRIPTION, typeof(ICSProperties.Description), null),
new ICSElemDesc(ICSTag.EXDATE, typeof(ICSProperties.DTException), null),
new ICSElemDesc(ICSTag.RELATED, typeof(ICSProperties.RelatedTo), null),
new ICSElemDesc(ICSTag.RDATE, typeof(ICSProperties.DTRecurrence), null),
new ICSElemDesc(ICSTag.RSTATUS, typeof(ICSProperties.RequestStatus), null),
new ICSElemDesc(ICSTag.END, typeof(ICSProperties.End), new ICSValueDesc[] {
new ICSElemDesc(typeof(ICSProperties.DTStamp), null),
new ICSElemDesc(typeof(ICSProperties.UniqueID), null),
new ICSElemDesc(typeof(ICSProperties.AccessClass), null),
new ICSElemDesc(typeof(ICSProperties.DTCreated), null),
new ICSElemDesc(typeof(ICSProperties.DTStart), null),
new ICSElemDesc(typeof(ICSProperties.LastModified), null),
new ICSElemDesc(typeof(ICSProperties.Organizer), null),
new ICSElemDesc(typeof(ICSProperties.RecurrenceID), null),
new ICSElemDesc(typeof(ICSProperties.SequenceNumber), null),
new ICSElemDesc(typeof(ICSProperties.Status), null),
new ICSElemDesc(typeof(ICSProperties.Summary), null),
new ICSElemDesc(typeof(ICSProperties.Url), null),
new ICSElemDesc(typeof(ICSProperties.RecurrenceRule), null),
new ICSElemDesc(typeof(ICSProperties.Attachment), null),
new ICSElemDesc(typeof(ICSProperties.Attendee), null),
new ICSElemDesc(typeof(ICSProperties.Categories), null),
new ICSElemDesc(typeof(ICSProperties.Comment), null),
new ICSElemDesc(typeof(ICSProperties.Contact), null),
new ICSElemDesc(typeof(ICSProperties.Description), null),
new ICSElemDesc(typeof(ICSProperties.DTException), null),
new ICSElemDesc(typeof(ICSProperties.RelatedTo), null),
new ICSElemDesc(typeof(ICSProperties.DTRecurrence), null),
new ICSElemDesc(typeof(ICSProperties.RequestStatus), null),
new ICSElemDesc(typeof(ICSProperties.End), new ICSValueDesc[] {
new ICSValueDesc(ICSTag.VJOURNAL, null)
})
}),
new ICSValueDesc(ICSTag.VFREEBUSY, new ICSElemDesc[] {
new ICSElemDesc(ICSTag.DT_STAMP, typeof(ICSProperties.DTStamp), null),
new ICSElemDesc(ICSTag.UNIQUE_ID, typeof(ICSProperties.UniqueID), null),
new ICSElemDesc(ICSTag.CONTACT, typeof(ICSProperties.Contact), null),
new ICSElemDesc(ICSTag.DT_START, typeof(ICSProperties.DTStart), null),
new ICSElemDesc(ICSTag.DT_END, typeof(ICSProperties.DTEnd), null),
new ICSElemDesc(ICSTag.ORGANIZER, typeof(ICSProperties.Organizer), null),
new ICSElemDesc(ICSTag.URL, typeof(ICSProperties.Url), null),
new ICSElemDesc(ICSTag.ATTENDEE, typeof(ICSProperties.Attendee), null),
new ICSElemDesc(ICSTag.COMMENT, typeof(ICSProperties.Comment), null),
new ICSElemDesc(ICSTag.FREEBUSY, typeof(ICSProperties.FreeBusyTime), null),
new ICSElemDesc(ICSTag.RSTATUS, typeof(ICSProperties.RequestStatus), null),
new ICSElemDesc(ICSTag.END, typeof(ICSProperties.End), new ICSValueDesc[] {
new ICSElemDesc(typeof(ICSProperties.DTStamp), null),
new ICSElemDesc(typeof(ICSProperties.UniqueID), null),
new ICSElemDesc(typeof(ICSProperties.Contact), null),
new ICSElemDesc(typeof(ICSProperties.DTStart), null),
new ICSElemDesc(typeof(ICSProperties.DTEnd), null),
new ICSElemDesc(typeof(ICSProperties.Organizer), null),
new ICSElemDesc(typeof(ICSProperties.Url), null),
new ICSElemDesc(typeof(ICSProperties.Attendee), null),
new ICSElemDesc(typeof(ICSProperties.Comment), null),
new ICSElemDesc(typeof(ICSProperties.FreeBusyTime), null),
new ICSElemDesc(typeof(ICSProperties.RequestStatus), null),
new ICSElemDesc(typeof(ICSProperties.End), new ICSValueDesc[] {
new ICSValueDesc(ICSTag.VFREEBUSY, null)
})
}),
new ICSValueDesc(ICSTag.VTIMEZONE, new ICSElemDesc[] {
new ICSElemDesc(ICSTag.TIME_ZONE_ID, typeof(ICSProperties.TimeZoneIdentifier), null),
new ICSElemDesc(ICSTag.DT_MODIFIED, typeof(ICSProperties.LastModified), null),
new ICSElemDesc(ICSTag.TIME_ZONE_URL, typeof(ICSProperties.TimeZoneUrl), null),
new ICSElemDesc(ICSTag.BEGIN, typeof(ICSProperties.Begin), new ICSValueDesc[] {
new ICSElemDesc(typeof(ICSProperties.TimeZoneIdentifier), null),
new ICSElemDesc(typeof(ICSProperties.LastModified), null),
new ICSElemDesc(typeof(ICSProperties.TimeZoneUrl), null),
new ICSElemDesc(typeof(ICSProperties.Begin), new ICSValueDesc[] {
new ICSValueDesc(ICSTag.STANDARD, new ICSElemDesc[] {
new ICSElemDesc(ICSTag.DT_START, typeof(ICSProperties.DTStart), null),
new ICSElemDesc(ICSTag.TIME_ZONE_OFFSET_TO, typeof(ICSProperties.TimeZoneOffsetTo), null),
new ICSElemDesc(ICSTag.TIME_ZONE_OFFSET_FROM, typeof(ICSProperties.TimeZoneOffsetFrom), null),
new ICSElemDesc(ICSTag.RRULE, typeof(ICSProperties.RecurrenceRule), null),
new ICSElemDesc(ICSTag.COMMENT, typeof(ICSProperties.Comment), null),
new ICSElemDesc(ICSTag.RDATE, typeof(ICSProperties.DTRecurrence), null),
new ICSElemDesc(ICSTag.TIME_ZONE_NAME, typeof(ICSProperties.TimeZoneName), null),
new ICSElemDesc(ICSTag.END, typeof(ICSProperties.End), new ICSValueDesc[] {
new ICSElemDesc(typeof(ICSProperties.DTStart), null),
new ICSElemDesc(typeof(ICSProperties.TimeZoneOffsetTo), null),
new ICSElemDesc(typeof(ICSProperties.TimeZoneOffsetFrom), null),
new ICSElemDesc(typeof(ICSProperties.RecurrenceRule), null),
new ICSElemDesc(typeof(ICSProperties.Comment), null),
new ICSElemDesc(typeof(ICSProperties.DTRecurrence), null),
new ICSElemDesc(typeof(ICSProperties.TimeZoneName), null),
new ICSElemDesc(typeof(ICSProperties.End), new ICSValueDesc[] {
new ICSValueDesc(ICSTag.STANDARD, null)
})
}),
new ICSValueDesc(ICSTag.DAYLIGHT, new ICSElemDesc[] {
new ICSElemDesc(ICSTag.DT_START, typeof(ICSProperties.DTStart), null),
new ICSElemDesc(ICSTag.TIME_ZONE_OFFSET_TO, typeof(ICSProperties.TimeZoneOffsetTo), null),
new ICSElemDesc(ICSTag.TIME_ZONE_OFFSET_FROM, typeof(ICSProperties.TimeZoneOffsetFrom), null),
new ICSElemDesc(ICSTag.RRULE, typeof(ICSProperties.RecurrenceRule), null),
new ICSElemDesc(ICSTag.COMMENT, typeof(ICSProperties.Comment), null),
new ICSElemDesc(ICSTag.RDATE, typeof(ICSProperties.DTRecurrence), null),
new ICSElemDesc(ICSTag.TIME_ZONE_NAME, typeof(ICSProperties.TimeZoneName), null),
new ICSElemDesc(ICSTag.END, typeof(ICSProperties.End), new ICSValueDesc[] {
new ICSElemDesc(typeof(ICSProperties.DTStart), null),
new ICSElemDesc(typeof(ICSProperties.TimeZoneOffsetTo), null),
new ICSElemDesc(typeof(ICSProperties.TimeZoneOffsetFrom), null),
new ICSElemDesc(typeof(ICSProperties.RecurrenceRule), null),
new ICSElemDesc(typeof(ICSProperties.Comment), null),
new ICSElemDesc(typeof(ICSProperties.DTRecurrence), null),
new ICSElemDesc(typeof(ICSProperties.TimeZoneName), null),
new ICSElemDesc(typeof(ICSProperties.End), new ICSValueDesc[] {
new ICSValueDesc(ICSTag.STANDARD, null)
})
})
}),
new ICSElemDesc(ICSTag.END, typeof(ICSProperties.End), new ICSValueDesc[] {
new ICSElemDesc(typeof(ICSProperties.End), new ICSValueDesc[] {
new ICSValueDesc(ICSTag.VTIMEZONE, null)
})
})