summaryrefslogtreecommitdiff
path: root/java/com/android
diff options
context:
space:
mode:
authorzachh <zachh@google.com>2018-02-05 16:32:14 -0800
committerCopybara-Service <copybara-piper@google.com>2018-02-05 17:50:01 -0800
commit4c185f69903230a32d5166e3e56f5246449d71d7 (patch)
tree1ec0d4eb51e41e86e20f4520648652bebe58512a /java/com/android
parent014ffe1d515841a065ae946596d743558d28d8f0 (diff)
Match redlines in new call log.
This includes: -Moved call count to after icons -Bold PhoneAccount for new calls -Fixed recycling issues in call type icons and phone account -Fixed cropping at bottom of "y" character (see b/67913060) -Reduced nesting in layout -Removed dimens.xml as it shouldn't be shared by voicemail -Set the alpha for Wifi/HD icons depending on read/unread status -Don't color call type icons, except for missed -Call type icons scale with display size -Call type icons are larger (18dp) in new UI Note that FrameLayout is used to ensure that icons/callCount view is not clipped, and instead contact name is ellipsized when the content is too wide to fit. Bug: 67913060,70989593,70989611 Test: unit and manual PiperOrigin-RevId: 184605728 Change-Id: Ie36c89354cbe4444ad2b42b6b0040430e396691c
Diffstat (limited to 'java/com/android')
-rw-r--r--java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java114
-rw-r--r--java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml124
-rw-r--r--java/com/android/dialer/calllog/ui/res/layout/new_call_log_header.xml12
-rw-r--r--java/com/android/dialer/calllog/ui/res/values/colors.xml (renamed from java/com/android/dialer/calllog/ui/res/values/dimens.xml)18
-rw-r--r--java/com/android/dialer/calllog/ui/res/values/styles.xml8
-rw-r--r--java/com/android/dialer/oem/MotorolaUtils.java9
-rw-r--r--java/com/android/dialer/theme/res/values/themes.xml7
7 files changed, 208 insertions, 84 deletions
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
index ab9429951..ee114b5f9 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
@@ -17,9 +17,11 @@ package com.android.dialer.calllog.ui;
import android.content.Context;
import android.content.Intent;
+import android.content.res.ColorStateList;
import android.database.Cursor;
import android.net.Uri;
import android.provider.CallLog.Calls;
+import android.support.annotation.DrawableRes;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
@@ -32,8 +34,8 @@ import com.android.dialer.calllog.ui.menu.NewCallLogMenu;
import com.android.dialer.calllogutils.CallLogContactTypes;
import com.android.dialer.calllogutils.CallLogEntryText;
import com.android.dialer.calllogutils.CallLogIntents;
-import com.android.dialer.calllogutils.CallTypeIconsView;
import com.android.dialer.common.concurrent.DialerExecutorComponent;
+import com.android.dialer.compat.AppCompatConstants;
import com.android.dialer.compat.telephony.TelephonyManagerCompat;
import com.android.dialer.contactphoto.ContactPhotoManager;
import com.android.dialer.contactphoto.NumberAttributeConverter;
@@ -49,10 +51,13 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
private final Context context;
private final TextView primaryTextView;
+ private final TextView callCountTextView;
private final TextView secondaryTextView;
private final QuickContactBadge quickContactBadge;
- private final CallTypeIconsView primaryCallTypeIconsView; // Used for Wifi, HD icons
- private final CallTypeIconsView secondaryCallTypeIconsView; // Used for call types
+ private final ImageView callTypeIcon;
+ private final ImageView hdIcon;
+ private final ImageView wifiIcon;
+ private final ImageView assistedDialIcon;
private final TextView phoneAccountView;
private final ImageView menuButton;
@@ -66,10 +71,13 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
super(view);
this.context = view.getContext();
primaryTextView = view.findViewById(R.id.primary_text);
+ callCountTextView = view.findViewById(R.id.call_count);
secondaryTextView = view.findViewById(R.id.secondary_text);
quickContactBadge = view.findViewById(R.id.quick_contact_photo);
- primaryCallTypeIconsView = view.findViewById(R.id.primary_call_type_icons);
- secondaryCallTypeIconsView = view.findViewById(R.id.secondary_call_type_icons);
+ callTypeIcon = view.findViewById(R.id.call_type_icon);
+ hdIcon = view.findViewById(R.id.hd_icon);
+ wifiIcon = view.findViewById(R.id.wifi_icon);
+ assistedDialIcon = view.findViewById(R.id.assisted_dial_icon);
phoneAccountView = view.findViewById(R.id.phone_account);
menuButton = view.findViewById(R.id.menu_button);
@@ -103,27 +111,32 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
if (isNewMissedCall(row)) {
primaryTextView.setTextAppearance(R.style.primary_textview_new_call);
- // TODO(zachh): Styling for call type icons when the call is new.
+ callCountTextView.setTextAppearance(R.style.primary_textview_new_call);
secondaryTextView.setTextAppearance(R.style.secondary_textview_new_call);
+ phoneAccountView.setTextAppearance(R.style.phoneaccount_textview_new_call);
} else {
primaryTextView.setTextAppearance(R.style.primary_textview);
+ callCountTextView.setTextAppearance(R.style.primary_textview);
secondaryTextView.setTextAppearance(R.style.secondary_textview);
+ phoneAccountView.setTextAppearance(R.style.phoneaccount_textview);
}
setNumberCalls(row);
setPhoto(row);
- setPrimaryCallTypes(row);
- setSecondaryCallTypes(row);
+ setFeatureIcons(row);
+ setCallTypeIcon(row);
setPhoneAccounts(row);
setOnClickListenerForRow(row);
setOnClickListenerForMenuButon(row);
}
private void setNumberCalls(CoalescedRow row) {
- // TODO(zachh): Number of calls shouldn't be text, but a circle with a number inside.
int numberCalls = row.coalescedIds().getCoalescedIdCount();
if (numberCalls > 1) {
- primaryTextView.append(String.format(Locale.getDefault(), " (%d)", numberCalls));
+ callCountTextView.setText(String.format(Locale.getDefault(), "(%d)", numberCalls));
+ callCountTextView.setVisibility(View.VISIBLE);
+ } else {
+ callCountTextView.setVisibility(View.GONE);
}
}
@@ -149,22 +162,75 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
return TextUtils.isEmpty(uri) ? null : Uri.parse(uri);
}
- private void setPrimaryCallTypes(CoalescedRow row) {
- primaryCallTypeIconsView.setShowHd(
- (row.features() & Calls.FEATURES_HD_CALL) == Calls.FEATURES_HD_CALL);
- primaryCallTypeIconsView.setShowWifi(
- MotorolaUtils.shouldShowWifiIconInCallLog(context, row.features()));
- primaryCallTypeIconsView.setShowAssistedDialed(
- (row.features() & TelephonyManagerCompat.FEATURES_ASSISTED_DIALING)
- == TelephonyManagerCompat.FEATURES_ASSISTED_DIALING);
+ private void setFeatureIcons(CoalescedRow row) {
+ ColorStateList colorStateList =
+ ColorStateList.valueOf(
+ context.getColor(
+ isNewMissedCall(row)
+ ? R.color.feature_icon_unread_color
+ : R.color.feature_icon_read_color));
+
+ // Handle HD Icon
+ if ((row.features() & Calls.FEATURES_HD_CALL) == Calls.FEATURES_HD_CALL) {
+ hdIcon.setVisibility(View.VISIBLE);
+ hdIcon.setImageTintList(colorStateList);
+ } else {
+ hdIcon.setVisibility(View.GONE);
+ }
+
+ // Handle Wifi Icon
+ if (MotorolaUtils.shouldShowWifiIconInCallLog(context, row.features())) {
+ wifiIcon.setVisibility(View.VISIBLE);
+ wifiIcon.setImageTintList(colorStateList);
+ } else {
+ wifiIcon.setVisibility(View.GONE);
+ }
+
+ // Handle Assisted Dialing Icon
+ if ((row.features() & TelephonyManagerCompat.FEATURES_ASSISTED_DIALING)
+ == TelephonyManagerCompat.FEATURES_ASSISTED_DIALING) {
+ assistedDialIcon.setVisibility(View.VISIBLE);
+ assistedDialIcon.setImageTintList(colorStateList);
+ } else {
+ assistedDialIcon.setVisibility(View.GONE);
+ }
}
- private void setSecondaryCallTypes(CoalescedRow row) {
- // Only call type icon is shown before the secondary text.
- secondaryCallTypeIconsView.clear();
- secondaryCallTypeIconsView.add(row.callType());
+ private void setCallTypeIcon(CoalescedRow row) {
+ @DrawableRes int resId;
+ switch (row.callType()) {
+ case AppCompatConstants.CALLS_INCOMING_TYPE:
+ case AppCompatConstants.CALLS_ANSWERED_EXTERNALLY_TYPE:
+ resId = R.drawable.quantum_ic_call_received_vd_theme_24;
+ break;
+ case AppCompatConstants.CALLS_OUTGOING_TYPE:
+ resId = R.drawable.quantum_ic_call_made_vd_theme_24;
+ break;
+ case AppCompatConstants.CALLS_MISSED_TYPE:
+ resId = R.drawable.quantum_ic_call_missed_vd_theme_24;
+ break;
+ case AppCompatConstants.CALLS_VOICEMAIL_TYPE:
+ throw new IllegalStateException("Voicemails not expected in call log");
+ case AppCompatConstants.CALLS_BLOCKED_TYPE:
+ resId = R.drawable.quantum_ic_block_vd_theme_24;
+ break;
+ default:
+ // It is possible for users to end up with calls with unknown call types in their
+ // call history, possibly due to 3rd party call log implementations (e.g. to
+ // distinguish between rejected and missed calls). Instead of crashing, just
+ // assume that all unknown call types are missed calls.
+ resId = R.drawable.quantum_ic_call_missed_vd_theme_24;
+ break;
+ }
+ callTypeIcon.setImageResource(resId);
- // TODO(zachh): Per new mocks, may need to add method to CallTypeIconsView to disable coloring.
+ if (isNewMissedCall(row)) {
+ callTypeIcon.setImageTintList(
+ ColorStateList.valueOf(context.getColor(R.color.call_type_icon_unread_color)));
+ } else {
+ callTypeIcon.setImageTintList(
+ ColorStateList.valueOf(context.getColor(R.color.call_type_icon_read_color)));
+ }
}
private void setPhoneAccounts(CoalescedRow row) {
@@ -172,6 +238,8 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
phoneAccountView.setText(row.phoneAccountLabel());
phoneAccountView.setTextColor(row.phoneAccountColor());
phoneAccountView.setVisibility(View.VISIBLE);
+ } else {
+ phoneAccountView.setVisibility(View.GONE);
}
}
diff --git a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml
index 77ba68124..093f866fc 100644
--- a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml
+++ b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml
@@ -19,33 +19,31 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/call_log_entry_top_margin"
- android:paddingTop="@dimen/call_log_entry_padding_top_start"
- android:paddingBottom="@dimen/call_log_entry_padding_bottom_end"
- android:paddingStart="@dimen/call_log_entry_padding_top_start"
- android:paddingEnd="@dimen/call_log_entry_padding_bottom_end"
- android:gravity="center_vertical">
+ android:minHeight="72dp">
<QuickContactBadge
android:id="@+id/quick_contact_photo"
- android:layout_width="@dimen/call_log_entry_photo_size"
- android:layout_height="@dimen/call_log_entry_photo_size"
+ android:layout_width="40dp"
+ android:layout_height="40dp"
+ android:layout_marginStart="16dp"
+ android:layout_marginEnd="16dp"
android:layout_centerVertical="true"
- android:padding="@dimen/call_log_entry_photo_padding"
android:focusable="true"/>
- <LinearLayout
+ <!-- The frame layout is necessary to avoid clipping the icons and ellipsize the text when the
+ content is too wide to fit.
+ -->
+ <FrameLayout
+ android:id="@+id/primary_row"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_centerVertical="true"
android:layout_toEndOf="@+id/quick_contact_photo"
- android:layout_toStartOf="@+id/menu_button"
- android:orientation="vertical">
+ android:layout_toStartOf="@+id/menu_button">
- <!-- TODO(zachh): Optimize this layout -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_marginTop="14dp"
android:orientation="horizontal">
<TextView
@@ -53,57 +51,95 @@
style="@style/PrimaryText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginStart="@dimen/call_log_entry_photo_text_margin"/>
+ android:layout_weight="1"
+ android:layout_marginEnd="6dp"
+ android:ellipsize="end"
+ android:lineSpacingMultiplier="1.5"
+ android:singleLine="true"/>
- <!-- HD and Wifi icons are shown adjacent to primary text. Call types are shown adjacent to
- secondary text (below). -->
- <com.android.dialer.calllogutils.CallTypeIconsView
- android:id="@+id/primary_call_type_icons"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="12dp"
- android:layout_gravity="center_vertical"/>
- </LinearLayout>
+ <ImageView
+ android:id="@+id/hd_icon"
+ android:layout_width="wrap_content"
+ android:layout_height="18dp"
+ android:layout_gravity="center_vertical"
+ android:src="@drawable/quantum_ic_hd_vd_theme_24"
+ />
- <!-- TODO(zachh): Optimize this layout -->
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
+ <ImageView
+ android:id="@+id/wifi_icon"
+ android:layout_width="wrap_content"
+ android:layout_height="18dp"
+ android:layout_gravity="center_vertical"
+ android:src="@drawable/quantum_ic_signal_wifi_4_bar_vd_theme_24"
+ />
- <!-- Only call types are shown adjacent to secondary text. HD and Wifi icons are shown
- adjacent to primary text (above). -->
- <com.android.dialer.calllogutils.CallTypeIconsView
- android:id="@+id/secondary_call_type_icons"
+ <ImageView
+ android:id="@+id/assisted_dial_icon"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="12dp"
- android:layout_gravity="center_vertical"/>
+ android:layout_height="18dp"
+ android:layout_gravity="center_vertical"
+ android:src="@drawable/quantum_ic_language_vd_theme_24"
+ />
<TextView
- android:id="@+id/secondary_text"
- style="@style/SecondaryText"
+ android:id="@+id/call_count"
+ style="@style/PrimaryText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginStart="@dimen/call_log_entry_photo_text_margin"/>
+ android:layout_marginEnd="6dp"
+ android:lineSpacingMultiplier="1.5"/>
+
</LinearLayout>
+ </FrameLayout>
+
+ <LinearLayout
+ android:id="@+id/secondary_row"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@+id/primary_row"
+ android:layout_toEndOf="@+id/quick_contact_photo"
+ android:orientation="horizontal">
+
+ <ImageView
+ android:id="@+id/call_type_icon"
+ android:layout_width="wrap_content"
+ android:layout_height="18dp"
+ android:layout_gravity="center_vertical"
+ />
<TextView
- android:id="@+id/phone_account"
+ android:id="@+id/secondary_text"
style="@style/SecondaryText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginStart="@dimen/call_log_entry_photo_text_margin"
- android:visibility="gone"/>
+ android:ellipsize="end"
+ android:lineSpacingMultiplier="1.4"
+ android:singleLine="true"/>
</LinearLayout>
+ <TextView
+ android:id="@+id/phone_account"
+ style="@style/SecondaryText"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@+id/secondary_row"
+ android:layout_toEndOf="@+id/quick_contact_photo"
+ android:ellipsize="end"
+ android:singleLine="true"
+ android:visibility="gone"/>
+
<ImageView
android:id="@+id/menu_button"
- android:layout_width="@dimen/call_log_entry_menu_button_size"
- android:layout_height="@dimen/call_log_entry_menu_button_size"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="12dp"
+ android:layout_marginBottom="12dp"
+ android:layout_marginStart="4dp"
+ android:layout_marginEnd="4dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
+ android:padding="12dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:scaleType="center"
android:src="@drawable/quantum_ic_more_vert_vd_theme_24"
diff --git a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_header.xml b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_header.xml
index 13575db55..e86ece534 100644
--- a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_header.xml
+++ b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_header.xml
@@ -16,14 +16,16 @@
-->
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
+ android:minHeight="48dp"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:height="48dp">
+ android:layout_height="wrap_content">
<TextView
android:id="@+id/new_call_log_header_text"
- style="@style/SecondaryText"
+ style="@style/SubHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginStart="@dimen/call_log_action_icon_margin_start"
- android:layout_centerVertical="true"/>
+ android:layout_marginStart="16dp"
+ android:layout_marginTop="8dp"
+ android:layout_centerVertical="true"
+ android:layout_gravity="center_vertical"/>
</RelativeLayout>
diff --git a/java/com/android/dialer/calllog/ui/res/values/dimens.xml b/java/com/android/dialer/calllog/ui/res/values/colors.xml
index bfb4c99d7..0a6d512ef 100644
--- a/java/com/android/dialer/calllog/ui/res/values/dimens.xml
+++ b/java/com/android/dialer/calllog/ui/res/values/colors.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- ~ Copyright (C) 2017 The Android Open Source Project
+ ~ Copyright (C) 2018 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
@@ -14,15 +14,11 @@
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
-<resources>
- <!-- call log entries -->
- <dimen name="call_log_entry_top_margin">6dp</dimen>
- <dimen name="call_log_entry_padding_bottom_end">16dp</dimen>
- <dimen name="call_log_entry_padding_top_start">12dp</dimen>
- <dimen name="call_log_entry_photo_size">48dp</dimen>
- <dimen name="call_log_entry_photo_padding">4dp</dimen>
- <dimen name="call_log_entry_photo_text_margin">8dp</dimen>
- <dimen name="call_log_entry_menu_button_size">48dp</dimen>
+<resources>
+ <color name="feature_icon_read_color">#9E9E9E</color>
+ <color name="feature_icon_unread_color">#474747</color>
-</resources>
+ <color name="call_type_icon_read_color">#757575</color>
+ <color name="call_type_icon_unread_color">#D32F2F</color>
+</resources> \ No newline at end of file
diff --git a/java/com/android/dialer/calllog/ui/res/values/styles.xml b/java/com/android/dialer/calllog/ui/res/values/styles.xml
index f8502370a..d521feed4 100644
--- a/java/com/android/dialer/calllog/ui/res/values/styles.xml
+++ b/java/com/android/dialer/calllog/ui/res/values/styles.xml
@@ -31,9 +31,17 @@
<item name="android:fontFamily">sans-serif</item>
</style>
+ <style name="phoneaccount_textview">
+ <item name="android:fontFamily">sans-serif</item>
+ </style>
+
<style name="secondary_textview_new_call">
<item name="android:textColor">@color/missed_call</item>
<item name="android:fontFamily">sans-serif-medium</item>
</style>
+ <style name="phoneaccount_textview_new_call">
+ <item name="android:fontFamily">sans-serif-medium</item>
+ </style>
+
</resources> \ No newline at end of file
diff --git a/java/com/android/dialer/oem/MotorolaUtils.java b/java/com/android/dialer/oem/MotorolaUtils.java
index 5a0800eeb..c1e2da256 100644
--- a/java/com/android/dialer/oem/MotorolaUtils.java
+++ b/java/com/android/dialer/oem/MotorolaUtils.java
@@ -18,6 +18,7 @@ package com.android.dialer.oem;
import android.content.Context;
import android.content.res.Resources;
import android.provider.CallLog.Calls;
+import android.support.annotation.VisibleForTesting;
import android.telephony.TelephonyManager;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.PackageUtils;
@@ -40,7 +41,7 @@ public class MotorolaUtils {
private static final String HD_CALL_FEATRURE = "com.motorola.software.sprint.hd_call";
// This is used to check if a Motorola device supports WiFi call feature, by checking if a certain
// package is enabled.
- private static final String WIFI_CALL_PACKAGE_NAME = "com.motorola.sprintwfc";
+ @VisibleForTesting public static final String WIFI_CALL_PACKAGE_NAME = "com.motorola.sprintwfc";
// Thi is used to check if a Motorola device supports hidden menu feature.
private static final String HIDDEN_MENU_FEATURE = "com.motorola.software.sprint.hidden_menu";
@@ -126,4 +127,10 @@ public class MotorolaUtils {
}
return supportSprintWifiCall;
}
+
+ @VisibleForTesting
+ public static void resetForTest() {
+ hasCheckedSprintWifiCall = false;
+ supportSprintWifiCall = false;
+ }
}
diff --git a/java/com/android/dialer/theme/res/values/themes.xml b/java/com/android/dialer/theme/res/values/themes.xml
index 0c07f3794..1c5706623 100644
--- a/java/com/android/dialer/theme/res/values/themes.xml
+++ b/java/com/android/dialer/theme/res/values/themes.xml
@@ -69,4 +69,11 @@
<item name="android:ellipsize">end</item>
<item name="android:maxLines">1</item>
</style>
+
+ <style name="SubHeader" parent="TextAppearance.AppCompat">
+ <item name="android:textColor">#212121</item>
+ <item name="android:textSize">14sp</item>
+ <item name="android:lineSpacingMultiplier">1.1</item>
+ </style>
+
</resources>