From 891fe0fc39defed1aa25b0c61ab6f727bf16bffe Mon Sep 17 00:00:00 2001 From: twyen Date: Tue, 17 Oct 2017 14:59:15 -0700 Subject: Hide voice search button when exiting search if it is not available Bug: 67820772 Test: DialtactsActivityIntegrationTest PiperOrigin-RevId: 172519580 Change-Id: I31983153cedb24c436cbaeef69fe6a2f4e558c65 --- java/com/android/dialer/app/DialtactsActivity.java | 43 +++++++++++++--------- .../dialer/app/widget/SearchEditTextLayout.java | 13 ++++++- 2 files changed, 37 insertions(+), 19 deletions(-) (limited to 'java/com/android/dialer') diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java index 56e0a95e5..b96b127e2 100644 --- a/java/com/android/dialer/app/DialtactsActivity.java +++ b/java/com/android/dialer/app/DialtactsActivity.java @@ -136,6 +136,7 @@ import com.android.dialer.util.TouchPointManager; import com.android.dialer.util.TransactionSafeActivity; import com.android.dialer.util.ViewUtil; import com.android.dialer.widget.FloatingActionButtonController; +import com.google.common.base.Optional; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -194,6 +195,8 @@ public class DialtactsActivity extends TransactionSafeActivity */ private static final long HISTORY_TAB_SEEN_TIMEOUT = TimeUnit.SECONDS.toMillis(3); + private static Optional sVoiceSearchEnabledForTest = Optional.absent(); + /** Fragment containing the dialpad that slides into view */ protected DialpadFragment mDialpadFragment; @@ -242,6 +245,7 @@ public class DialtactsActivity extends TransactionSafeActivity private PopupMenu mOverflowMenu; private EditText mSearchView; + private SearchEditTextLayout mSearchEditTextLayout; private View mVoiceSearchButton; private String mSearchQuery; private String mDialpadQuery; @@ -397,20 +401,19 @@ public class DialtactsActivity extends TransactionSafeActivity actionBar.setDisplayShowCustomEnabled(true); actionBar.setBackgroundDrawable(null); - SearchEditTextLayout searchEditTextLayout = - actionBar.getCustomView().findViewById(R.id.search_view_container); + mSearchEditTextLayout = actionBar.getCustomView().findViewById(R.id.search_view_container); - mActionBarController = new ActionBarController(this, searchEditTextLayout); + mActionBarController = new ActionBarController(this, mSearchEditTextLayout); - mSearchView = searchEditTextLayout.findViewById(R.id.search_view); + mSearchView = mSearchEditTextLayout.findViewById(R.id.search_view); mSearchView.addTextChangedListener(mPhoneSearchQueryTextListener); mSearchView.setHint(getSearchBoxHint()); - mVoiceSearchButton = searchEditTextLayout.findViewById(R.id.voice_search_button); - searchEditTextLayout + mVoiceSearchButton = mSearchEditTextLayout.findViewById(R.id.voice_search_button); + mSearchEditTextLayout .findViewById(R.id.search_box_collapsed) .setOnClickListener(mSearchViewOnClickListener); - searchEditTextLayout + mSearchEditTextLayout .findViewById(R.id.search_back_button) .setOnClickListener(v -> exitSearchUi()); @@ -423,7 +426,7 @@ public class DialtactsActivity extends TransactionSafeActivity new FloatingActionButtonController(this, floatingActionButton); ImageButton optionsMenuButton = - searchEditTextLayout.findViewById(R.id.dialtacts_options_menu_button); + mSearchEditTextLayout.findViewById(R.id.dialtacts_options_menu_button); optionsMenuButton.setOnClickListener(this); mOverflowMenu = buildOptionsMenu(optionsMenuButton); optionsMenuButton.setOnTouchListener(mOverflowMenu.getDragToOpenListener()); @@ -1015,13 +1018,15 @@ public class DialtactsActivity extends TransactionSafeActivity } private void prepareVoiceSearchButton() { - final Intent voiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); - if (canIntentBeHandled(voiceIntent)) { - mVoiceSearchButton.setVisibility(View.VISIBLE); - mVoiceSearchButton.setOnClickListener(this); - } else { - mVoiceSearchButton.setVisibility(View.GONE); + mSearchEditTextLayout.setVoiceSearchEnabled(isVoiceSearchEnabled()); + mVoiceSearchButton.setOnClickListener(this); + } + + private boolean isVoiceSearchEnabled() { + if (sVoiceSearchEnabledForTest.isPresent()) { + return sVoiceSearchEnabledForTest.get(); } + return canIntentBeHandled(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)); } public boolean isNearbyPlacesSearchEnabled() { @@ -1034,10 +1039,7 @@ public class DialtactsActivity extends TransactionSafeActivity /** Sets the hint text for the contacts search box */ private void setSearchBoxHint() { - SearchEditTextLayout searchEditTextLayout = - (SearchEditTextLayout) - getActionBarSafely().getCustomView().findViewById(R.id.search_view_container); - ((TextView) searchEditTextLayout.findViewById(R.id.search_box_start_search)) + ((TextView) mSearchEditTextLayout.findViewById(R.id.search_box_start_search)) .setHint(getSearchBoxHint()); } @@ -1714,4 +1716,9 @@ public class DialtactsActivity extends TransactionSafeActivity return true; } } + + @VisibleForTesting + static void setVoiceSearchEnabledForTest(Optional enabled) { + sVoiceSearchEnabledForTest = enabled; + } } diff --git a/java/com/android/dialer/app/widget/SearchEditTextLayout.java b/java/com/android/dialer/app/widget/SearchEditTextLayout.java index 9da0e245f..e7a707feb 100644 --- a/java/com/android/dialer/app/widget/SearchEditTextLayout.java +++ b/java/com/android/dialer/app/widget/SearchEditTextLayout.java @@ -58,6 +58,8 @@ public class SearchEditTextLayout extends FrameLayout { private Callback mCallback; + private boolean mVoiceSearchEnabled; + public SearchEditTextLayout(Context context, AttributeSet attrs) { super(context, attrs); } @@ -70,6 +72,11 @@ public class SearchEditTextLayout extends FrameLayout { mCallback = listener; } + public void setVoiceSearchEnabled(boolean enabled) { + mVoiceSearchEnabled = enabled; + updateVisibility(mIsExpanded); + } + @Override protected void onFinishInflate() { MarginLayoutParams params = (MarginLayoutParams) getLayoutParams(); @@ -272,7 +279,11 @@ public class SearchEditTextLayout extends FrameLayout { mSearchIcon.setVisibility(collapsedViewVisibility); mCollapsedSearchBox.setVisibility(collapsedViewVisibility); - mVoiceSearchButtonView.setVisibility(collapsedViewVisibility); + if (mVoiceSearchEnabled) { + mVoiceSearchButtonView.setVisibility(collapsedViewVisibility); + } else { + mVoiceSearchButtonView.setVisibility(View.GONE); + } mOverflowButtonView.setVisibility(collapsedViewVisibility); // TODO: Prevents keyboard from jumping up in landscape mode after exiting the // SearchFragment when the query string is empty. More elegant fix? -- cgit v1.2.3