summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/speeddial
diff options
context:
space:
mode:
authorcalderwoodra <calderwoodra@google.com>2018-05-17 16:15:40 -0700
committerCopybara-Service <copybara-piper@google.com>2018-05-17 17:31:53 -0700
commit29b95403e0997f58e0030e638dcdaf209319f282 (patch)
treef62cec766780b6c943f49e3ffc56315e359a046c /java/com/android/dialer/speeddial
parent147e86270e70bf090cfc8ebb4bc5903a17a9ef10 (diff)
Fixed various speed dial issues.
X. Pinned contacts are now saved onPause 4. Large display size no longer crops images 14. If ViLTE is disabled, IMS_VIDEO channels won't be added. Bug: 78491298,79876391,79876661 Test: manual PiperOrigin-RevId: 197068627 Change-Id: I642a11d684c648b7f6579792313b09eabb09a9fa
Diffstat (limited to 'java/com/android/dialer/speeddial')
-rw-r--r--java/com/android/dialer/speeddial/SpeedDialFragment.java1
-rw-r--r--java/com/android/dialer/speeddial/SquareImageView.java36
-rw-r--r--java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java9
-rw-r--r--java/com/android/dialer/speeddial/loader/SpeedDialUiItemMutator.java33
-rw-r--r--java/com/android/dialer/speeddial/res/layout/favorite_item_layout.xml9
5 files changed, 43 insertions, 45 deletions
diff --git a/java/com/android/dialer/speeddial/SpeedDialFragment.java b/java/com/android/dialer/speeddial/SpeedDialFragment.java
index fc80d23da..c118f9601 100644
--- a/java/com/android/dialer/speeddial/SpeedDialFragment.java
+++ b/java/com/android/dialer/speeddial/SpeedDialFragment.java
@@ -183,6 +183,7 @@ public class SpeedDialFragment extends Fragment {
super.onPause();
favoritesListener.hideMenu();
suggestedListener.onPause();
+ onHidden();
}
@Override
diff --git a/java/com/android/dialer/speeddial/SquareImageView.java b/java/com/android/dialer/speeddial/SquareImageView.java
deleted file mode 100644
index a12f4d426..000000000
--- a/java/com/android/dialer/speeddial/SquareImageView.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.speeddial;
-
-import android.content.Context;
-import android.support.annotation.Nullable;
-import android.util.AttributeSet;
-import android.widget.QuickContactBadge;
-
-/** A square {@link android.widget.ImageView} constrained on width. */
-public class SquareImageView extends QuickContactBadge {
-
- public SquareImageView(Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- setClickable(false);
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- super.onMeasure(widthMeasureSpec, widthMeasureSpec);
- }
-}
diff --git a/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java b/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java
index 2b056bbfc..9e227553b 100644
--- a/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java
+++ b/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java
@@ -18,6 +18,7 @@ package com.android.dialer.speeddial.loader;
import android.content.res.Resources;
import android.database.Cursor;
+import android.os.Trace;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
@@ -105,7 +106,9 @@ public abstract class SpeedDialUiItem {
* <p>If the cursor started at row X, this method will advance to row Y s.t. rows X, X + 1, ... Y
* - 1 all belong to the same contact (that is, share the same contact id and lookup key).
*/
- public static SpeedDialUiItem fromCursor(Resources resources, Cursor cursor) {
+ public static SpeedDialUiItem fromCursor(
+ Resources resources, Cursor cursor, boolean isImsEnabled) {
+ Trace.beginSection("fromCursor");
Assert.checkArgument(cursor != null);
Assert.checkArgument(cursor.getCount() != 0);
String lookupKey = cursor.getString(LOOKUP_KEY);
@@ -141,7 +144,8 @@ public abstract class SpeedDialUiItem {
.build();
channels.add(channel);
- if ((cursor.getInt(CARRIER_PRESENCE) & Data.CARRIER_PRESENCE_VT_CAPABLE) == 1) {
+ if (isImsEnabled
+ && (cursor.getInt(CARRIER_PRESENCE) & Data.CARRIER_PRESENCE_VT_CAPABLE) == 1) {
// Add another channel if the number is ViLTE reachable
channels.add(channel.toBuilder().setTechnology(Channel.IMS_VIDEO).build());
}
@@ -149,6 +153,7 @@ public abstract class SpeedDialUiItem {
} while (cursor.moveToNext() && Objects.equals(lookupKey, cursor.getString(LOOKUP_KEY)));
builder.setChannels(ImmutableList.copyOf(channels));
+ Trace.endSection();
return builder.build();
}
diff --git a/java/com/android/dialer/speeddial/loader/SpeedDialUiItemMutator.java b/java/com/android/dialer/speeddial/loader/SpeedDialUiItemMutator.java
index 1ad37dc2a..998793e6e 100644
--- a/java/com/android/dialer/speeddial/loader/SpeedDialUiItemMutator.java
+++ b/java/com/android/dialer/speeddial/loader/SpeedDialUiItemMutator.java
@@ -25,6 +25,7 @@ import android.database.Cursor;
import android.net.Uri;
import android.os.Build.VERSION_CODES;
import android.os.RemoteException;
+import android.os.Trace;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts;
@@ -46,6 +47,7 @@ import com.android.dialer.speeddial.database.SpeedDialEntry;
import com.android.dialer.speeddial.database.SpeedDialEntry.Channel;
import com.android.dialer.speeddial.database.SpeedDialEntryDao;
import com.android.dialer.speeddial.database.SpeedDialEntryDatabaseHelper;
+import com.android.dialer.util.CallUtil;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -205,7 +207,9 @@ public final class SpeedDialUiItemMutator {
return loadSpeedDialUiItemsInternal();
}
Assert.checkArgument(cursor.moveToFirst(), "Cursor should never be empty");
- SpeedDialUiItem item = SpeedDialUiItem.fromCursor(appContext.getResources(), cursor);
+ SpeedDialUiItem item =
+ SpeedDialUiItem.fromCursor(
+ appContext.getResources(), cursor, CallUtil.isVideoEnabled(appContext));
// Star the contact if it isn't starred already, then return.
if (!item.isStarred()) {
@@ -228,9 +232,12 @@ public final class SpeedDialUiItemMutator {
@WorkerThread
private ImmutableList<SpeedDialUiItem> loadSpeedDialUiItemsInternal() {
+ Trace.beginSection("loadSpeedDialUiItemsInternal");
Assert.isWorkerThread();
contactsPreferences.refreshValue(ContactsPreferences.DISPLAY_ORDER_KEY);
+ Trace.beginSection("getAllEntries");
SpeedDialEntryDao db = getSpeedDialEntryDao();
+ Trace.endSection(); // getAllEntries
// This is the list of contacts that we will display to the user
List<SpeedDialUiItem> speedDialUiItems = new ArrayList<>();
@@ -251,6 +258,7 @@ public final class SpeedDialUiItemMutator {
"Updated entries are incomplete: " + entries.size() + " != " + entriesToUiItems.size());
// Mark the SpeedDialEntries to be updated or deleted
+ Trace.beginSection("updateOrDeleteEntries");
for (SpeedDialEntry entry : entries) {
SpeedDialUiItem contact = entriesToUiItems.get(entry);
// Remove contacts that no longer exist or are no longer starred
@@ -271,12 +279,14 @@ public final class SpeedDialUiItemMutator {
// These are our existing starred entries
speedDialUiItems.add(contact);
}
+ Trace.endSection(); // updateOrDeleteEntries
// Get all Strequent Contacts
List<SpeedDialUiItem> strequentContacts = getStrequentContacts();
// For each contact, if it isn't starred, add it as a suggestion.
// If it is starred and not already accounted for above, then insert into the SpeedDialEntry DB.
+ Trace.beginSection("addSuggestions");
for (SpeedDialUiItem contact : strequentContacts) {
if (!contact.isStarred()) {
// Add this contact as a suggestion
@@ -291,12 +301,16 @@ public final class SpeedDialUiItemMutator {
speedDialUiItems.add(contact);
}
}
+ Trace.endSection(); // addSuggestions
+ Trace.beginSection("insertUpdateAndDelete");
ImmutableMap<SpeedDialEntry, Long> insertedEntriesToIdsMap =
db.insertUpdateAndDelete(
ImmutableList.copyOf(entriesToInsert),
ImmutableList.copyOf(entriesToUpdate),
ImmutableList.copyOf(entriesToDelete));
+ Trace.endSection(); // insertUpdateAndDelete
+ Trace.endSection(); // loadSpeedDialUiItemsInternal
return speedDialUiItemsWithUpdatedIds(speedDialUiItems, insertedEntriesToIdsMap);
}
@@ -388,11 +402,13 @@ public final class SpeedDialUiItemMutator {
@WorkerThread
private Map<SpeedDialEntry, SpeedDialUiItem> getSpeedDialUiItemsFromEntries(
List<SpeedDialEntry> entries) {
+ Trace.beginSection("getSpeedDialUiItemsFromEntries");
Assert.isWorkerThread();
// Fetch the contact ids from the SpeedDialEntries
Set<String> contactIds = new ArraySet<>();
entries.forEach(entry -> contactIds.add(Long.toString(entry.contactId())));
if (contactIds.isEmpty()) {
+ Trace.endSection();
return new ArrayMap<>();
}
@@ -410,7 +426,9 @@ public final class SpeedDialUiItemMutator {
null)) {
Map<SpeedDialEntry, SpeedDialUiItem> map = new ArrayMap<>();
for (cursor.moveToFirst(); !cursor.isAfterLast(); /* Iterate in the loop */ ) {
- SpeedDialUiItem item = SpeedDialUiItem.fromCursor(appContext.getResources(), cursor);
+ SpeedDialUiItem item =
+ SpeedDialUiItem.fromCursor(
+ appContext.getResources(), cursor, CallUtil.isVideoEnabled(appContext));
for (SpeedDialEntry entry : entries) {
if (entry.contactId() == item.contactId()) {
// Update the id and pinned position to match it's corresponding SpeedDialEntry.
@@ -442,6 +460,7 @@ public final class SpeedDialUiItemMutator {
for (SpeedDialEntry entry : entries) {
map.putIfAbsent(entry, null);
}
+ Trace.endSection();
return map;
}
}
@@ -467,6 +486,7 @@ public final class SpeedDialUiItemMutator {
@WorkerThread
private List<SpeedDialUiItem> getStrequentContacts() {
+ Trace.beginSection("getStrequentContacts");
Assert.isWorkerThread();
Set<String> contactIds = new ArraySet<>();
@@ -482,9 +502,11 @@ public final class SpeedDialUiItemMutator {
.query(strequentUri, new String[] {Phone.CONTACT_ID}, null, null, null)) {
if (cursor == null) {
LogUtil.e("SpeedDialUiItemMutator.getStrequentContacts", "null cursor");
+ Trace.endSection();
return new ArrayList<>();
}
if (cursor.getCount() == 0) {
+ Trace.endSection();
return new ArrayList<>();
}
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
@@ -507,14 +529,19 @@ public final class SpeedDialUiItemMutator {
List<SpeedDialUiItem> contacts = new ArrayList<>();
if (cursor == null) {
LogUtil.e("SpeedDialUiItemMutator.getStrequentContacts", "null cursor");
+ Trace.endSection();
return new ArrayList<>();
}
if (cursor.getCount() == 0) {
+ Trace.endSection();
return contacts;
}
for (cursor.moveToFirst(); !cursor.isAfterLast(); /* Iterate in the loop */ ) {
- contacts.add(SpeedDialUiItem.fromCursor(appContext.getResources(), cursor));
+ contacts.add(
+ SpeedDialUiItem.fromCursor(
+ appContext.getResources(), cursor, CallUtil.isVideoEnabled(appContext)));
}
+ Trace.endSection();
return contacts;
}
}
diff --git a/java/com/android/dialer/speeddial/res/layout/favorite_item_layout.xml b/java/com/android/dialer/speeddial/res/layout/favorite_item_layout.xml
index 134196da7..a0bbfbd36 100644
--- a/java/com/android/dialer/speeddial/res/layout/favorite_item_layout.xml
+++ b/java/com/android/dialer/speeddial/res/layout/favorite_item_layout.xml
@@ -27,14 +27,15 @@
android:layout_width="wrap_content"
android:layout_height="104dp"
android:layout_gravity="center_horizontal"
- android:layout_marginBottom="8dp">
+ android:layout_marginBottom="8dp"
+ android:minWidth="128dp">
- <com.android.dialer.speeddial.SquareImageView
+ <QuickContactBadge
android:id="@+id/avatar"
android:layout_width="104dp"
android:layout_height="104dp"
- android:layout_marginStart="12dp"
- android:layout_marginEnd="12dp"/>
+ android:layout_gravity="center_horizontal"
+ android:clickable="false"/>
<FrameLayout
android:id="@+id/video_call_container"