From 92f8ccc1f15df787b7434224857c056721281046 Mon Sep 17 00:00:00 2001 From: Walter Jang Date: Fri, 6 Feb 2015 10:23:37 -0800 Subject: Do setIntentExtras, on[Save|Join]Completed in base contact edit fragment Do setGroupMetaData in the child classes since the layout will be drastically different between the two. Also moved a public Intent extra constant to the base. Bug 19124091 Change-Id: Idd20ff39b91eb3584c69e406f1e3472bcb278f42 --- .../activities/ContactEditorBaseActivity.java | 2 +- .../editor/CompactContactEditorFragment.java | 17 +------- .../contacts/editor/ContactEditorBaseFragment.java | 45 ++++++++++++++++------ .../contacts/editor/ContactEditorFragment.java | 34 +++++++--------- 4 files changed, 50 insertions(+), 48 deletions(-) (limited to 'src') diff --git a/src/com/android/contacts/activities/ContactEditorBaseActivity.java b/src/com/android/contacts/activities/ContactEditorBaseActivity.java index 94f694ecd..7cf42989c 100644 --- a/src/com/android/contacts/activities/ContactEditorBaseActivity.java +++ b/src/com/android/contacts/activities/ContactEditorBaseActivity.java @@ -130,7 +130,7 @@ abstract public class ContactEditorBaseActivity extends ContactsActivity void load(String action, Uri lookupUri, Bundle intentExtras); /** - * Merges extras from the intent. + * Applies extras from the hosting Activity to the first writable raw contact. */ void setIntentExtras(Bundle extras); diff --git a/src/com/android/contacts/editor/CompactContactEditorFragment.java b/src/com/android/contacts/editor/CompactContactEditorFragment.java index 4291f9116..f312a468b 100644 --- a/src/com/android/contacts/editor/CompactContactEditorFragment.java +++ b/src/com/android/contacts/editor/CompactContactEditorFragment.java @@ -20,7 +20,6 @@ import com.android.contacts.R; import com.android.contacts.activities.ContactEditorBaseActivity.ContactEditor; import android.content.Intent; -import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -55,24 +54,12 @@ public class CompactContactEditorFragment extends ContactEditorBaseFragment protected void bindEditors() { } - // - // ContactEditor - // - @Override - public void setIntentExtras(Bundle extras) { + protected void setGroupMetaData() { } @Override protected boolean doSaveAction(int saveMode) { - onSaveCompleted(/* hadChanges =*/ false, saveMode, - /* saveSucceeded =*/ mLookupUri != null, mLookupUri); - return true; - } - - @Override - public void onJoinCompleted(Uri uri) { - onSaveCompleted(/* hadChanges =*/ false, SaveMode.RELOAD, - /* saveSucceeded =*/ uri != null, uri); + return false; } } diff --git a/src/com/android/contacts/editor/ContactEditorBaseFragment.java b/src/com/android/contacts/editor/ContactEditorBaseFragment.java index d4f5a5a41..b04c91965 100644 --- a/src/com/android/contacts/editor/ContactEditorBaseFragment.java +++ b/src/com/android/contacts/editor/ContactEditorBaseFragment.java @@ -148,6 +148,11 @@ abstract public class ContactEditorBaseFragment extends Fragment implements public static final String INTENT_EXTRA_DISABLE_DELETE_MENU_OPTION = "disableDeleteMenuOption"; + /** + * Intent extra to specify a {@link ContactEditor.SaveMode}. + */ + public static final String SAVE_MODE_EXTRA_KEY = "saveMode"; + /** * Callbacks for Activities that host contact editors Fragments. */ @@ -661,6 +666,16 @@ abstract public class ContactEditorBaseFragment extends Fragment implements } } + /** + * Invalidates the options menu if we are still associated with an Activity. + */ + protected void invalidateOptionsMenu() { + final Activity activity = getActivity(); + if (activity != null) { + activity.invalidateOptionsMenu(); + } + } + @Override public void onCreateOptionsMenu(Menu menu, final MenuInflater inflater) { inflater.inflate(R.menu.edit_contact, menu); @@ -1061,22 +1076,13 @@ abstract public class ContactEditorBaseFragment extends Fragment implements /** * Sets group metadata on all bound editors. */ - protected void setGroupMetaData() { - if (mGroupMetaData == null) { - return; - } - int editorCount = mContent.getChildCount(); - for (int i = 0; i < editorCount; i++) { - BaseRawContactEditorView editor = (BaseRawContactEditorView) mContent.getChildAt(i); - editor.setGroupMetaData(mGroupMetaData); - } - } + abstract protected void setGroupMetaData(); /** * Bind editors using {@link #mState} and other members initialized from the loaded (or new) * Contact. */ - abstract void bindEditors(); + abstract protected void bindEditors(); /** * Set the enabled state of editors. @@ -1134,6 +1140,23 @@ abstract public class ContactEditorBaseFragment extends Fragment implements } } + @Override + public void setIntentExtras(Bundle extras) { + if (extras == null || extras.size() == 0) { + return; + } + + final AccountTypeManager accountTypes = AccountTypeManager.getInstance(mContext); + for (RawContactDelta state : mState) { + final AccountType type = state.getAccountType(accountTypes); + if (type.areContactsWritable()) { + // Apply extras to the first writable raw contact only + RawContactModifier.parseExtras(mContext, type, state, extras); + break; + } + } + } + @Override public void onJoinCompleted(Uri uri) { onSaveCompleted(false, SaveMode.RELOAD, uri != null, uri); diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java index c71c891de..f30360c3d 100644 --- a/src/com/android/contacts/editor/ContactEditorFragment.java +++ b/src/com/android/contacts/editor/ContactEditorFragment.java @@ -71,8 +71,6 @@ public class ContactEditorFragment extends ContactEditorBaseFragment implements private static final String KEY_CURRENT_PHOTO_URI = "currentphotouri"; private static final String KEY_UPDATED_PHOTOS = "updatedPhotos"; - public static final String SAVE_MODE_EXTRA_KEY = "saveMode"; - // Used to store which raw contact editors have been expanded. Keyed on raw contact ids. private HashMap mExpandedEditors = new HashMap(); @@ -132,23 +130,6 @@ public class ContactEditorFragment extends ContactEditorBaseFragment implements updatedExpandedEditorsMap(); } - @Override - public void setIntentExtras(Bundle extras) { - if (extras == null || extras.size() == 0) { - return; - } - - final AccountTypeManager accountTypes = AccountTypeManager.getInstance(mContext); - for (RawContactDelta state : mState) { - final AccountType type = state.getAccountType(accountTypes); - if (type.areContactsWritable()) { - // Apply extras to the first writable raw contact only - RawContactModifier.parseExtras(mContext, type, state, extras); - break; - } - } - } - /** * Removes a current editor ({@link #mState}) and rebinds new editor for a new account. * Some of old data are reused with new restriction enforced by the new account. @@ -180,6 +161,18 @@ public class ContactEditorFragment extends ContactEditorBaseFragment implements } } + @Override + protected void setGroupMetaData() { + if (mGroupMetaData == null) { + return; + } + int editorCount = mContent.getChildCount(); + for (int i = 0; i < editorCount; i++) { + BaseRawContactEditorView editor = (BaseRawContactEditorView) mContent.getChildAt(i); + editor.setGroupMetaData(mGroupMetaData); + } + } + @Override protected void bindEditors() { // bindEditors() can only bind views if there is data in mState, so immediately return @@ -309,8 +302,7 @@ public class ContactEditorFragment extends ContactEditorBaseFragment implements // Refresh Action Bar as the visibility of the join command // Activity can be null if we have been detached from the Activity - final Activity activity = getActivity(); - if (activity != null) activity.invalidateOptionsMenu(); + invalidateOptionsMenu(); updatedExpandedEditorsMap(); } -- cgit v1.2.3