summaryrefslogtreecommitdiff
path: root/java/com/android
diff options
context:
space:
mode:
authorcalderwoodra <calderwoodra@google.com>2018-04-25 01:53:47 -0700
committerCopybara-Service <copybara-piper@google.com>2018-04-25 11:47:45 -0700
commit79a407ee27e6c8f6447f3a8c71ae2c7f6b33f591 (patch)
treeac6491831c0d331f8582a65eda60143cb0798fd0 /java/com/android
parenta1723256b90fce7fad0a760bf8c889203b8d24df (diff)
Show clear frequents option in the toolbar if there are suggested contacts.
Bug: 36841782 Test: SpeedDialAdapterTest PiperOrigin-RevId: 194210091 Change-Id: I5b8ad5ca43ee6f519de09ad2a8b1b959637a825b
Diffstat (limited to 'java/com/android')
-rw-r--r--java/com/android/dialer/common/FragmentUtils.java5
-rw-r--r--java/com/android/dialer/main/impl/NewMainActivityPeer.java23
-rw-r--r--java/com/android/dialer/main/impl/OldMainActivityPeer.java23
-rw-r--r--java/com/android/dialer/speeddial/SpeedDialAdapter.java5
-rw-r--r--java/com/android/dialer/speeddial/SpeedDialFragment.java17
5 files changed, 57 insertions, 16 deletions
diff --git a/java/com/android/dialer/common/FragmentUtils.java b/java/com/android/dialer/common/FragmentUtils.java
index c07d9a799..aa4441eeb 100644
--- a/java/com/android/dialer/common/FragmentUtils.java
+++ b/java/com/android/dialer/common/FragmentUtils.java
@@ -59,6 +59,11 @@ public class FragmentUtils {
@SuppressWarnings("unchecked") // Casts are checked using runtime methods
T parent = ((FragmentUtilListener) fragment.getActivity()).getImpl(callbackInterface);
return parent;
+ } else if (fragment.getActivity() instanceof MainActivityPeer.PeerSupplier) {
+ MainActivityPeer peer = ((MainActivityPeer.PeerSupplier) fragment.getActivity()).getPeer();
+ if (peer instanceof FragmentUtilListener) {
+ return ((FragmentUtilListener) peer).getImpl(callbackInterface);
+ }
}
return null;
}
diff --git a/java/com/android/dialer/main/impl/NewMainActivityPeer.java b/java/com/android/dialer/main/impl/NewMainActivityPeer.java
index 0ab69a443..f2d6fa6d3 100644
--- a/java/com/android/dialer/main/impl/NewMainActivityPeer.java
+++ b/java/com/android/dialer/main/impl/NewMainActivityPeer.java
@@ -29,7 +29,6 @@ import com.android.dialer.main.MainActivityPeer;
import com.android.dialer.main.impl.bottomnav.BottomNavBar;
import com.android.dialer.main.impl.bottomnav.BottomNavBar.OnBottomNavTabSelectedListener;
import com.android.dialer.main.impl.bottomnav.BottomNavBar.TabIndex;
-import com.android.dialer.speeddial.SpeedDialFragment;
import com.android.dialer.voicemail.listui.NewVoicemailFragment;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.MoreExecutors;
@@ -106,16 +105,18 @@ public class NewMainActivityPeer implements MainActivityPeer {
@Override
public void onSpeedDialSelected() {
hideAllFragments();
- SpeedDialFragment fragment =
- (SpeedDialFragment) supportFragmentManager.findFragmentByTag(SPEED_DIAL_TAG);
- if (fragment == null) {
- supportFragmentManager
- .beginTransaction()
- .add(R.id.fragment_container, SpeedDialFragment.newInstance(), SPEED_DIAL_TAG)
- .commit();
- } else {
- supportFragmentManager.beginTransaction().show(fragment).commit();
- }
+ // TODO(calderwoodra): Since we aren't using fragment utils in this peer, let's disable
+ // speed dial until we figure out a solution.
+ // SpeedDialFragment fragment =
+ // (SpeedDialFragment) supportFragmentManager.findFragmentByTag(SPEED_DIAL_TAG);
+ // if (fragment == null) {
+ // supportFragmentManager
+ // .beginTransaction()
+ // .add(R.id.fragment_container, SpeedDialFragment.newInstance(), SPEED_DIAL_TAG)
+ // .commit();
+ // } else {
+ // supportFragmentManager.beginTransaction().show(fragment).commit();
+ // }
}
@Override
diff --git a/java/com/android/dialer/main/impl/OldMainActivityPeer.java b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
index 1c0cad0b0..9ac351094 100644
--- a/java/com/android/dialer/main/impl/OldMainActivityPeer.java
+++ b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
@@ -183,6 +183,7 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
// Speed Dial
private MainOnPhoneNumberPickerActionListener onPhoneNumberPickerActionListener;
private MainOldSpeedDialFragmentHost oldSpeedDialFragmentHost;
+ private MainSpeedDialFragmentHost speedDialFragmentHost;
/** Language the device was in last time {@link #onSaveInstanceState(Bundle)} was called. */
private String savedLanguageCode;
@@ -293,6 +294,7 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
activity.findViewById(R.id.remove_view),
activity.findViewById(R.id.search_view_container),
toolbar);
+ speedDialFragmentHost = new MainSpeedDialFragmentHost(toolbar);
lastTabController = new LastTabController(activity, bottomNav, showVoicemailTab);
@@ -639,6 +641,8 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
return (T) oldSpeedDialFragmentHost;
} else if (callbackInterface.isInstance(searchController)) {
return (T) searchController;
+ } else if (callbackInterface.isInstance(speedDialFragmentHost)) {
+ return (T) speedDialFragmentHost;
} else {
return null;
}
@@ -1191,6 +1195,25 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
}
/**
+ * Handles the callbacks for {@link SpeedDialFragment}.
+ *
+ * @see SpeedDialFragment.HostInterface
+ */
+ private static final class MainSpeedDialFragmentHost implements SpeedDialFragment.HostInterface {
+
+ private final MainToolbar toolbar;
+
+ MainSpeedDialFragmentHost(MainToolbar toolbar) {
+ this.toolbar = toolbar;
+ }
+
+ @Override
+ public void setHasFrequents(boolean hasFrequents) {
+ toolbar.showClearFrequents(hasFrequents);
+ }
+ }
+
+ /**
* Implementation of {@link OnBottomNavTabSelectedListener} that handles logic for showing each of
* the main tabs and FAB.
*
diff --git a/java/com/android/dialer/speeddial/SpeedDialAdapter.java b/java/com/android/dialer/speeddial/SpeedDialAdapter.java
index 6f6ac5498..8a37e97dd 100644
--- a/java/com/android/dialer/speeddial/SpeedDialAdapter.java
+++ b/java/com/android/dialer/speeddial/SpeedDialAdapter.java
@@ -210,4 +210,9 @@ public final class SpeedDialAdapter extends RecyclerView.Adapter<RecyclerView.Vi
public void setItemTouchHelper(ItemTouchHelper itemTouchHelper) {
this.itemTouchHelper = itemTouchHelper;
}
+
+ /** Returns true if there are suggested contacts. */
+ public boolean hasFrequents() {
+ return !speedDialUiItems.isEmpty() && getItemViewType(getItemCount() - 1) == RowType.SUGGESTION;
+ }
}
diff --git a/java/com/android/dialer/speeddial/SpeedDialFragment.java b/java/com/android/dialer/speeddial/SpeedDialFragment.java
index 26893a8d3..b74c06239 100644
--- a/java/com/android/dialer/speeddial/SpeedDialFragment.java
+++ b/java/com/android/dialer/speeddial/SpeedDialFragment.java
@@ -34,6 +34,7 @@ import android.view.ViewGroup;
import android.widget.FrameLayout;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
+import com.android.dialer.common.FragmentUtils;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.DialerExecutorComponent;
import com.android.dialer.common.concurrent.SupportUiListener;
@@ -132,11 +133,6 @@ public class SpeedDialFragment extends Fragment {
return rootLayout;
}
- public boolean hasFrequents() {
- // TODO(calderwoodra)
- return false;
- }
-
@Override
public void onResume() {
super.onResume();
@@ -173,12 +169,17 @@ public class SpeedDialFragment extends Fragment {
}
private void onSpeedDialUiItemListLoaded(ImmutableList<SpeedDialUiItem> speedDialUiItems) {
+ LogUtil.enterBlock("SpeedDialFragment.onSpeedDialUiItemListLoaded");
// TODO(calderwoodra): Use DiffUtil to properly update and animate the change
adapter.setSpeedDialUiItems(
UiItemLoaderComponent.get(getContext())
.speedDialUiItemLoader()
.insertDuoChannels(getContext(), speedDialUiItems));
adapter.notifyDataSetChanged();
+ if (getActivity() != null) {
+ FragmentUtils.getParentUnsafe(this, HostInterface.class)
+ .setHasFrequents(adapter.hasFrequents());
+ }
}
@Override
@@ -359,4 +360,10 @@ public class SpeedDialFragment extends Fragment {
Contacts.CONTENT_URI, String.valueOf(speedDialUiItem.contactId()))));
}
}
+
+ /** Interface for {@link SpeedDialFragment} to communicate with its host/parent. */
+ public interface HostInterface {
+
+ void setHasFrequents(boolean hasFrequents);
+ }
}