From 0388bfc9717dbf1d67ed4c14f34aa5414a08b39c Mon Sep 17 00:00:00 2001 From: calderwoodra Date: Wed, 18 Apr 2018 16:48:57 -0700 Subject: Implement adding favorites. This change deletes the AddFavoritesActivity in favor of the activity provided to us by the Intent.ACTION_PICK intent. Bug: 36841782 Test: SpeedDialUiItemLoaderTest PiperOrigin-RevId: 193439522 Change-Id: Ie297abd2307c727d746f26ba99961de116636dc4 --- .../dialer/speeddial/SpeedDialFragment.java | 38 +++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'java/com/android/dialer/speeddial/SpeedDialFragment.java') diff --git a/java/com/android/dialer/speeddial/SpeedDialFragment.java b/java/com/android/dialer/speeddial/SpeedDialFragment.java index 004588ef4..52d7b7fc9 100644 --- a/java/com/android/dialer/speeddial/SpeedDialFragment.java +++ b/java/com/android/dialer/speeddial/SpeedDialFragment.java @@ -18,8 +18,10 @@ package com.android.dialer.speeddial; import android.content.Intent; import android.os.Bundle; +import android.provider.ContactsContract.CommonDataKinds.Phone; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; +import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.ItemTouchHelper; import android.view.LayoutInflater; @@ -73,6 +75,12 @@ public class SpeedDialFragment extends Fragment { private SpeedDialLayoutManager layoutManager; private SupportUiListener> speedDialLoaderListener; + /** + * We update the UI every time the fragment is resumed. This boolean suppresses that functionality + * once per onResume call. + */ + private boolean updateSpeedDialItemsOnResume = true; + public static SpeedDialFragment newInstance() { return new SpeedDialFragment(); } @@ -123,6 +131,11 @@ public class SpeedDialFragment extends Fragment { @Override public void onResume() { super.onResume(); + if (!updateSpeedDialItemsOnResume) { + updateSpeedDialItemsOnResume = true; + return; + } + speedDialLoaderListener.listen( getContext(), UiItemLoaderComponent.get(getContext()).speedDialUiItemLoader().loadSpeedDialUiItems(), @@ -138,11 +151,34 @@ public class SpeedDialFragment extends Fragment { }); } + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == ActivityRequestCodes.SPEED_DIAL_ADD_FAVORITE) { + if (resultCode == AppCompatActivity.RESULT_OK && data.getData() != null) { + updateSpeedDialItemsOnResume = false; + speedDialLoaderListener.listen( + getContext(), + UiItemLoaderComponent.get(getContext()) + .speedDialUiItemLoader() + .starContact(data.getData()), + speedDialUiItems -> { + adapter.setSpeedDialUiItems(speedDialUiItems); + // TODO(calderwoodra): Use DiffUtil to properly update and animate the change + adapter.notifyDataSetChanged(); + }, + throwable -> { + throw new RuntimeException(throwable); + }); + } + } + } + private class SpeedDialFragmentHeaderListener implements SpeedDialHeaderListener { @Override public void onAddFavoriteClicked() { - startActivity(new Intent(getContext(), AddFavoriteActivity.class)); + Intent intent = new Intent(Intent.ACTION_PICK, Phone.CONTENT_URI); + startActivityForResult(intent, ActivityRequestCodes.SPEED_DIAL_ADD_FAVORITE); } } -- cgit v1.2.3