OSDN Git Service

am a8e4ada7: Fix calendar edit NPE.
authorKen Shirriff <kens@google.com>
Thu, 24 Sep 2009 17:42:24 +0000 (10:42 -0700)
committerAndroid Git Automerger <android-git-automerger@android.com>
Thu, 24 Sep 2009 17:42:24 +0000 (10:42 -0700)
Merge commit 'a8e4ada7a25aa0d56d668e1d6f836c8a6ea8242c' into eclair-plus-aosp

* commit 'a8e4ada7a25aa0d56d668e1d6f836c8a6ea8242c':
  Fix calendar edit NPE.

src/com/android/calendar/EditEvent.java

index df4ad43..25d875c 100644 (file)
@@ -236,6 +236,7 @@ public class EditEvent extends Activity implements View.OnClickListener,
     private ProgressDialog mLoadingCalendarsDialog;
     private AlertDialog mNoCalendarsDialog;
     private ContentValues mInitialValues;
+    private String mOwnerAccount;
 
     /**
      * If the repeating event is created on the phone and it hasn't been
@@ -634,9 +635,9 @@ public class EditEvent extends Activity implements View.OnClickListener,
             String rrule = mEventCursor.getString(EVENT_INDEX_RRULE);
             String timezone = mEventCursor.getString(EVENT_INDEX_TIMEZONE);
             long calendarId = mEventCursor.getInt(EVENT_INDEX_CALENDAR_ID);
-            String ownerAccount = mEventCursor.getString(EVENT_INDEX_OWNER_ACCOUNT);
-            if (!TextUtils.isEmpty(ownerAccount)) {
-                String ownerDomain = extractDomain(ownerAccount);
+            mOwnerAccount = mEventCursor.getString(EVENT_INDEX_OWNER_ACCOUNT);
+            if (!TextUtils.isEmpty(mOwnerAccount)) {
+                String ownerDomain = extractDomain(mOwnerAccount);
                 if (ownerDomain != null) {
                     domain = ownerDomain;
                 }
@@ -1535,23 +1536,22 @@ public class EditEvent extends Activity implements View.OnClickListener,
         if (eventIdIndex != -1) {
             values.clear();
             int calendarCursorPosition = mCalendarsSpinner.getSelectedItemPosition();
-            if (mCalendarsCursor.moveToPosition(calendarCursorPosition)) {
-                String ownerEmail = mCalendarsCursor.getString(CALENDARS_INDEX_OWNER_ACCOUNT);
-                if (ownerEmail != null) {
-                    String displayName = mCalendarsCursor.getString(CALENDARS_INDEX_DISPLAY_NAME);
-                    if (displayName != null) {
-                        values.put(Attendees.ATTENDEE_NAME, displayName);
-                    }
-                    values.put(Attendees.ATTENDEE_EMAIL, ownerEmail);
-                    values.put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ORGANIZER);
-                    values.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_NONE);
-                    values.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_ACCEPTED);
-
-                    b = ContentProviderOperation.newInsert(Attendees.CONTENT_URI)
-                            .withValues(values);
-                    b.withValueBackReference(Reminders.EVENT_ID, eventIdIndex);
-                    ops.add(b.build());
-                }
+            String ownerEmail = mOwnerAccount;
+            // Just in case mOwnerAccount is null, try to get owner from mCalendarsCursor
+            if (ownerEmail == null && mCalendarsCursor != null &&
+                    mCalendarsCursor.moveToPosition(calendarCursorPosition)) {
+                ownerEmail = mCalendarsCursor.getString(CALENDARS_INDEX_OWNER_ACCOUNT);
+            }
+            if (ownerEmail != null) {
+                values.put(Attendees.ATTENDEE_EMAIL, ownerEmail);
+                values.put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ORGANIZER);
+                values.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_NONE);
+                values.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_ACCEPTED);
+
+                b = ContentProviderOperation.newInsert(Attendees.CONTENT_URI)
+                        .withValues(values);
+                b.withValueBackReference(Reminders.EVENT_ID, eventIdIndex);
+                ops.add(b.build());
             }
         }