diff options
author | Ken Shirriff <kens@google.com> | 2009-07-06 10:45:38 -0700 |
---|---|---|
committer | Ken Shirriff <kens@google.com> | 2009-07-06 10:45:38 -0700 |
commit | 3b95f5378957c4e985429dfefda3975416c1a039 (patch) | |
tree | 5c463b9a6e1eef6f50171e2c23bdd1ab5cbd0f8e /core/java/android/pim | |
parent | c2b9d63953c1261b12a99f295366d43ed90bae7f (diff) | |
download | frameworks_base-3b95f5378957c4e985429dfefda3975416c1a039.zip frameworks_base-3b95f5378957c4e985429dfefda3975416c1a039.tar.gz frameworks_base-3b95f5378957c4e985429dfefda3975416c1a039.tar.bz2 |
Changes for new sync.
Add ContentValues-based RecurrenceSet processing.
Add test stub needed by SSL caching.
Diffstat (limited to 'core/java/android/pim')
-rw-r--r-- | core/java/android/pim/RecurrenceSet.java | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/core/java/android/pim/RecurrenceSet.java b/core/java/android/pim/RecurrenceSet.java index 1a287c8..7920543 100644 --- a/core/java/android/pim/RecurrenceSet.java +++ b/core/java/android/pim/RecurrenceSet.java @@ -223,6 +223,7 @@ public class RecurrenceSet { return true; } + // This can be removed when the old CalendarSyncAdapter is removed. public static boolean populateComponent(Cursor cursor, ICalendar.Component component) { @@ -292,6 +293,64 @@ public class RecurrenceSet { return true; } +public static boolean populateComponent(ContentValues values, + ICalendar.Component component) { + long dtstart = -1; + if (values.containsKey(Calendar.Events.DTSTART)) { + dtstart = values.getAsLong(Calendar.Events.DTSTART); + } + String duration = values.getAsString(Calendar.Events.DURATION); + String tzid = values.getAsString(Calendar.Events.EVENT_TIMEZONE); + String rruleStr = values.getAsString(Calendar.Events.RRULE); + String rdateStr = values.getAsString(Calendar.Events.RDATE); + String exruleStr = values.getAsString(Calendar.Events.EXRULE); + String exdateStr = values.getAsString(Calendar.Events.EXDATE); + boolean allDay = values.getAsInteger(Calendar.Events.ALL_DAY) == 1; + + if ((dtstart == -1) || + (TextUtils.isEmpty(duration))|| + ((TextUtils.isEmpty(rruleStr))&& + (TextUtils.isEmpty(rdateStr)))) { + // no recurrence. + return false; + } + + ICalendar.Property dtstartProp = new ICalendar.Property("DTSTART"); + Time dtstartTime = null; + if (!TextUtils.isEmpty(tzid)) { + if (!allDay) { + dtstartProp.addParameter(new ICalendar.Parameter("TZID", tzid)); + } + dtstartTime = new Time(tzid); + } else { + // use the "floating" timezone + dtstartTime = new Time(Time.TIMEZONE_UTC); + } + + dtstartTime.set(dtstart); + // make sure the time is printed just as a date, if all day. + // TODO: android.pim.Time really should take care of this for us. + if (allDay) { + dtstartProp.addParameter(new ICalendar.Parameter("VALUE", "DATE")); + dtstartTime.allDay = true; + dtstartTime.hour = 0; + dtstartTime.minute = 0; + dtstartTime.second = 0; + } + + dtstartProp.setValue(dtstartTime.format2445()); + component.addProperty(dtstartProp); + ICalendar.Property durationProp = new ICalendar.Property("DURATION"); + durationProp.setValue(duration); + component.addProperty(durationProp); + + addPropertiesForRuleStr(component, "RRULE", rruleStr); + addPropertyForDateStr(component, "RDATE", rdateStr); + addPropertiesForRuleStr(component, "EXRULE", exruleStr); + addPropertyForDateStr(component, "EXDATE", exdateStr); + return true; + } + private static void addPropertiesForRuleStr(ICalendar.Component component, String propertyName, String ruleStr) { |