Merge "Fix typo in singleTop compact contact editor Activity"
diff --git a/res/layout/selection_bar.xml b/res/layout/selection_bar.xml
index e91311f..e6b1f66 100644
--- a/res/layout/selection_bar.xml
+++ b/res/layout/selection_bar.xml
@@ -13,13 +13,11 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<LinearLayout
+<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/selection_bar"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:orientation="horizontal"
- android:gravity="center_vertical"
android:background="@color/contextual_selection_bar_color" >
<ImageButton
@@ -29,13 +27,16 @@
android:src="@drawable/ic_close_dk"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/action_menu_back_from_search"
+ android:layout_gravity="center_vertical|start"
android:tint="@android:color/white" />
<TextView
android:id="@+id/selection_count_text"
+ android:layout_marginStart="72dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
+ android:layout_gravity="center_vertical|start"
style="@style/ContactsActionBarTitleText" />
-</LinearLayout>
+</FrameLayout>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 787828a..8ebf1fc 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -165,8 +165,11 @@
<!-- List separator for the Join Contact list: A-Z -->
<string name="separatorJoinAggregateAll">All contacts</string>
- <!-- Toast shown after two contacts have been joined by a user action -->
- <string name="contactsJoinedMessage">Contacts joined</string>
+ <!-- Toast shown after two contacts have been joined by a user action. [CHAR LIMIT=NONE] -->
+ <string name="contactsJoinedMessage">Contacts merged</string>
+
+ <!-- Toast shown after contacts that the user has selected are deleted by a user action. [CHAR LIMIT=NONE] -->
+ <string name="contacts_deleted_toast">Contacts deleted</string>
<!-- Menu item that opens the Options activity for a given contact [CHAR LIMIT=15] -->
<string name="menu_set_ring_tone">Set ringtone</string>
diff --git a/src/com/android/contacts/ContactSaveService.java b/src/com/android/contacts/ContactSaveService.java
index cf36edf..d81867c 100644
--- a/src/com/android/contacts/ContactSaveService.java
+++ b/src/com/android/contacts/ContactSaveService.java
@@ -982,7 +982,7 @@
final Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
getContentResolver().delete(contactUri, null, null);
}
-
+ showToast(R.string.contacts_deleted_toast);
}
/**
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index a272f56..4770909 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -945,6 +945,11 @@
mActionBarAdapter.setSelectionCount(mAllFragment.getSelectedContactIds().size());
invalidateOptionsMenu();
}
+
+ @Override
+ public void onStopDisplayingCheckBoxes() {
+ mActionBarAdapter.setSelectionMode(false);
+ }
}
private class ContactsUnavailableFragmentListener
diff --git a/src/com/android/contacts/list/MultiSelectContactsListFragment.java b/src/com/android/contacts/list/MultiSelectContactsListFragment.java
index 75a6863..a58a8ee 100644
--- a/src/com/android/contacts/list/MultiSelectContactsListFragment.java
+++ b/src/com/android/contacts/list/MultiSelectContactsListFragment.java
@@ -37,6 +37,7 @@
public interface OnCheckBoxListActionListener {
void onStartDisplayingCheckBoxes();
void onSelectedContactIdsChanged();
+ void onStopDisplayingCheckBoxes();
}
private static final String EXTRA_KEY_SELECTED_CONTACTS = "selected_contacts";
@@ -55,6 +56,16 @@
}
@Override
+ public void onSelectedContactsChangedViaCheckBox() {
+ if (getAdapter().getSelectedContactIds().size() == 0) {
+ // Last checkbox has been unchecked. So we should stop displaying checkboxes.
+ mCheckBoxListListener.onStopDisplayingCheckBoxes();
+ } else {
+ onSelectedContactsChanged();
+ }
+ }
+
+ @Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
@@ -102,17 +113,23 @@
@Override
protected boolean onItemLongClick(int position, long id) {
- final MultiSelectEntryContactListAdapter adapter = getAdapter();
- if (mCheckBoxListListener != null) {
- mCheckBoxListListener.onStartDisplayingCheckBoxes();
- }
+ final int previouslySelectedCount = getAdapter().getSelectedContactIds().size();
final Uri uri = getAdapter().getContactUri(position);
if (uri != null && (position > 0 || !getAdapter().hasProfile())) {
final String contactId = uri.getLastPathSegment();
if (!TextUtils.isEmpty(contactId)) {
+ if (mCheckBoxListListener != null) {
+ mCheckBoxListListener.onStartDisplayingCheckBoxes();
+ }
getAdapter().toggleSelectionOfContactId(Long.valueOf(contactId));
}
}
+ final int nowSelectedCount = getAdapter().getSelectedContactIds().size();
+ if (mCheckBoxListListener != null
+ && previouslySelectedCount != 0 && nowSelectedCount == 0) {
+ // Last checkbox has been unchecked. So we should stop displaying checkboxes.
+ mCheckBoxListListener.onStopDisplayingCheckBoxes();
+ }
return true;
}
@@ -130,6 +147,9 @@
} else {
super.onItemClick(position, id);
}
+ if (mCheckBoxListListener != null && getAdapter().getSelectedContactIds().size() == 0) {
+ mCheckBoxListListener.onStopDisplayingCheckBoxes();
+ }
}
@Override
diff --git a/src/com/android/contacts/list/MultiSelectEntryContactListAdapter.java b/src/com/android/contacts/list/MultiSelectEntryContactListAdapter.java
index 4748dc4..7c6f7bc 100644
--- a/src/com/android/contacts/list/MultiSelectEntryContactListAdapter.java
+++ b/src/com/android/contacts/list/MultiSelectEntryContactListAdapter.java
@@ -39,6 +39,7 @@
public interface SelectedContactsListener {
void onSelectedContactsChanged();
+ void onSelectedContactsChangedViaCheckBox();
}
public MultiSelectEntryContactListAdapter(Context context) {
@@ -139,7 +140,7 @@
mSelectedContactIds.remove(contactId);
}
if (mSelectedContactsListener != null) {
- mSelectedContactsListener.onSelectedContactsChanged();
+ mSelectedContactsListener.onSelectedContactsChangedViaCheckBox();
}
}
};