diff options
Diffstat (limited to 'src/com/android/calendar/icalendar/VEvent.java')
-rw-r--r-- | src/com/android/calendar/icalendar/VEvent.java | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/com/android/calendar/icalendar/VEvent.java b/src/com/android/calendar/icalendar/VEvent.java index 1aff0bd4..672aa18b 100644 --- a/src/com/android/calendar/icalendar/VEvent.java +++ b/src/com/android/calendar/icalendar/VEvent.java @@ -6,6 +6,7 @@ package com.android.calendar.icalendar; import java.util.HashMap; import java.util.LinkedList; +import java.util.ListIterator; import java.util.UUID; /** @@ -173,4 +174,47 @@ public class VEvent { return sb.toString(); } + public void populateFromEntries(ListIterator<String> iter) { + while (iter.hasNext()) { + String line = iter.next(); + if (line.contains("BEGIN:VEVENT")) { + // Continue + } else if (line.startsWith("END:EVENT")) { + break; + } else if (line.startsWith("ORGANIZER")) { + String entry = parseTillNextAttribute(iter, line); + mOrganizer = Organizer.populateFromICalString(entry); + } else if (line.startsWith("ATTENDEE")) { + // Go one previous, so VEvent, parses current line + iter.previous(); + + // Offload to Attendee for parsing + Attendee attendee = new Attendee(); + attendee.populateFromEntries(iter); + mAttendees.add(attendee); + } else if (line.contains(":")) { + String entry = parseTillNextAttribute(iter, line); + int indexOfFirstColon = entry.indexOf(":"); + String key = entry.substring(0, indexOfFirstColon); + String value = entry.substring(indexOfFirstColon + 1); + mProperties.put(key, value); + } + } + } + + public static String parseTillNextAttribute(ListIterator<String> iter, String currentLine) { + StringBuilder parse = new StringBuilder(); + parse.append(currentLine); + while (iter.hasNext()) { + String line = iter.next(); + if (line.startsWith(" ")) { + parse.append(line.replaceFirst(" ", "")); + } else { + iter.previous(); + break; + } + } + return parse.toString(); + } + } |