diff options
author | Zachary Heidepriem <zachh@google.com> | 2017-10-11 16:03:06 -0700 |
---|---|---|
committer | Zachary Heidepriem <zachh@google.com> | 2017-10-11 16:03:06 -0700 |
commit | a0df9f7f52b4d7f926581f30bd0a7774a6abac43 (patch) | |
tree | c83d8715c6c6ed61423c285bb71b8fe71e1bad5c /java/com/android/dialer/calllog/database | |
parent | 36a5f1a127ca18869cd25cef0315076591a0b518 (diff) |
Added basic bottom sheet to new call log.
Also added ability to click on row to call.
Required plumbing through the original phone number and phone account info through AnnotatedCallLog and CoalescedAnnotatedCallLog, so that clicking to dial doesn't require an additional lookup.
Required some refactoring:
-created autovalue for CoalescedRow.
-created autovalue for ContactPrimaryActionInfo and use it in ContactActionBottomSheet
-moved logic for building primary and secondary text into CallLogUtils so it can be shared between call log list and bottom sheets
-moved clipboard logic to own package for copying numbers
Bug: 34672501
Test: unit
PiperOrigin-RevId: 171760252
Change-Id: I645d89974460b611c1d9668c3ca3e50a716c7f8f
Diffstat (limited to 'java/com/android/dialer/calllog/database')
3 files changed, 43 insertions, 23 deletions
diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java index 40d922f41..a5f1425f8 100644 --- a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java +++ b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java @@ -39,6 +39,7 @@ class AnnotatedCallLogDatabaseHelper extends SQLiteOpenHelper { .append(AnnotatedCallLog._ID + " integer primary key, ") .append(AnnotatedCallLog.TIMESTAMP + " integer, ") .append(AnnotatedCallLog.NAME + " string, ") + .append(AnnotatedCallLog.NUMBER + " blob, ") .append(AnnotatedCallLog.FORMATTED_NUMBER + " string, ") .append(AnnotatedCallLog.PHOTO_URI + " string, ") .append(AnnotatedCallLog.PHOTO_ID + " integer, ") @@ -47,13 +48,13 @@ class AnnotatedCallLogDatabaseHelper extends SQLiteOpenHelper { .append(AnnotatedCallLog.IS_READ + " integer, ") .append(AnnotatedCallLog.NEW + " integer, ") .append(AnnotatedCallLog.GEOCODED_LOCATION + " string, ") + .append(AnnotatedCallLog.PHONE_ACCOUNT_COMPONENT_NAME + " string, ") + .append(AnnotatedCallLog.PHONE_ACCOUNT_ID + " string, ") .append(AnnotatedCallLog.PHONE_ACCOUNT_LABEL + " string, ") .append(AnnotatedCallLog.PHONE_ACCOUNT_COLOR + " integer, ") .append(AnnotatedCallLog.FEATURES + " integer, ") .append(AnnotatedCallLog.IS_BUSINESS + " integer, ") .append(AnnotatedCallLog.IS_VOICEMAIL + " integer, ") - // Columns only in AnnotatedCallLog - .append(AnnotatedCallLog.NUMBER + " blob, ") .append(AnnotatedCallLog.CALL_TYPE + " integer") .append(");") .toString(); diff --git a/java/com/android/dialer/calllog/database/Coalescer.java b/java/com/android/dialer/calllog/database/Coalescer.java index 63fa9f828..a8a8f2f1d 100644 --- a/java/com/android/dialer/calllog/database/Coalescer.java +++ b/java/com/android/dialer/calllog/database/Coalescer.java @@ -20,11 +20,13 @@ import android.database.Cursor; import android.database.MatrixCursor; import android.support.annotation.NonNull; import android.support.annotation.WorkerThread; +import android.telecom.PhoneAccountHandle; import com.android.dialer.DialerPhoneNumber; import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog; import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.CoalescedAnnotatedCallLog; import com.android.dialer.calllog.datasources.CallLogDataSource; import com.android.dialer.calllog.datasources.DataSources; +import com.android.dialer.calllogutils.PhoneAccountUtils; import com.android.dialer.common.Assert; import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil; import com.google.i18n.phonenumbers.PhoneNumberUtil; @@ -131,11 +133,19 @@ public class Coalescer { private static boolean rowsShouldBeCombined( DialerPhoneNumberUtil dialerPhoneNumberUtil, ContentValues row1, ContentValues row2) { // Don't combine rows which don't use the same phone account. - if (!Objects.equals( - row1.getAsString(AnnotatedCallLog.PHONE_ACCOUNT_LABEL), - row2.getAsString(AnnotatedCallLog.PHONE_ACCOUNT_LABEL))) { + PhoneAccountHandle phoneAccount1 = + PhoneAccountUtils.getAccount( + row1.getAsString(AnnotatedCallLog.PHONE_ACCOUNT_COMPONENT_NAME), + row1.getAsString(AnnotatedCallLog.PHONE_ACCOUNT_ID)); + PhoneAccountHandle phoneAccount2 = + PhoneAccountUtils.getAccount( + row2.getAsString(AnnotatedCallLog.PHONE_ACCOUNT_COMPONENT_NAME), + row2.getAsString(AnnotatedCallLog.PHONE_ACCOUNT_ID)); + + if (!Objects.equals(phoneAccount1, phoneAccount2)) { return false; } + DialerPhoneNumber number1; DialerPhoneNumber number2; try { @@ -153,13 +163,8 @@ public class Coalescer { throw Assert.createAssertionFailException("error parsing DialerPhoneNumber proto", e); } - if (!number1.hasDialerInternalPhoneNumber() && !number2.hasDialerInternalPhoneNumber()) { - // Empty numbers should not be combined. - return false; - } - if (!number1.hasDialerInternalPhoneNumber() || !number2.hasDialerInternalPhoneNumber()) { - // An empty number should not be combined with a non-empty number. + // An empty number should not be combined with any other number. return false; } return dialerPhoneNumberUtil.isExactMatch(number1, number2); diff --git a/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java index d466da9ae..e79ffd090 100644 --- a/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java +++ b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java @@ -52,6 +52,15 @@ public class AnnotatedCallLogContract { String NAME = "name"; /** + * The phone number called or number the call came from, encoded as a {@link + * com.android.dialer.DialerPhoneNumber} proto. The number may be empty if it was an incoming + * call and the number was unknown. + * + * <p>Type: BLOB + */ + String NUMBER = "number"; + + /** * Copied from {@link android.provider.CallLog.Calls#CACHED_FORMATTED_NUMBER}. * * <p>Type: TEXT @@ -112,6 +121,20 @@ public class AnnotatedCallLogContract { String GEOCODED_LOCATION = "geocoded_location"; /** + * See {@link android.provider.CallLog.Calls#PHONE_ACCOUNT_COMPONENT_NAME}. + * + * <p>TYPE: TEXT + */ + String PHONE_ACCOUNT_COMPONENT_NAME = "phone_account_component_name"; + + /** + * See {@link android.provider.CallLog.Calls#PHONE_ACCOUNT_ID}. + * + * <p>TYPE: TEXT + */ + String PHONE_ACCOUNT_ID = "phone_account_id"; + + /** * String suitable for display which indicates the phone account used to make the call. * * <p>TYPE: TEXT @@ -160,6 +183,7 @@ public class AnnotatedCallLogContract { _ID, TIMESTAMP, NAME, + NUMBER, FORMATTED_NUMBER, PHOTO_URI, PHOTO_ID, @@ -168,6 +192,8 @@ public class AnnotatedCallLogContract { IS_READ, NEW, GEOCODED_LOCATION, + PHONE_ACCOUNT_COMPONENT_NAME, + PHONE_ACCOUNT_ID, PHONE_ACCOUNT_LABEL, PHONE_ACCOUNT_COLOR, FEATURES, @@ -192,18 +218,6 @@ public class AnnotatedCallLogContract { /** The MIME type of a {@link android.content.ContentProvider#getType(Uri)} single entry. */ public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/annotated_call_log"; - - /** - * The phone number called or number the call came from, encoded as a {@link - * com.android.dialer.DialerPhoneNumber} proto. The number may be empty if it was an incoming - * call and the number was unknown. - * - * <p>This column is only present in the annotated call log, and not the coalesced annotated - * call log. The coalesced version uses a formatted number string rather than proto bytes. - * - * <p>Type: BLOB - */ - public static final String NUMBER = "number"; } /** |