rendered paste body public enum PriorityLevel : int
{
Normal = 5,
High = 1,
Low = 9
}
public class Event
{
private const string _DATEFORMAT = "yyyyMMdd\\THHmmss\\Z";
public Event() { }
public DateTime StartTime;
public DateTime EndTime;
public string Location = string.Empty;
public string Title = string.Empty;
public string Description = string.Empty;
public bool UseAlarm = true;
public PriorityLevel Priority = PriorityLevel.Normal;
public string Category = string.Empty;
public override string ToString()
{
return Output;
}
public string Output
{
get
{
StringBuilder sb = new StringBuilder();
sb.Append("BEGIN:VEVENT\n\n");
sb.Append("DTSTART:");
sb.Append(StartTime.ToUniversalTime().ToString(_DATEFORMAT));
sb.Append("\nDTEND:");
sb.Append(EndTime.ToUniversalTime().ToString(_DATEFORMAT));
sb.Append("\nLOCATION:");
sb.Append(Location);
sb.Append("\nCATEGORIES:");
sb.Append(Category);
sb.Append("\nTRANSP:OPAQUE\n");
sb.Append("SEQUENCE:0\n");
sb.AppendFormat("UID:RFCALITEM{0}\n", DateTime.Now.Ticks);
sb.Append("DTSTAMP:");
sb.Append(StartTime.ToUniversalTime().ToString(_DATEFORMAT));
sb.Append("\nDESCRIPTION:");
sb.Append(Description);
sb.Append("\nSUMMARY:");
sb.Append(Title);
sb.Append("\n\nPRIORITY:");
sb.Append((int)Priority);
sb.Append("\nCLASS:PUBLIC\n");
if (UseAlarm)
{
sb.Append("BEGIN:VALARM\n");
sb.Append("TRIGGER:PT15M\n");
sb.Append("ACTION:DISPLAY\n");
sb.Append("DESCRIPTION:Reminder\n");
sb.Append("PRIORITY:5\n");
sb.Append("END:VALARM\n");
}
sb.Append("END:VEVENT\n");
return sb.ToString();
}
}
}
public class iCalendar
{
public iCalendar()
{
this.Events = new List<Event>();
}
public List<Event> Events;
public override string ToString()
{
return this.Output;
}
public string Output
{
get
{
StringBuilder sb = new StringBuilder();
sb.Append("BEGIN:VCALENDAR\n");
sb.Append("PRODID:-//RyanFarley.com//iCalendar Sample MIMEDIR//EN\n");
sb.Append("VERSION:2.0\n");
sb.Append("METHOD:PUBLISH\n");
foreach (Event ev in Events)
sb.Append(ev.Output);
sb.Append("END:VCALENDAR");
return sb.ToString();
}
}
}