diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2019-08-22 03:14:05 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2019-08-22 03:14:05 +0000 |
commit | ebe66c45f0fd18cbc65ef4396072076a042de68a (patch) | |
tree | 6ccab7a2250c1e8b65d53e8f5c5071cb5bdedecb | |
parent | e7ce83a37ee342b04011c4426d40e1e1643d106c (diff) | |
parent | ad94b0f3bdc5a1402d8ebdb7d92acbc4a2bb3c07 (diff) | |
download | platform_packages_apps_Car_Dialer-android10-c2f2-s1-release.tar.gz platform_packages_apps_Car_Dialer-android10-c2f2-s1-release.tar.bz2 platform_packages_apps_Car_Dialer-android10-c2f2-s1-release.zip |
Snap for 5821701 from ad94b0f3bdc5a1402d8ebdb7d92acbc4a2bb3c07 to qt-c2f2-releaseandroid-10.0.0_r9android-10.0.0_r8android-10.0.0_r7android-10.0.0_r14android-10.0.0_r13android-10.0.0_r12android10-c2f2-s2-releaseandroid10-c2f2-s1-releaseandroid10-c2f2-release
Change-Id: Iea2699a6c58355082eccfbe3baaffcd45bca514d
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 { |