From 4ceafab5f9a2d7bf599ed90d9e6cec9a383f088e Mon Sep 17 00:00:00 2001 From: erfanian Date: Tue, 2 Jan 2018 14:18:05 -0800 Subject: Add assisted dialing indicators to the old call log. Modify the call log grouping strategy. The strategy is as follows: When comparing the current group to the next candidate to add to that group, if the assisted dialing feature tag differs between the two, create a new group. Thus, if a call has other features like wifi or hd, we ignore those features when making grouping decisions. Bug: 70506228 Test: unit tests PiperOrigin-RevId: 180592125 Change-Id: I73d130bd9eb23706a04cb02f5711200729d978b6 --- .../dialer/app/calllog/CallLogGroupBuilder.java | 20 +++++++++++++++----- .../dialer/app/calllog/PhoneCallDetailsHelper.java | 4 ++++ 2 files changed, 19 insertions(+), 5 deletions(-) (limited to 'java/com/android/dialer/app/calllog') diff --git a/java/com/android/dialer/app/calllog/CallLogGroupBuilder.java b/java/com/android/dialer/app/calllog/CallLogGroupBuilder.java index 4c0c63408..4a0d78d57 100644 --- a/java/com/android/dialer/app/calllog/CallLogGroupBuilder.java +++ b/java/com/android/dialer/app/calllog/CallLogGroupBuilder.java @@ -28,6 +28,7 @@ import com.android.contacts.common.util.DateUtils; import com.android.dialer.calllogutils.CallbackActionHelper; import com.android.dialer.calllogutils.CallbackActionHelper.CallbackAction; import com.android.dialer.compat.AppCompatConstants; +import com.android.dialer.compat.telephony.TelephonyManagerCompat; import com.android.dialer.phonenumbercache.CallLogQuery; import com.android.dialer.phonenumberutil.PhoneNumberHelper; import java.util.Objects; @@ -114,7 +115,7 @@ public class CallLogGroupBuilder { String numberPostDialDigits; String numberViaNumbers; int callType; - int features; + int callFeatures; String accountComponentName; String accountId; int callbackAction; @@ -129,11 +130,11 @@ public class CallLogGroupBuilder { numberViaNumbers = (VERSION.SDK_INT >= VERSION_CODES.N) ? cursor.getString(CallLogQuery.VIA_NUMBER) : ""; callType = cursor.getInt(CallLogQuery.CALL_TYPE); - features = cursor.getInt(CallLogQuery.FEATURES); + callFeatures = cursor.getInt(CallLogQuery.FEATURES); accountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME); accountId = cursor.getString(CallLogQuery.ACCOUNT_ID); callbackAction = - CallbackActionHelper.getCallbackAction(number, features, accountComponentName); + CallbackActionHelper.getCallbackAction(number, callFeatures, accountComponentName); final boolean isSameNumber = equalNumbers(groupNumber, number); final boolean isSamePostDialDigits = groupPostDialDigits.equals(numberPostDialDigits); @@ -146,14 +147,15 @@ public class CallLogGroupBuilder { // (1) Calls with the same number, account, and callback action should be in the same group; // (2) Never group voice mails; and // (3) Only group blocked calls with other blocked calls. + // (4) Only group calls that were assisted dialed with other calls that were assisted dialed. if (isSameNumber && isSameAccount && isSamePostDialDigits && isSameViaNumbers && isSameCallbackAction && areBothNotVoicemail(callType, groupCallType) - && (areBothNotBlocked(callType, groupCallType) - || areBothBlocked(callType, groupCallType))) { + && (areBothNotBlocked(callType, groupCallType) || areBothBlocked(callType, groupCallType)) + && meetsAssistedDialingGroupingCriteria(groupFeatures, callFeatures)) { // Increment the size of the group to include the current call, but do not create // the group until finding a call that does not match. groupSize++; @@ -177,6 +179,7 @@ public class CallLogGroupBuilder { groupAccountComponentName = accountComponentName; groupAccountId = accountId; groupCallbackAction = callbackAction; + groupFeatures = callFeatures; } // Save the callback action and the day group associated with the current call. @@ -280,6 +283,13 @@ public class CallLogGroupBuilder { && groupCallType == AppCompatConstants.CALLS_BLOCKED_TYPE; } + private boolean meetsAssistedDialingGroupingCriteria(int groupFeatures, int callFeatures) { + int groupAssisted = (groupFeatures & TelephonyManagerCompat.FEATURES_ASSISTED_DIALING); + int callAssisted = (callFeatures & TelephonyManagerCompat.FEATURES_ASSISTED_DIALING); + + return groupAssisted == callAssisted; + } + public interface GroupCreator { /** diff --git a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java index fa1f7ab2c..e23d92c2e 100644 --- a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java +++ b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java @@ -37,6 +37,7 @@ import com.android.dialer.app.calllog.calllogcache.CallLogCache; import com.android.dialer.calllogutils.PhoneCallDetails; import com.android.dialer.common.LogUtil; import com.android.dialer.compat.android.provider.VoicemailCompat; +import com.android.dialer.compat.telephony.TelephonyManagerCompat; import com.android.dialer.logging.ContactSource; import com.android.dialer.oem.MotorolaUtils; import com.android.dialer.phonenumberutil.PhoneNumberHelper; @@ -101,6 +102,9 @@ public class PhoneCallDetailsHelper (details.features & Calls.FEATURES_HD_CALL) == Calls.FEATURES_HD_CALL); views.callTypeIcons.setShowWifi( MotorolaUtils.shouldShowWifiIconInCallLog(context, details.features)); + views.callTypeIcons.setShowAssistedDialed( + (details.features & TelephonyManagerCompat.FEATURES_ASSISTED_DIALING) + == TelephonyManagerCompat.FEATURES_ASSISTED_DIALING); views.callTypeIcons.requestLayout(); views.callTypeIcons.setVisibility(View.VISIBLE); -- cgit v1.2.3