summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYorke Lee <yorkelee@google.com>2013-08-12 17:04:22 -0700
committerYorke Lee <yorkelee@google.com>2013-08-13 11:50:16 -0700
commit4e741192ec40278d9189b46cf2ae6bc547d9071d (patch)
tree10cf42358e6ebeeaee9d142a0daac798fcf688d0 /src
parent598e9a685606fa18c49defca69ee9521eb4ed473 (diff)
Make frequent numbers behave like favorites
Remove duplicate frequently called numbers from the same contact, and also remove the phone number associated with the frequent tile entirely so that they behave like favorites. Change-Id: I188cf044528056ececbbc3e0b17a945155daa4e4
Diffstat (limited to 'src')
-rw-r--r--src/com/android/dialer/list/PhoneFavoritesTileAdapter.java64
1 files changed, 46 insertions, 18 deletions
diff --git a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
index 614a0d319..9234535af 100644
--- a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
+++ b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
@@ -26,7 +26,9 @@ import android.net.Uri;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.PinnedPositions;
+import android.text.TextUtils;
import android.util.Log;
+import android.util.LongSparseArray;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
@@ -99,6 +101,8 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter {
/**
* Only valid when {@link DisplayType#STREQUENT_PHONE_ONLY} is true
+ *
+ * TODO krelease: Remove entirely if not needed
*/
private int mPhoneNumberIndex;
private int mPhoneNumberTypeIndex;
@@ -235,38 +239,62 @@ public class PhoneFavoritesTileAdapter extends BaseAdapter {
mContactEntries.clear();
cursor.moveToPosition(-1);
- while (cursor.moveToNext()) {
- final long id = cursor.getLong(mIdIndex);
- final String photoUri = cursor.getString(mPhotoUriIndex);
- final String lookupKey = cursor.getString(mLookupIndex);
+ final LongSparseArray<Object> duplicates = new LongSparseArray<Object>(cursor.getCount());
- final ContactEntry contact = new ContactEntry();
+ // Dummy object that we're inserting into the sparse array as a value so that we can use
+ // the sparse array as a set to check for duplicates
- final int pinned = cursor.getInt(mPinnedIndex);
- final int starred = cursor.getInt(mStarredIndex);
+ final Object dummy = new Object();
- final String name = cursor.getString(mNameIndex);
+ while (cursor.moveToNext()) {
+
+ final int starred = cursor.getInt(mStarredIndex);
+ final long id;
if (starred > 0) {
- contact.id = id;
+ id = cursor.getLong(mIdIndex);
} else {
// The contact id for frequent contacts is stored in the .contact_id field rather
// than the _id field
- contact.id = cursor.getLong(mContactIdForFrequentIndex);
+ id = cursor.getLong(mContactIdForFrequentIndex);
}
- contact.name = (name != null) ? name : mResources.getString(R.string.missing_name);
- contact.status = cursor.getString(mStatusIndex);
+
+ if (duplicates.get(id) == null) {
+ duplicates.put(id, dummy);
+ } else {
+ continue;
+ }
+
+ final String photoUri = cursor.getString(mPhotoUriIndex);
+ final String lookupKey = cursor.getString(mLookupIndex);
+ final int pinned = cursor.getInt(mPinnedIndex);
+ final String name = cursor.getString(mNameIndex);
+
+ final ContactEntry contact = new ContactEntry();
+
+ contact.id = id;
+ contact.name = (!TextUtils.isEmpty(name)) ? name :
+ mResources.getString(R.string.missing_name);
contact.photoUri = (photoUri != null ? Uri.parse(photoUri) : null);
contact.lookupKey = ContentUris.withAppendedId(
Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey), id);
- // Set phone number and label
- final int phoneNumberType = cursor.getInt(mPhoneNumberTypeIndex);
- final String phoneNumberCustomLabel = cursor.getString(mPhoneNumberLabelIndex);
- contact.phoneLabel = (String) Phone.getTypeLabel(mResources, phoneNumberType,
- phoneNumberCustomLabel);
- contact.phoneNumber = cursor.getString(mPhoneNumberIndex);
+
+ // TODO krelease: These columns are temporarily unused for now so that
+ // the contact tiles will be treated like favorites since they don't have a phone
+ // number. Depending on how the final UX goes we will either remove or enable
+ // them again.
+
+ /*
+ // Set phone number, label and status
+ final int phoneNumberType = cursor.getInt(mPhoneNumberTypeIndex);
+ final String phoneNumberCustomLabel = cursor.getString(mPhoneNumberLabelIndex);
+ contact.phoneLabel = (String) Phone.getTypeLabel(mResources, phoneNumberType,
+ phoneNumberCustomLabel);
+ contact.phoneNumber = cursor.getString(mPhoneNumberIndex);
+ contact.status = cursor.getString(mStatusIndex);
+ */
contact.pinned = pinned;
mContactEntries.add(contact);