am 9f41e7d8: am e3d55cfb: am f19dda97: Disables the delete menu option on "insert or edit" actions

* commit '9f41e7d8686f1ce7600f956ecf719be410bd3e45':
  Disables the delete menu option on "insert or edit" actions
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index f112847..ed2520d 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -125,6 +125,7 @@
     private static final String KEY_STATUS = "status";
     private static final String KEY_NEW_LOCAL_PROFILE = "newLocalProfile";
     private static final String KEY_IS_USER_PROFILE = "isUserProfile";
+    private static final String KEY_DISABLE_DELETE_MENU_OPTION = "disableDeleteMenuOption";
     private static final String KEY_UPDATED_PHOTOS = "updatedPhotos";
     private static final String KEY_IS_EDIT = "isEdit";
     private static final String KEY_HAS_NEW_CONTACT = "hasNewContact";
@@ -146,6 +147,9 @@
 
     public static final String INTENT_EXTRA_NEW_LOCAL_PROFILE = "newLocalProfile";
 
+    public static final String INTENT_EXTRA_DISABLE_DELETE_MENU_OPTION =
+            "disableDeleteMenuOption";
+
     /**
      * Modes that specify what the AsyncTask has to perform after saving
      */
@@ -339,6 +343,7 @@
     private boolean mRequestFocus;
     private boolean mNewLocalProfile = false;
     private boolean mIsUserProfile = false;
+    private boolean mDisableDeleteMenuOption = false;
 
     public ContactEditorFragment() {
     }
@@ -471,6 +476,8 @@
                 && mIntentExtras.containsKey(INTENT_EXTRA_ADD_TO_DEFAULT_DIRECTORY);
         mNewLocalProfile = mIntentExtras != null
                 && mIntentExtras.getBoolean(INTENT_EXTRA_NEW_LOCAL_PROFILE);
+        mDisableDeleteMenuOption = mIntentExtras != null
+                && mIntentExtras.getBoolean(INTENT_EXTRA_DISABLE_DELETE_MENU_OPTION);
     }
 
     public void setListener(Listener value) {
@@ -504,6 +511,7 @@
             mEnabled = savedState.getBoolean(KEY_ENABLED);
             mStatus = savedState.getInt(KEY_STATUS);
             mNewLocalProfile = savedState.getBoolean(KEY_NEW_LOCAL_PROFILE);
+            mDisableDeleteMenuOption = savedState.getBoolean(KEY_DISABLE_DELETE_MENU_OPTION);
             mIsUserProfile = savedState.getBoolean(KEY_IS_USER_PROFILE);
             mUpdatedPhotos = savedState.getParcelable(KEY_UPDATED_PHOTOS);
             mIsEdit = savedState.getBoolean(KEY_IS_EDIT);
@@ -1072,6 +1080,7 @@
             splitMenu.setVisible(mState.size() > 1 && !isEditingUserProfile());
             // Cannot join a user profile
             joinMenu.setVisible(!isEditingUserProfile());
+            deleteMenu.setVisible(!mDisableDeleteMenuOption);
         } else {
             // something else, so don't show the help menu
             helpMenu.setVisible(false);
@@ -1767,6 +1776,7 @@
         outState.putLong(KEY_SHOW_JOIN_SUGGESTIONS, mAggregationSuggestionsRawContactId);
         outState.putBoolean(KEY_ENABLED, mEnabled);
         outState.putBoolean(KEY_NEW_LOCAL_PROFILE, mNewLocalProfile);
+        outState.putBoolean(KEY_DISABLE_DELETE_MENU_OPTION, mDisableDeleteMenuOption);
         outState.putBoolean(KEY_IS_USER_PROFILE, mIsUserProfile);
         outState.putInt(KEY_STATUS, mStatus);
         outState.putParcelable(KEY_UPDATED_PHOTOS, mUpdatedPhotos);
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index d7c0c45..eda9a91 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -125,6 +125,7 @@
 import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette;
 import com.android.contacts.common.util.ViewUtil;
 import com.android.contacts.detail.ContactDisplayUtils;
+import com.android.contacts.editor.ContactEditorFragment;
 import com.android.contacts.interactions.CalendarInteractionsLoader;
 import com.android.contacts.interactions.CallLogInteractionsLoader;
 import com.android.contacts.interactions.ContactDeletionInteraction;
@@ -141,7 +142,6 @@
 import com.android.contacts.widget.MultiShrinkScroller;
 import com.android.contacts.widget.MultiShrinkScroller.MultiShrinkScrollerListener;
 import com.android.contacts.widget.QuickContactImageView;
-
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
@@ -771,6 +771,10 @@
     }
 
     private void processIntent(Intent intent) {
+        if (intent == null) {
+            finish();
+            return;
+        }
         Uri lookupUri = intent.getData();
 
         // Check to see whether it comes from the old version.
@@ -2162,6 +2166,11 @@
                                 mContactData.getRawContacts().get(0).getDataSet());
                     }
 
+                    // Add this flag to disable the delete menu option on directory contact joins
+                    // with local contacts. The delete option is ambiguous when joining contacts.
+                    intent.putExtra(ContactEditorFragment.INTENT_EXTRA_DISABLE_DELETE_MENU_OPTION,
+                            true);
+
                     startActivityForResult(intent, REQUEST_CODE_CONTACT_SELECTION_ACTIVITY);
                 } else if (InvisibleContactUtil.isInvisibleAndAddable(mContactData, this)) {
                     InvisibleContactUtil.addToDefaultGroup(mContactData, this);