summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/calllog/database
diff options
context:
space:
mode:
authorZachary Heidepriem <zachh@google.com>2017-10-11 16:03:06 -0700
committerZachary Heidepriem <zachh@google.com>2017-10-11 16:03:06 -0700
commita0df9f7f52b4d7f926581f30bd0a7774a6abac43 (patch)
treec83d8715c6c6ed61423c285bb71b8fe71e1bad5c /java/com/android/dialer/calllog/database
parent36a5f1a127ca18869cd25cef0315076591a0b518 (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')
-rw-r--r--java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java5
-rw-r--r--java/com/android/dialer/calllog/database/Coalescer.java23
-rw-r--r--java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java38
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";
}
/**