diff options
author | Walter Jang <wjang@google.com> | 2015-02-06 10:23:37 -0800 |
---|---|---|
committer | Walter Jang <wjang@google.com> | 2015-02-09 17:56:02 -0800 |
commit | 92f8ccc1f15df787b7434224857c056721281046 (patch) | |
tree | 127c5c4d409c576840c2a09d9f932e6d97d0dffa | |
parent | 3e9a62449b8ca3a38b1d51019c6ea13972263bc2 (diff) | |
download | packages_apps_Contacts-92f8ccc1f15df787b7434224857c056721281046.tar.gz packages_apps_Contacts-92f8ccc1f15df787b7434224857c056721281046.tar.bz2 packages_apps_Contacts-92f8ccc1f15df787b7434224857c056721281046.zip |
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
4 files changed, 50 insertions, 48 deletions
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 @@ -149,6 +149,11 @@ abstract public class ContactEditorBaseFragment extends Fragment implements "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. */ public interface Listener { @@ -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. @@ -1135,6 +1141,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<Long, Boolean> mExpandedEditors = new HashMap<Long, Boolean>(); @@ -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. @@ -181,6 +162,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 // if mState is null @@ -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(); } |