Making contact list focusable even when filtering is disabled.
The track ball should still be working in that case.
Change-Id: Iea88f20badee00a9de9e401a2d0218e1a99f984c
diff --git a/src/com/android/contacts/ContactsListActivity.java b/src/com/android/contacts/ContactsListActivity.java
index 079b890..1361ae5 100644
--- a/src/com/android/contacts/ContactsListActivity.java
+++ b/src/com/android/contacts/ContactsListActivity.java
@@ -44,7 +44,6 @@
import android.content.res.Resources;
import android.database.CharArrayBuffer;
import android.database.Cursor;
-import android.database.DatabaseUtils;
import android.database.MatrixCursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
@@ -831,7 +830,6 @@
// Tell list view to not show dividers. We'll do it ourself so that we can *not* show
// them when an A-Z headers is visible.
list.setDividerHeight(0);
- list.setFocusable((mMode & MODE_MASK_NO_FILTER) == 0);
list.setOnCreateContextMenuListener(this);
mAdapter = new ContactItemListAdapter(this);
@@ -1561,25 +1559,29 @@
mWritableRawContactIds.clear();
if (mSelectedContactUri != null) {
+ Sources sources = Sources.getInstance(ContactsListActivity.this);
Cursor c = getContentResolver().query(RawContacts.CONTENT_URI, RAW_CONTACTS_PROJECTION,
RawContacts.CONTACT_ID + "=" + ContentUris.parseId(mSelectedContactUri), null,
null);
- Sources sources = Sources.getInstance(ContactsListActivity.this);
if (c != null) {
- while (c.moveToNext()) {
- final String accountType = c.getString(2);
- final long rawContactId = c.getLong(0);
- ContactsSource contactsSource = sources.getInflatedSource(accountType,
- ContactsSource.LEVEL_SUMMARY);
- if (contactsSource != null && contactsSource.readOnly) {
- mReadOnlySourcesCnt += 1;
- } else {
- mWritableSourcesCnt += 1;
- mWritableRawContactIds.add(rawContactId);
+ try {
+ while (c.moveToNext()) {
+ final String accountType = c.getString(2);
+ final long rawContactId = c.getLong(0);
+ ContactsSource contactsSource = sources.getInflatedSource(accountType,
+ ContactsSource.LEVEL_SUMMARY);
+ if (contactsSource != null && contactsSource.readOnly) {
+ mReadOnlySourcesCnt += 1;
+ } else {
+ mWritableSourcesCnt += 1;
+ mWritableRawContactIds.add(rawContactId);
+ }
}
+ } finally {
+ c.close();
}
}
- c.close();
+
if (mReadOnlySourcesCnt > 0 && mWritableSourcesCnt > 0) {
showDialog(R.id.dialog_readonly_contact_delete_confirmation);
} else if (mReadOnlySourcesCnt > 0 && mWritableSourcesCnt == 0) {