diff options
author | Yorke Lee <yorkelee@google.com> | 2013-08-05 15:34:16 -0700 |
---|---|---|
committer | Yorke Lee <yorkelee@google.com> | 2013-08-05 20:40:09 -0700 |
commit | 0b6008a35a523cf8a4c4386ee4a336734acb0d15 (patch) | |
tree | 0a45f39b608728c08a14d0da0c3f058a06e5cb2d | |
parent | fb585079cc4c522c27f6dd6bf03fd296535960f3 (diff) |
Undemote contact if it is called
Change-Id: Ibcd14c7a71f73ed8c7faae07d2c50b23199ff1fd
-rw-r--r-- | src/com/android/dialer/interactions/PhoneNumberInteraction.java | 64 |
1 files changed, 46 insertions, 18 deletions
diff --git a/src/com/android/dialer/interactions/PhoneNumberInteraction.java b/src/com/android/dialer/interactions/PhoneNumberInteraction.java index 5321bc285..8c64c5f7d 100644 --- a/src/com/android/dialer/interactions/PhoneNumberInteraction.java +++ b/src/com/android/dialer/interactions/PhoneNumberInteraction.java @@ -20,6 +20,7 @@ import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.app.FragmentManager; +import android.content.ContentValues; import android.content.Context; import android.content.CursorLoader; import android.content.DialogInterface; @@ -36,6 +37,7 @@ import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.CommonDataKinds.SipAddress; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Data; +import android.provider.ContactsContract.PinnedPositions; import android.provider.ContactsContract.RawContacts; import android.view.LayoutInflater; import android.view.View; @@ -247,16 +249,27 @@ public class PhoneNumberInteraction implements OnLoadCompleteListener<Cursor> { } private static final String[] PHONE_NUMBER_PROJECTION = new String[] { - Phone._ID, - Phone.NUMBER, - Phone.IS_SUPER_PRIMARY, - RawContacts.ACCOUNT_TYPE, - RawContacts.DATA_SET, - Phone.TYPE, - Phone.LABEL, - Phone.MIMETYPE + Phone._ID, // 0 + Phone.NUMBER, // 1 + Phone.IS_SUPER_PRIMARY, // 2 + RawContacts.ACCOUNT_TYPE, // 3 + RawContacts.DATA_SET, // 4 + Phone.TYPE, // 5 + Phone.LABEL, // 6 + Phone.MIMETYPE, // 7 + Phone.CONTACT_ID // 8 }; + private static final int _ID = 0; + private static final int NUMBER = 1; + private static final int IS_SUPER_PRIMARY = 2; + private static final int ACCOUNT_TYPE = 3; + private static final int DATA_SET = 4; + private static final int TYPE = 5; + private static final int LABEL = 6; + private static final int MIMETYPE = 7; + private static final int CONTACT_ID = 8; + private static final String PHONE_NUMBER_SELECTION = Data.MIMETYPE + " IN ('" + Phone.CONTENT_ITEM_TYPE + "', " @@ -270,6 +283,9 @@ public class PhoneNumberInteraction implements OnLoadCompleteListener<Cursor> { private final String mCallOrigin; private boolean mUseDefault; + private static final int UNKNOWN_CONTACT_ID = -1; + private long mContactId = UNKNOWN_CONTACT_ID; + private CursorLoader mLoader; /** @@ -293,6 +309,15 @@ public class PhoneNumberInteraction implements OnLoadCompleteListener<Cursor> { } private void performAction(String phoneNumber) { + if (mInteractionType == ContactDisplayUtils.INTERACTION_CALL && mContactId != + UNKNOWN_CONTACT_ID) { + // Since we are making an outgoing call to this contact, undemote it here. + // If the contact is not demoted, this will not do anything. + final ContentValues cv = new ContentValues(1); + cv.put(String.valueOf(mContactId), PinnedPositions.UNDEMOTE); + mContext.getContentResolver().update(PinnedPositions.UPDATE_URI, cv, null, null); + } + PhoneNumberInteraction.performAction(mContext, phoneNumber, mInteractionType, mCallOrigin); } @@ -372,20 +397,23 @@ public class PhoneNumberInteraction implements OnLoadCompleteListener<Cursor> { String primaryPhone = null; try { while (cursor.moveToNext()) { - if (mUseDefault && cursor.getInt(cursor.getColumnIndex(Phone.IS_SUPER_PRIMARY)) != 0) { + if (mContactId == UNKNOWN_CONTACT_ID) { + mContactId = cursor.getLong(CONTACT_ID); + } + + if (mUseDefault && cursor.getInt(IS_SUPER_PRIMARY) != 0) { // Found super primary, call it. - primaryPhone = cursor.getString(cursor.getColumnIndex(Phone.NUMBER)); + primaryPhone = cursor.getString(NUMBER); } PhoneItem item = new PhoneItem(); - item.id = cursor.getLong(cursor.getColumnIndex(Data._ID)); - item.phoneNumber = cursor.getString(cursor.getColumnIndex(Phone.NUMBER)); - item.accountType = - cursor.getString(cursor.getColumnIndex(RawContacts.ACCOUNT_TYPE)); - item.dataSet = cursor.getString(cursor.getColumnIndex(RawContacts.DATA_SET)); - item.type = cursor.getInt(cursor.getColumnIndex(Phone.TYPE)); - item.label = cursor.getString(cursor.getColumnIndex(Phone.LABEL)); - item.mimeType = cursor.getString(cursor.getColumnIndex(Phone.MIMETYPE)); + item.id = cursor.getLong(_ID); + item.phoneNumber = cursor.getString(NUMBER); + item.accountType = cursor.getString(ACCOUNT_TYPE); + item.dataSet = cursor.getString(DATA_SET); + item.type = cursor.getInt(TYPE); + item.label = cursor.getString(LABEL); + item.mimeType = cursor.getString(MIMETYPE); phoneList.add(item); } |