Provide only "add phone number" option in QuickContact for SIM contact
Bug: 31547071
Test: Manually test for
1, a SIM contact;
2, linked contact from a SIM contact and a non-SIM contact;
3, linked contact all from SIM contacts.
Change-Id: Iab5b5161574d644c9a7c4289a7a3d175ae86169c
diff --git a/src/com/android/contacts/common/model/Contact.java b/src/com/android/contacts/common/model/Contact.java
index 2187b1d..c84ff2a 100644
--- a/src/com/android/contacts/common/model/Contact.java
+++ b/src/com/android/contacts/common/model/Contact.java
@@ -25,6 +25,7 @@
import android.provider.ContactsContract.DisplayNameSources;
import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.SimAccountType;
import com.android.contacts.common.util.DataStatus;
import com.android.contacts.group.GroupMetaData;
@@ -471,6 +472,19 @@
return mIsUserProfile;
}
+ /**
+ * @return true if all the raw contacts are from SIM accounts, and false otherwise.
+ */
+ public boolean areAllRawContactsSimAccounts(final Context context) {
+ if (getRawContacts() == null) return false;
+
+ for (RawContact rawContact : getRawContacts()) {
+ final AccountType accountType = rawContact.getAccountType(context);
+ if (!(accountType instanceof SimAccountType)) return false;
+ }
+ return true;
+ }
+
@Override
public String toString() {
return "{requested=" + mRequestedUri + ",lookupkey=" + mLookupKey +
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 40bcd55..b301324 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -1660,7 +1660,7 @@
mScroller);
if (contactCardEntries.size() == 0 && aboutCardEntries.size() == 0) {
- initializeNoContactDetailCard();
+ initializeNoContactDetailCard(cp2DataCardModel.areAllRawContactsSimAccounts);
} else {
mNoContactDetailsCard.setVisibility(View.GONE);
}
@@ -1681,8 +1681,9 @@
/**
* Create a card that shows "Add email" and "Add phone number" entries in grey.
+ * When contact is a SIM contact, only shows "Add phone number".
*/
- private void initializeNoContactDetailCard() {
+ private void initializeNoContactDetailCard(boolean areAllRawContactsSimAccounts) {
final Drawable phoneIcon = getResources().getDrawable(
R.drawable.ic_phone_24dp).mutate();
final Entry phonePromptEntry = new Entry(CARD_ENTRY_ID_EDIT_CONTACT,
@@ -1699,25 +1700,28 @@
/* thirdExtras = */ null,
R.drawable.ic_phone_24dp);
- final Drawable emailIcon = getResources().getDrawable(
- R.drawable.ic_email_24dp).mutate();
- final Entry emailPromptEntry = new Entry(CARD_ENTRY_ID_EDIT_CONTACT,
- emailIcon, getString(R.string.quickcontact_add_email), /* subHeader = */ null,
- /* subHeaderIcon = */ null,
- /* text = */ null, /* textIcon = */ null, /* primaryContentDescription = */ null,
- getEditContactIntent(), /* alternateIcon = */ null,
- /* alternateIntent = */ null, /* alternateContentDescription = */ null,
- /* shouldApplyColor = */ true, /* isEditable = */ false,
- /* EntryContextMenuInfo = */ null, /* thirdIcon = */ null,
- /* thirdIntent = */ null, /* thirdContentDescription = */ null,
- /* thirdAction = */ Entry.ACTION_NONE, /* thirdExtras = */ null,
- R.drawable.ic_email_24dp);
-
final List<List<Entry>> promptEntries = new ArrayList<>();
promptEntries.add(new ArrayList<Entry>(1));
- promptEntries.add(new ArrayList<Entry>(1));
promptEntries.get(0).add(phonePromptEntry);
- promptEntries.get(1).add(emailPromptEntry);
+
+ if (!areAllRawContactsSimAccounts) {
+ final Drawable emailIcon = getResources().getDrawable(
+ R.drawable.ic_email_24dp).mutate();
+ final Entry emailPromptEntry = new Entry(CARD_ENTRY_ID_EDIT_CONTACT,
+ emailIcon, getString(R.string.quickcontact_add_email), /* subHeader = */ null,
+ /* subHeaderIcon = */ null,
+ /* text = */ null, /* textIcon = */ null, /* primaryContentDescription = */ null,
+ getEditContactIntent(), /* alternateIcon = */ null,
+ /* alternateIntent = */ null, /* alternateContentDescription = */ null,
+ /* shouldApplyColor = */ true, /* isEditable = */ false,
+ /* EntryContextMenuInfo = */ null, /* thirdIcon = */ null,
+ /* thirdIntent = */ null, /* thirdContentDescription = */ null,
+ /* thirdAction = */ Entry.ACTION_NONE, /* thirdExtras = */ null,
+ R.drawable.ic_email_24dp);
+
+ promptEntries.add(new ArrayList<Entry>(1));
+ promptEntries.get(1).add(emailPromptEntry);
+ }
final int subHeaderTextColor = getResources().getColor(
R.color.quickcontact_entry_sub_header_text_color);
@@ -1828,6 +1832,7 @@
dataModel.aboutCardEntries = aboutCardEntries;
dataModel.contactCardEntries = contactCardEntries;
dataModel.dataItemsMap = dataItemsMap;
+ dataModel.areAllRawContactsSimAccounts = data.areAllRawContactsSimAccounts(this);
return dataModel;
}
@@ -1844,6 +1849,7 @@
public List<List<Entry>> aboutCardEntries;
public List<List<Entry>> contactCardEntries;
public String customAboutCardName;
+ public boolean areAllRawContactsSimAccounts;
}
private static class MutableString {