Implemented GoogleMainSearchController to customize menu to GoogleDialer.
This change doesn't implement any of the menu actinos, it just abstracts some
components so that the GoogleDialer toolbar menu can show help and feedback
(and thus, AOSP won't).
Bug: 72526274
Test: implemented
PiperOrigin-RevId: 185033936
Change-Id: I30f8cde6705145ef95efcfc82973a8aa2b16e4ee
diff --git a/java/com/android/dialer/main/impl/MainSearchController.java b/java/com/android/dialer/main/impl/MainSearchController.java
index 0296ec9..c439767 100644
--- a/java/com/android/dialer/main/impl/MainSearchController.java
+++ b/java/com/android/dialer/main/impl/MainSearchController.java
@@ -25,6 +25,7 @@
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
+import android.view.MenuItem;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
@@ -58,7 +59,7 @@
*
* @see #onBackPressed()
*/
-final class MainSearchController implements SearchBarListener {
+public class MainSearchController implements SearchBarListener {
private static final String KEY_IS_FAB_HIDDEN = "is_fab_hidden";
private static final String KEY_CURRENT_TAB = "current_tab";
@@ -74,7 +75,7 @@
private final FloatingActionButton fab;
private final MainToolbar toolbar;
- MainSearchController(
+ public MainSearchController(
MainActivity mainActivity,
BottomNavBar bottomNav,
FloatingActionButton fab,
@@ -324,6 +325,16 @@
}
}
+ @Override
+ public boolean onMenuItemClicked(MenuItem menuItem) {
+ if (menuItem.getItemId() == R.id.settings) {
+ // TODO(calderwoodra)
+ } else if (menuItem.getItemId() == R.id.clear_frequents) {
+ // TODO(calderwoodra)
+ }
+ return false;
+ }
+
public void onVoiceResults(int resultCode, Intent data) {
if (resultCode == AppCompatActivity.RESULT_OK) {
ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
@@ -338,12 +349,6 @@
}
}
- @Override
- public void openSettings() {}
-
- @Override
- public void sendFeedback() {}
-
public void onSaveInstanceState(Bundle bundle) {
bundle.putBoolean(KEY_IS_FAB_HIDDEN, !fab.isShown());
bundle.putInt(KEY_CURRENT_TAB, bottomNav.getSelectedTab());
diff --git a/java/com/android/dialer/main/impl/OldMainActivityPeer.java b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
index a27bdd2..c46e61b 100644
--- a/java/com/android/dialer/main/impl/OldMainActivityPeer.java
+++ b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
@@ -188,7 +188,7 @@
mainActivity, mainActivity.getContentResolver(), bottomNav, toolbar);
bottomNav.addOnTabSelectedListener(callLogFragmentListener);
- searchController = new MainSearchController(mainActivity, bottomNav, fab, toolbar);
+ searchController = getNewMainSearchController(bottomNav, fab, toolbar);
toolbar.setSearchBarListener(searchController);
onDialpadQueryChangedListener = new MainOnDialpadQueryChangedListener(searchController);
@@ -355,6 +355,11 @@
}
}
+ public MainSearchController getNewMainSearchController(
+ BottomNavBar bottomNavBar, FloatingActionButton fab, MainToolbar mainToolbar) {
+ return new MainSearchController(mainActivity, bottomNavBar, fab, mainToolbar);
+ }
+
/** @see OnContactSelectedListener */
private static final class MainOnContactSelectedListener implements OnContactSelectedListener {
diff --git a/java/com/android/dialer/main/impl/toolbar/MainToolbar.java b/java/com/android/dialer/main/impl/toolbar/MainToolbar.java
index 1d7f7ce..6044229 100644
--- a/java/com/android/dialer/main/impl/toolbar/MainToolbar.java
+++ b/java/com/android/dialer/main/impl/toolbar/MainToolbar.java
@@ -36,6 +36,7 @@
private SearchBarView searchBar;
private SearchBarListener listener;
+ private MainToolbarMenu overflowMenu;
private boolean isSlideUp;
public MainToolbar(Context context, AttributeSet attrs) {
@@ -46,7 +47,7 @@
protected void onFinishInflate() {
super.onFinishInflate();
ImageButton optionsMenuButton = findViewById(R.id.main_options_menu_button);
- MainToolbarMenu overflowMenu = new MainToolbarMenu(getContext(), optionsMenuButton);
+ overflowMenu = new MainToolbarMenu(getContext(), optionsMenuButton);
overflowMenu.inflate(R.menu.main_menu);
overflowMenu.setOnMenuItemClickListener(this);
optionsMenuButton.setOnClickListener(v -> overflowMenu.show());
@@ -57,12 +58,7 @@
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
- if (menuItem.getItemId() == R.id.settings) {
- listener.openSettings();
- } else if (menuItem.getItemId() == R.id.feedback) {
- listener.sendFeedback();
- }
- return false;
+ return listener.onMenuItemClicked(menuItem);
}
public void setSearchBarListener(SearchBarListener listener) {
@@ -129,4 +125,8 @@
public void showKeyboard() {
searchBar.showKeyboard();
}
+
+ public MainToolbarMenu getOverflowMenu() {
+ return overflowMenu;
+ }
}
diff --git a/java/com/android/dialer/main/impl/toolbar/MainToolbarMenu.java b/java/com/android/dialer/main/impl/toolbar/MainToolbarMenu.java
index f4dfeef..3c6e361 100644
--- a/java/com/android/dialer/main/impl/toolbar/MainToolbarMenu.java
+++ b/java/com/android/dialer/main/impl/toolbar/MainToolbarMenu.java
@@ -22,18 +22,15 @@
import android.view.View;
/** Popup menu accessible from the search bar */
-final class MainToolbarMenu extends PopupMenu {
+public final class MainToolbarMenu extends PopupMenu {
public MainToolbarMenu(Context context, View anchor) {
- super(context, anchor, Gravity.TOP);
- // TODO(calderwoodra): menu should open from the top, not the bottom
+ super(context, anchor, Gravity.NO_GRAVITY, R.attr.actionOverflowMenuStyle, 0);
}
@Override
public void show() {
super.show();
- // TODO(calderwoodra): show/hide clear frequents
- // TODO(calderwoodra): only show call history item if we have phone permission
// TODO(calderwoodra): show simulator buttons
}
}
diff --git a/java/com/android/dialer/main/impl/toolbar/SearchBarListener.java b/java/com/android/dialer/main/impl/toolbar/SearchBarListener.java
index 2e31997..a074b51 100644
--- a/java/com/android/dialer/main/impl/toolbar/SearchBarListener.java
+++ b/java/com/android/dialer/main/impl/toolbar/SearchBarListener.java
@@ -16,6 +16,8 @@
package com.android.dialer.main.impl.toolbar;
+import android.view.MenuItem;
+
/** Useful callback for {@link SearchBarView} listeners. */
public interface SearchBarListener {
@@ -31,11 +33,8 @@
/** Called when the voice search button is clicked. */
void onVoiceButtonClicked(VoiceSearchResultCallback voiceSearchResultCallback);
- /** Called when the settings option is selected from the search menu. */
- void openSettings();
-
- /** Called when send feedback is selected from the search menu. */
- void sendFeedback();
+ /** Called when a toolbar menu item is clicked. */
+ boolean onMenuItemClicked(MenuItem menuItem);
/** Interface for returning voice results to the search bar. */
interface VoiceSearchResultCallback {
diff --git a/java/com/android/dialer/main/impl/toolbar/res/menu/main_menu.xml b/java/com/android/dialer/main/impl/toolbar/res/menu/main_menu.xml
index 5b09fca..01309dd 100644
--- a/java/com/android/dialer/main/impl/toolbar/res/menu/main_menu.xml
+++ b/java/com/android/dialer/main/impl/toolbar/res/menu/main_menu.xml
@@ -22,7 +22,7 @@
app:showAsAction="collapseActionView"/>
<item
- android:id="@+id/feedback"
- android:title="@string/main_send_feedback"
+ android:id="@+id/clear_frequents"
+ android:title="@string/main_menu_clear_frequents"
app:showAsAction="collapseActionView"/>
</menu>
\ No newline at end of file
diff --git a/java/com/android/dialer/main/impl/toolbar/res/values/strings.xml b/java/com/android/dialer/main/impl/toolbar/res/values/strings.xml
index 6af235b..66ccfb4 100644
--- a/java/com/android/dialer/main/impl/toolbar/res/values/strings.xml
+++ b/java/com/android/dialer/main/impl/toolbar/res/values/strings.xml
@@ -37,8 +37,8 @@
<!-- Show users their settings [CHAR LIMIT=20] -->
<string name="settings">Settings</string>
- <!-- Send feedback about the app [CHAR LIMIT=20] -->
- <string name="main_send_feedback">Send feedback</string>
+ <!-- The menu item to clear frequents [CHAR LIMIT=30] -->
+ <string name="main_menu_clear_frequents">Clear frequents</string>
<!-- Remove button that shows up when contact is long-pressed. [CHAR LIMIT=NONE] -->
<string name="main_remove_contact">Remove</string>