diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:05:53 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:05:53 -0800 |
commit | a9ea5e1627ce3b2ecc72a3dca7ae732593b0a424 (patch) | |
tree | ef36f3b57853666034db37722373b9c957844f50 /src/com/android/calendar/DeleteEventHelper.java | |
parent | a390cbfd25a5f3b2f002df725b7580bc78bd9edf (diff) | |
download | android_packages_apps_Calendar-a9ea5e1627ce3b2ecc72a3dca7ae732593b0a424.tar.gz android_packages_apps_Calendar-a9ea5e1627ce3b2ecc72a3dca7ae732593b0a424.tar.bz2 android_packages_apps_Calendar-a9ea5e1627ce3b2ecc72a3dca7ae732593b0a424.zip |
Code drop from //branches/cupcake/...@124589
Diffstat (limited to 'src/com/android/calendar/DeleteEventHelper.java')
-rw-r--r-- | src/com/android/calendar/DeleteEventHelper.java | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/src/com/android/calendar/DeleteEventHelper.java b/src/com/android/calendar/DeleteEventHelper.java index 7f958b71..8141d20a 100644 --- a/src/com/android/calendar/DeleteEventHelper.java +++ b/src/com/android/calendar/DeleteEventHelper.java @@ -25,9 +25,9 @@ import android.content.DialogInterface; import android.database.Cursor; import android.net.Uri; import android.pim.EventRecurrence; -import android.pim.Time; import android.provider.Calendar; import android.provider.Calendar.Events; +import android.text.format.Time; /** * A helper class for deleting events. If a normal event is selected for @@ -52,6 +52,7 @@ import android.provider.Calendar.Events; */ public class DeleteEventHelper { + private static final String TAG = "DeleteEventHelper"; private final Activity mParent; private final ContentResolver mContentResolver; @@ -84,9 +85,10 @@ public class DeleteEventHelper { Events._SYNC_ID, Events.EVENT_TIMEZONE, }; - + private int mEventIndexId; private int mEventIndexRrule; + private String mSyncId; public DeleteEventHelper(Activity parent, boolean exitWhenDone) { mParent = parent; @@ -195,6 +197,8 @@ public class DeleteEventHelper { mCursor = cursor; mEventIndexId = mCursor.getColumnIndexOrThrow(Events._ID); mEventIndexRrule = mCursor.getColumnIndexOrThrow(Events.RRULE); + int eventIndexSyncId = mCursor.getColumnIndexOrThrow(Events._SYNC_ID); + mSyncId = mCursor.getString(eventIndexSyncId); // If this is a repeating event, then pop up a dialog asking the // user if they want to delete all of the repeating events or @@ -206,25 +210,28 @@ public class DeleteEventHelper { .setTitle(R.string.delete_title) .setMessage(R.string.delete_this_event_title) .setIcon(android.R.drawable.ic_dialog_alert) - .setPositiveButton(R.string.ok_label, mDeleteNormalDialogListener) - .setNegativeButton(R.string.cancel_label, null) + .setPositiveButton(android.R.string.ok, mDeleteNormalDialogListener) + .setNegativeButton(android.R.string.cancel, null) .show(); } else { // This is a repeating event. Pop up a dialog asking which events // to delete. + int labelsArrayId = R.array.delete_repeating_labels; + if (mSyncId == null) { + labelsArrayId = R.array.delete_repeating_labels_no_selected; + } new AlertDialog.Builder(mParent) .setTitle(R.string.delete_title) .setIcon(android.R.drawable.ic_dialog_alert) - .setSingleChoiceItems(R.array.delete_repeating_labels, which, mDeleteListListener) - .setPositiveButton(R.string.ok_label, mDeleteRepeatingDialogListener) - .setNegativeButton(R.string.cancel_label, null) + .setSingleChoiceItems(labelsArrayId, which, mDeleteListListener) + .setPositiveButton(android.R.string.ok, mDeleteRepeatingDialogListener) + .setNegativeButton(android.R.string.cancel, null) .show(); } } private void deleteRepeatingEvent(int which) { int indexDtstart = mCursor.getColumnIndexOrThrow(Events.DTSTART); - int indexSyncId = mCursor.getColumnIndexOrThrow(Events._SYNC_ID); int indexAllDay = mCursor.getColumnIndexOrThrow(Events.ALL_DAY); int indexTitle = mCursor.getColumnIndexOrThrow(Events.TITLE); int indexTimezone = mCursor.getColumnIndexOrThrow(Events.EVENT_TIMEZONE); @@ -235,9 +242,27 @@ public class DeleteEventHelper { long dtstart = mCursor.getLong(indexDtstart); long id = mCursor.getInt(mEventIndexId); + // If the repeating event has not been given a sync id from the server + // yet, then we can't delete a single instance of this event. (This is + // a deficiency in the CalendarProvider and sync code.) We checked for + // that when creating the list of items in the dialog and we removed + // the first element ("DELETE_SELECTED") from the dialog in that case. + // The "which" value is a 0-based index into the list of items, where + // the "DELETE_SELECTED" item is at index 0. + if (mSyncId == null) { + which += 1; + } + switch (which) { case DELETE_SELECTED: { + // If we are deleting the first event in the series, then + // instead of creating a recurrence exception, just change + // the start time of the recurrence. + if (dtstart == mStartMillis) { + // TODO + } + // Create a recurrence exception by creating a new event // with the status "cancelled". ContentValues values = new ContentValues(); @@ -247,14 +272,14 @@ public class DeleteEventHelper { String title = mCursor.getString(indexTitle); values.put(Events.TITLE, title); - String syncId = mCursor.getString(indexSyncId); String timezone = mCursor.getString(indexTimezone); int calendarId = mCursor.getInt(indexCalendarId); values.put(Events.EVENT_TIMEZONE, timezone); + values.put(Events.ALL_DAY, allDay ? 1 : 0); values.put(Events.CALENDAR_ID, calendarId); values.put(Events.DTSTART, mStartMillis); values.put(Events.DTEND, mEndMillis); - values.put(Events.ORIGINAL_EVENT, syncId); + values.put(Events.ORIGINAL_EVENT, mSyncId); values.put(Events.ORIGINAL_INSTANCE_TIME, mStartMillis); values.put(Events.STATUS, Events.STATUS_CANCELED); |