summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2019-08-22 03:14:05 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-08-22 03:14:05 +0000
commitebe66c45f0fd18cbc65ef4396072076a042de68a (patch)
tree6ccab7a2250c1e8b65d53e8f5c5071cb5bdedecb
parente7ce83a37ee342b04011c4426d40e1e1643d106c (diff)
parentad94b0f3bdc5a1402d8ebdb7d92acbc4a2bb3c07 (diff)
downloadplatform_packages_apps_Car_Dialer-android10-c2f2-release.tar.gz
platform_packages_apps_Car_Dialer-android10-c2f2-release.tar.bz2
platform_packages_apps_Car_Dialer-android10-c2f2-release.zip
Change-Id: Iea2699a6c58355082eccfbe3baaffcd45bca514d
-rw-r--r--src/com/android/car/dialer/telecom/InCallRouter.java8
-rw-r--r--src/com/android/car/dialer/ui/activecall/InCallFragment.java14
-rw-r--r--src/com/android/car/dialer/ui/contact/ContactListViewModel.java11
-rw-r--r--src/com/android/car/dialer/ui/search/ContactResultsViewModel.java56
4 files changed, 66 insertions, 23 deletions
diff --git a/src/com/android/car/dialer/telecom/InCallRouter.java b/src/com/android/car/dialer/telecom/InCallRouter.java
index 07044706..9447cd47 100644
--- a/src/com/android/car/dialer/telecom/InCallRouter.java
+++ b/src/com/android/car/dialer/telecom/InCallRouter.java
@@ -21,6 +21,8 @@ import android.content.Intent;
import android.os.Handler;
import android.telecom.Call;
+import androidx.annotation.MainThread;
+
import com.android.car.dialer.log.L;
import com.android.car.dialer.notification.InCallNotificationController;
import com.android.car.dialer.ui.activecall.InCallActivity;
@@ -95,13 +97,15 @@ class InCallRouter {
}
}
+ @MainThread
void registerActiveCallListChangedCallback(
InCallServiceImpl.ActiveCallListChangedCallback callback) {
- mMainHandler.post(() -> mActiveCallListChangedCallbacks.add(callback));
+ mActiveCallListChangedCallbacks.add(callback);
}
+ @MainThread
void unregisterActiveCallHandler(InCallServiceImpl.ActiveCallListChangedCallback callback) {
- mMainHandler.post(() -> mActiveCallListChangedCallbacks.remove(callback));
+ mActiveCallListChangedCallbacks.remove(callback);
}
/** Dispatches the call to {@link InCallServiceImpl.ActiveCallListChangedCallback}. */
diff --git a/src/com/android/car/dialer/ui/activecall/InCallFragment.java b/src/com/android/car/dialer/ui/activecall/InCallFragment.java
index 9a265dd7..f130b67c 100644
--- a/src/com/android/car/dialer/ui/activecall/InCallFragment.java
+++ b/src/com/android/car/dialer/ui/activecall/InCallFragment.java
@@ -16,7 +16,6 @@
package com.android.car.dialer.ui.activecall;
-import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.SystemClock;
@@ -128,18 +127,17 @@ public abstract class InCallFragment extends Fragment {
LetterTileDrawable letterTile = TelecomUtils.createLetterTile(
getContext(), info.getDisplayName());
- Glide.with(getContext())
- .asBitmap()
+ Glide.with(this)
.load(info.getAvatarUri())
.apply(new RequestOptions().centerCrop().error(letterTile))
- .into(new SimpleTarget<Bitmap>() {
+ .into(new SimpleTarget<Drawable>() {
@Override
- public void onResourceReady(Bitmap resource,
- Transition<? super Bitmap> glideAnimation) {
+ public void onResourceReady(Drawable resource,
+ Transition<? super Drawable> glideAnimation) {
// set showAnimation to false mostly because bindUserProfileView
// called several times, and we don't want the image to flicker
- mBackgroundImage.setBackgroundImage(resource, false);
- mAvatarView.setImageBitmap(resource);
+ mBackgroundImage.setBackgroundDrawable(resource);
+ mAvatarView.setImageDrawable(resource);
}
@Override
diff --git a/src/com/android/car/dialer/ui/contact/ContactListViewModel.java b/src/com/android/car/dialer/ui/contact/ContactListViewModel.java
index 90e4517c..d6dd8c6d 100644
--- a/src/com/android/car/dialer/ui/contact/ContactListViewModel.java
+++ b/src/com/android/car/dialer/ui/contact/ContactListViewModel.java
@@ -51,9 +51,8 @@ public class ContactListViewModel extends AndroidViewModel {
super(application);
mContext = application.getApplicationContext();
- String key = mContext.getString(R.string.sort_order_key);
SharedPreferencesLiveData preferencesLiveData =
- new SharedPreferencesLiveData(mContext, key);
+ new SharedPreferencesLiveData(mContext, R.string.sort_order_key);
LiveData<List<Contact>> contactListLiveData = InMemoryPhoneBook.get().getContactsLiveData();
mSortedContactListLiveData = new SortedContactListLiveData(
mContext, contactListLiveData, preferencesLiveData);
@@ -114,15 +113,15 @@ public class ContactListViewModel extends AndroidViewModel {
}
String key = mPreferencesLiveData.getKey();
- String defaultValue = mContext.getResources().getStringArray(
- R.array.contact_order_entry_values)[0];
+ String firstNameSort = mContext.getResources().getString(
+ R.string.give_name_first_title);
List<Contact> contactList = mContactListLiveData.getValue();
Comparator<Contact> comparator;
Integer sortMethod;
if (mPreferencesLiveData.getValue() == null
- || mPreferencesLiveData.getValue().getString(key, defaultValue)
- .equals(defaultValue)) {
+ || firstNameSort.equals(
+ mPreferencesLiveData.getValue().getString(key, firstNameSort))) {
comparator = mFirstNameComparator;
sortMethod = SORT_BY_FIRST_NAME;
} else {
diff --git a/src/com/android/car/dialer/ui/search/ContactResultsViewModel.java b/src/com/android/car/dialer/ui/search/ContactResultsViewModel.java
index 07921988..4710dc3a 100644
--- a/src/com/android/car/dialer/ui/search/ContactResultsViewModel.java
+++ b/src/com/android/car/dialer/ui/search/ContactResultsViewModel.java
@@ -17,7 +17,8 @@
package com.android.car.dialer.ui.search;
import android.app.Application;
-import android.content.ContentResolver;
+import android.content.Context;
+import android.content.SharedPreferences;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
@@ -30,6 +31,8 @@ import androidx.lifecycle.LiveData;
import androidx.lifecycle.MediatorLiveData;
import androidx.lifecycle.MutableLiveData;
+import com.android.car.dialer.R;
+import com.android.car.dialer.livedata.SharedPreferencesLiveData;
import com.android.car.telephony.common.Contact;
import com.android.car.telephony.common.InMemoryPhoneBook;
import com.android.car.telephony.common.ObservableAsyncQuery;
@@ -37,6 +40,7 @@ import com.android.car.telephony.common.QueryParam;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
/** {link AndroidViewModel} used for search functionality. */
@@ -48,12 +52,15 @@ public class ContactResultsViewModel extends AndroidViewModel {
private final ContactResultsLiveData mContactSearchResultsLiveData;
private final MutableLiveData<String> mSearchQueryLiveData;
+ private final SharedPreferencesLiveData mSharedPreferencesLiveData;
public ContactResultsViewModel(@NonNull Application application) {
super(application);
mSearchQueryLiveData = new MutableLiveData<>();
- mContactSearchResultsLiveData = new ContactResultsLiveData(application.getContentResolver(),
- mSearchQueryLiveData);
+ mSharedPreferencesLiveData =
+ new SharedPreferencesLiveData(application, R.string.sort_order_key);
+ mContactSearchResultsLiveData = new ContactResultsLiveData(application,
+ mSearchQueryLiveData, mSharedPreferencesLiveData);
}
void setSearchQuery(String searchQuery) {
@@ -73,17 +80,28 @@ public class ContactResultsViewModel extends AndroidViewModel {
}
private static class ContactResultsLiveData extends MediatorLiveData<List<Contact>> {
+ private final Context mContext;
private final SearchQueryParamProvider mSearchQueryParamProvider;
private final ObservableAsyncQuery mObservableAsyncQuery;
-
- ContactResultsLiveData(ContentResolver contentResolver,
- LiveData<String> searchQueryLiveData) {
+ private final SharedPreferencesLiveData mSharedPreferencesLiveData;
+ private final Comparator<Contact> mFirstNameComparator =
+ (o1, o2) -> o1.compareByDisplayName(o2);
+ private final Comparator<Contact> mLastNameComparator =
+ (o1, o2) -> o1.compareByAltDisplayName(o2);
+
+ ContactResultsLiveData(Context context,
+ LiveData<String> searchQueryLiveData,
+ SharedPreferencesLiveData sharedPreferencesLiveData) {
+ mContext = context;
mSearchQueryParamProvider = new SearchQueryParamProvider(searchQueryLiveData);
mObservableAsyncQuery = new ObservableAsyncQuery(mSearchQueryParamProvider,
- contentResolver, this::onQueryFinished);
+ context.getContentResolver(), this::onQueryFinished);
addSource(InMemoryPhoneBook.get().getContactsLiveData(), this::onContactsChange);
addSource(searchQueryLiveData, this::onSearchQueryChanged);
+
+ mSharedPreferencesLiveData = sharedPreferencesLiveData;
+ addSource(mSharedPreferencesLiveData, this::onSortOrderChanged);
}
private void onContactsChange(List<Contact> contactList) {
@@ -104,6 +122,17 @@ public class ContactResultsViewModel extends AndroidViewModel {
}
}
+ private void onSortOrderChanged(SharedPreferences unusedSharedPreferences) {
+ if (getValue() == null) {
+ return;
+ }
+
+ List<Contact> contacts = new ArrayList<>();
+ contacts.addAll(getValue());
+ Collections.sort(contacts, getComparator());
+ setValue(contacts);
+ }
+
private void onQueryFinished(@Nullable Cursor cursor) {
if (cursor == null) {
setValue(Collections.emptyList());
@@ -119,9 +148,22 @@ public class ContactResultsViewModel extends AndroidViewModel {
contacts.add(contact);
}
}
+ Collections.sort(contacts, getComparator());
setValue(contacts);
cursor.close();
}
+
+ private Comparator<Contact> getComparator() {
+ String firstNameSort = mContext.getResources().getString(
+ R.string.give_name_first_title);
+ String key = mSharedPreferencesLiveData.getKey();
+ if (firstNameSort.equals(
+ mSharedPreferencesLiveData.getValue().getString(key, firstNameSort))) {
+ return mFirstNameComparator;
+ } else {
+ return mLastNameComparator;
+ }
+ }
}
private static class SearchQueryParamProvider implements QueryParam.Provider {