Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d402bbd0 authored by calderwoodra's avatar calderwoodra Committed by Eric Erfanian
Browse files

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
parent cd197916
Loading
Loading
Loading
Loading
+13 −8
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.support.annotation.Nullable;
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 @@ import java.util.ArrayList;
 *
 * @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 @@ final class MainSearchController implements SearchBarListener {
  private final FloatingActionButton fab;
  private final MainToolbar toolbar;

  MainSearchController(
  public MainSearchController(
      MainActivity mainActivity,
      BottomNavBar bottomNav,
      FloatingActionButton fab,
@@ -324,6 +325,16 @@ final class MainSearchController implements SearchBarListener {
    }
  }

  @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 @@ final class MainSearchController implements SearchBarListener {
    }
  }

  @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());
+6 −1
Original line number Diff line number Diff line
@@ -188,7 +188,7 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
            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 class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
    }
  }

  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 {

+7 −7
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ public final class MainToolbar extends Toolbar implements OnMenuItemClickListene

  private SearchBarView searchBar;
  private SearchBarListener listener;
  private MainToolbarMenu overflowMenu;
  private boolean isSlideUp;

  public MainToolbar(Context context, AttributeSet attrs) {
@@ -46,7 +47,7 @@ public final class MainToolbar extends Toolbar implements OnMenuItemClickListene
  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 @@ public final class MainToolbar extends Toolbar implements OnMenuItemClickListene

  @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 final class MainToolbar extends Toolbar implements OnMenuItemClickListene
  public void showKeyboard() {
    searchBar.showKeyboard();
  }

  public MainToolbarMenu getOverflowMenu() {
    return overflowMenu;
  }
}
+2 −5
Original line number Diff line number Diff line
@@ -22,18 +22,15 @@ import android.view.Gravity;
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
  }
}
+4 −5
Original line number Diff line number Diff line
@@ -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 @@ public interface SearchBarListener {
  /** 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 {
Loading