Merge "Don't hide types when associated label is empty" into ub-contactsdialer-a-dev
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 20c4419..5416672 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -271,7 +271,10 @@
<string name="savingContact">Saving contact\u2026</string>
<!-- Toast displayed when a contact is saved [CHAR LIMIT=NONE] -->
- <string name="contactSavedToast">Contact saved.</string>
+ <string name="contactSavedToast">Contact saved</string>
+
+ <!-- Toast displayed when linked contacts get unlinked [CHAR LIMIT=NONE] -->
+ <string name="contactUnlinkedToast">Contacts unlinked</string>
<!-- Toast displayed when saving a contact failed. [CHAR LIMIT=NONE] -->
<string name="contactSavedErrorToast">Couldn\'t save contact changes.</string>
diff --git a/src/com/android/contacts/editor/ContactEditorBaseFragment.java b/src/com/android/contacts/editor/ContactEditorBaseFragment.java
index b091249..91fc81f 100644
--- a/src/com/android/contacts/editor/ContactEditorBaseFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorBaseFragment.java
@@ -123,7 +123,6 @@
private static final String KEY_HAS_NEW_CONTACT = "hasNewContact";
private static final String KEY_NEW_CONTACT_READY = "newContactDataReady";
- private static final String KEY_NEW_CONTACT_ACCOUNT_CHANGED = "newContactAccountChanged";
private static final String KEY_IS_EDIT = "isEdit";
private static final String KEY_EXISTING_CONTACT_READY = "existingContactDataReady";
@@ -497,7 +496,6 @@
mHasNewContact = savedState.getBoolean(KEY_HAS_NEW_CONTACT);
mNewContactDataReady = savedState.getBoolean(KEY_NEW_CONTACT_READY);
- mNewContactAccountChanged = savedState.getBoolean(KEY_NEW_CONTACT_ACCOUNT_CHANGED);
mIsEdit = savedState.getBoolean(KEY_IS_EDIT);
mExistingContactDataReady = savedState.getBoolean(KEY_EXISTING_CONTACT_READY);
@@ -615,7 +613,6 @@
outState.putInt(KEY_STATUS, mStatus);
outState.putBoolean(KEY_HAS_NEW_CONTACT, mHasNewContact);
outState.putBoolean(KEY_NEW_CONTACT_READY, mNewContactDataReady);
- outState.putBoolean(KEY_NEW_CONTACT_ACCOUNT_CHANGED, mNewContactAccountChanged);
outState.putBoolean(KEY_IS_EDIT, mIsEdit);
outState.putBoolean(KEY_EXISTING_CONTACT_READY, mExistingContactDataReady);
outState.putBoolean(KEY_RAW_CONTACT_DISPLAY_ALONE_IS_READ_ONLY,
@@ -917,10 +914,7 @@
mStatus = Status.SAVING;
- // If the user did nothing else expect change the account type, we must still
- // consider this as an unsaved change so the new rawcontact is passed back to the
- // compact editor on inserts.
- if (!mNewContactAccountChanged && !hasPendingChanges()) {
+ if (!hasPendingChanges()) {
if (mLookupUri == null && saveMode == SaveMode.RELOAD) {
// We don't have anything to save and there isn't even an existing contact yet.
// Nothing to do, simply go back to editing mode
@@ -1405,9 +1399,18 @@
Uri contactLookupUri) {
if (hadChanges) {
if (saveSucceeded) {
- if (saveMode != SaveMode.JOIN) {
- Toast.makeText(mContext, R.string.contactSavedToast, Toast.LENGTH_SHORT).show();
+ switch (saveMode) {
+ case SaveMode.JOIN:
+ break;
+ case SaveMode.SPLIT:
+ Toast.makeText(mContext, R.string.contactUnlinkedToast, Toast.LENGTH_SHORT)
+ .show();
+ break;
+ default:
+ Toast.makeText(mContext, R.string.contactSavedToast, Toast.LENGTH_SHORT)
+ .show();
}
+
} else {
Toast.makeText(mContext, R.string.contactSavedErrorToast, Toast.LENGTH_LONG).show();
}
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index a3830ef..c17099c 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -411,7 +411,6 @@
UiClosables.closeQuietly(popup);
AccountWithDataSet newAccount = adapter.getItem(position);
if (!newAccount.equals(currentAccount)) {
- mNewContactAccountChanged = true;
rebindEditorsForNewContact(currentState, currentAccount, newAccount);
}
}
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 272bc27..5daf25a 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -497,6 +497,10 @@
mExpandSuggestionCardView.setVisibility(View.GONE);
mSuggestionList.removeAllViews();
+ if (mContactData == null) {
+ return;
+ }
+
final String suggestionForName = mContactData.getDisplayName();
final int suggestionNumber = mSuggestions.size();
@@ -527,9 +531,13 @@
mSuggestionForName.setText(suggestionForName);
final int linkedContactsNumber = mContactData.getRawContacts().size();
final String contactsInfo;
- if (linkedContactsNumber == 1) {
+ final String accountName = mContactData.getRawContacts().get(0).getAccountName();
+ if (linkedContactsNumber == 1 && accountName == null) {
+ mSuggestionContactsNumber.setVisibility(View.INVISIBLE);
+ }
+ if (linkedContactsNumber == 1 && accountName != null) {
contactsInfo = getResources().getString(R.string.contact_from_account_name,
- mContactData.getRawContacts().get(0).getAccountName());
+ accountName);
} else {
contactsInfo = getResources().getString(
R.string.quickcontact_contacts_number, linkedContactsNumber);
@@ -552,6 +560,9 @@
final Set<Long> selectedSuggestionIds = com.google.common.collect.Sets.intersection(
mSelectedAggregationIds, suggestionContactIds);
mSelectedAggregationIds = new TreeSet<>(selectedSuggestionIds);
+ if (!mSelectedAggregationIds.isEmpty()) {
+ enableLinkButton();
+ }
}
private void collapseSuggestionList() {
@@ -594,7 +605,7 @@
accountNameView.setText(
getResources().getString(R.string.contact_from_account_name, accountName));
} else {
- accountNameView.setVisibility(View.GONE);
+ accountNameView.setVisibility(View.INVISIBLE);
}
final CheckBox checkbox = (CheckBox) suggestionView.findViewById(R.id.suggestion_checkbox);