summaryrefslogtreecommitdiffstats
path: root/java/com/android/dialer/main
diff options
context:
space:
mode:
authorcalderwoodra <calderwoodra@google.com>2018-02-20 17:44:07 -0800
committerEric Erfanian <erfanian@google.com>2018-02-22 21:10:33 +0000
commit8d26b821c9754a9a81915ccb1b431efbb8550670 (patch)
treeef955d84fa1a156c417cef7ce78945ef6f02d034 /java/com/android/dialer/main
parentfa95b2d3c5696790d2b174b0d42984341dfc80f2 (diff)
downloadandroid_packages_apps_Dialer-8d26b821c9754a9a81915ccb1b431efbb8550670.tar.gz
android_packages_apps_Dialer-8d26b821c9754a9a81915ccb1b431efbb8550670.tar.bz2
android_packages_apps_Dialer-8d26b821c9754a9a81915ccb1b431efbb8550670.zip
Fixed some bugs in NUI search.
- Nearby places promo now displays properly - Dialpad now properly handles dial intents - placing calls from search now closes search - placing calls from search now closes the keyboard - toolbar shadow is now visible when search is started from the dialpad. Bug: 72525324 Test: MainActivityOldPeerSearchIntegrationTest PiperOrigin-RevId: 186390952 Change-Id: I7e10ef0499c787da2d1820cae915f2d42645303b
Diffstat (limited to 'java/com/android/dialer/main')
-rw-r--r--java/com/android/dialer/main/MainActivityPeer.java2
-rw-r--r--java/com/android/dialer/main/impl/MainActivity.java7
-rw-r--r--java/com/android/dialer/main/impl/MainSearchController.java49
-rw-r--r--java/com/android/dialer/main/impl/NewMainActivityPeer.java3
-rw-r--r--java/com/android/dialer/main/impl/OldMainActivityPeer.java34
-rw-r--r--java/com/android/dialer/main/impl/toolbar/SearchBarListener.java7
6 files changed, 80 insertions, 22 deletions
diff --git a/java/com/android/dialer/main/MainActivityPeer.java b/java/com/android/dialer/main/MainActivityPeer.java
index c1a328a65..9c5627be8 100644
--- a/java/com/android/dialer/main/MainActivityPeer.java
+++ b/java/com/android/dialer/main/MainActivityPeer.java
@@ -26,6 +26,8 @@ public interface MainActivityPeer {
void onActivityResume();
+ void onUserLeaveHint();
+
void onActivityStop();
void onActivityDestroyed();
diff --git a/java/com/android/dialer/main/impl/MainActivity.java b/java/com/android/dialer/main/impl/MainActivity.java
index ac2cb389e..1646becf4 100644
--- a/java/com/android/dialer/main/impl/MainActivity.java
+++ b/java/com/android/dialer/main/impl/MainActivity.java
@@ -82,6 +82,7 @@ public class MainActivity extends TransactionSafeActivity
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
+ setIntent(intent);
activePeer.onNewIntent(intent);
}
@@ -92,6 +93,12 @@ public class MainActivity extends TransactionSafeActivity
}
@Override
+ protected void onUserLeaveHint() {
+ super.onUserLeaveHint();
+ activePeer.onUserLeaveHint();
+ }
+
+ @Override
protected void onStop() {
super.onStop();
activePeer.onActivityStop();
diff --git a/java/com/android/dialer/main/impl/MainSearchController.java b/java/com/android/dialer/main/impl/MainSearchController.java
index 8d9e784a7..ccd7a4b49 100644
--- a/java/com/android/dialer/main/impl/MainSearchController.java
+++ b/java/com/android/dialer/main/impl/MainSearchController.java
@@ -95,12 +95,14 @@ public class MainSearchController implements SearchBarListener {
}
/** Should be called if we're showing the dialpad because of a new ACTION_DIAL intent. */
- public void showDialpadFromNewIntent(boolean animate) {
- showDialpad(animate, true);
+ public void showDialpadFromNewIntent() {
+ LogUtil.enterBlock("MainSearchController.showDialpadFromNewIntent");
+ showDialpad(/* animate=*/ false, /* fromNewIntent=*/ true);
}
/** Shows the dialpad, hides the FAB and slides the toolbar off screen. */
public void showDialpad(boolean animate) {
+ LogUtil.enterBlock("MainSearchController.showDialpad");
showDialpad(animate, false);
}
@@ -110,17 +112,22 @@ public class MainSearchController implements SearchBarListener {
fab.hide();
toolbar.slideUp(animate);
toolbar.expand(animate, Optional.absent());
+ toolbarShadow.setVisibility(View.VISIBLE);
mainActivity.setTitle(R.string.dialpad_activity_title);
FragmentTransaction transaction = mainActivity.getFragmentManager().beginTransaction();
+ NewSearchFragment searchFragment = getSearchFragment();
// Show Search
- if (getSearchFragment() == null) {
- NewSearchFragment searchFragment = NewSearchFragment.newInstance(false);
+ if (searchFragment == null) {
+ // TODO(a bug): zero suggest results aren't actually shown but this enabled the nearby
+ // places promo to be shown.
+ searchFragment = NewSearchFragment.newInstance(/* showZeroSuggest=*/ true);
transaction.add(R.id.fragment_container, searchFragment, SEARCH_FRAGMENT_TAG);
} else if (!isSearchVisible()) {
- transaction.show(getSearchFragment());
+ transaction.show(searchFragment);
}
+ searchFragment.setQuery("", CallInitiationType.Type.DIALPAD);
// Show Dialpad
if (getDialpadFragment() == null) {
@@ -145,6 +152,7 @@ public class MainSearchController implements SearchBarListener {
* @see {@link #closeSearch(boolean)} to "remove" the dialpad.
*/
private void hideDialpad(boolean animate, boolean bottomNavVisible) {
+ LogUtil.enterBlock("MainSearchController.hideDialpad");
Assert.checkArgument(isDialpadVisible());
fab.show();
@@ -190,6 +198,7 @@ public class MainSearchController implements SearchBarListener {
/** Should be called when {@link DialpadListener#onDialpadShown()} is called. */
public void onDialpadShown() {
+ LogUtil.enterBlock("MainSearchController.onDialpadShown");
getDialpadFragment().slideUp(true);
hideBottomNav();
}
@@ -205,6 +214,7 @@ public class MainSearchController implements SearchBarListener {
* </ol>
*/
public void onSearchListTouch() {
+ LogUtil.enterBlock("MainSearchController.onSearchListTouched");
if (isDialpadVisible()) {
if (TextUtils.isEmpty(getDialpadFragment().getQuery())) {
Logger.get(mainActivity)
@@ -236,13 +246,13 @@ public class MainSearchController implements SearchBarListener {
*/
public boolean onBackPressed() {
if (isDialpadVisible() && !TextUtils.isEmpty(getDialpadFragment().getQuery())) {
- LogUtil.i("MainSearchController#onBackPressed", "Dialpad visible with query");
+ LogUtil.i("MainSearchController.onBackPressed", "Dialpad visible with query");
Logger.get(mainActivity)
.logImpression(DialerImpression.Type.NUI_PRESS_BACK_BUTTON_TO_HIDE_DIALPAD);
hideDialpad(/* animate=*/ true, /* bottomNavVisible=*/ false);
return true;
} else if (isSearchVisible()) {
- LogUtil.i("MainSearchController#onBackPressed", "Search is visible");
+ LogUtil.i("MainSearchController.onBackPressed", "Search is visible");
Logger.get(mainActivity)
.logImpression(
isDialpadVisible()
@@ -260,6 +270,7 @@ public class MainSearchController implements SearchBarListener {
* dialpad.
*/
private void closeSearch(boolean animate) {
+ LogUtil.enterBlock("MainSearchController.closeSearch");
Assert.checkArgument(isSearchVisible());
if (isDialpadVisible()) {
hideDialpad(animate, /* bottomNavVisible=*/ true);
@@ -314,11 +325,13 @@ public class MainSearchController implements SearchBarListener {
*/
@Override
public void onSearchBarClicked() {
+ LogUtil.enterBlock("MainSearchController.onSearchBarClicked");
Logger.get(mainActivity).logImpression(DialerImpression.Type.NUI_CLICK_SEARCH_BAR);
openSearch(Optional.absent());
}
private void openSearch(Optional<String> query) {
+ LogUtil.enterBlock("MainSearchController.openSearch");
fab.hide();
toolbar.expand(/* animate=*/ true, query);
toolbar.showKeyboard();
@@ -326,20 +339,26 @@ public class MainSearchController implements SearchBarListener {
hideBottomNav();
FragmentTransaction transaction = mainActivity.getFragmentManager().beginTransaction();
+ NewSearchFragment searchFragment = getSearchFragment();
// Show Search
- if (getSearchFragment() == null) {
- NewSearchFragment searchFragment = NewSearchFragment.newInstance(false);
+ if (searchFragment == null) {
+ // TODO(a bug): zero suggest results aren't actually shown but this enabled the nearby
+ // places promo to be shown.
+ searchFragment = NewSearchFragment.newInstance(true);
transaction.add(R.id.fragment_container, searchFragment, SEARCH_FRAGMENT_TAG);
} else if (!isSearchVisible()) {
transaction.show(getSearchFragment());
}
+ searchFragment.setQuery(
+ query.isPresent() ? query.get() : "", CallInitiationType.Type.REGULAR_SEARCH);
transaction.commit();
}
@Override
public void onSearchBackButtonClicked() {
+ LogUtil.enterBlock("MainSearchController.onSearchBackButtonClicked");
closeSearch(true);
}
@@ -384,6 +403,18 @@ public class MainSearchController implements SearchBarListener {
return false;
}
+ @Override
+ public void onUserLeaveHint() {
+ if (isInSearch()) {
+ closeSearch(false);
+ }
+ }
+
+ @Override
+ public void onCallPlacedFromSearch() {
+ closeSearch(false);
+ }
+
public void onVoiceResults(int resultCode, Intent data) {
if (resultCode == AppCompatActivity.RESULT_OK) {
ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
diff --git a/java/com/android/dialer/main/impl/NewMainActivityPeer.java b/java/com/android/dialer/main/impl/NewMainActivityPeer.java
index ed67df936..6f5c18623 100644
--- a/java/com/android/dialer/main/impl/NewMainActivityPeer.java
+++ b/java/com/android/dialer/main/impl/NewMainActivityPeer.java
@@ -57,6 +57,9 @@ public class NewMainActivityPeer implements MainActivityPeer {
public void onActivityResume() {}
@Override
+ public void onUserLeaveHint() {}
+
+ @Override
public void onActivityStop() {}
@Override
diff --git a/java/com/android/dialer/main/impl/OldMainActivityPeer.java b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
index 7d9216c3f..69d8032f2 100644
--- a/java/com/android/dialer/main/impl/OldMainActivityPeer.java
+++ b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
@@ -226,34 +226,34 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
searchController.onRestoreInstanceState(savedInstanceState);
bottomNav.selectTab(savedInstanceState.getInt(KEY_CURRENT_TAB));
} else {
- showTabOnIntent(mainActivity.getIntent());
+ onHandleIntent(mainActivity.getIntent());
}
}
@Override
public void onNewIntent(Intent intent) {
LogUtil.enterBlock("OldMainActivityPeer.onNewIntent");
- showTabOnIntent(intent);
+ onHandleIntent(intent);
}
- private void showTabOnIntent(Intent intent) {
+ private void onHandleIntent(Intent intent) {
+ // Two important implementation notes:
+ // 1) If the intent contains extra data to open to a specific screen (e.g. DIAL intent), when
+ // the user leaves that screen, they will return here and add see a blank screen unless we
+ // select a tab here.
+ // 2) Don't return early here in case the intent does contain extra data.
if (isShowTabIntent(intent)) {
bottomNav.selectTab(getTabFromIntent(intent));
- return;
+ } else if (lastTabController.isEnabled) {
+ lastTabController.selectLastTab();
+ } else {
+ bottomNav.selectTab(TabIndex.SPEED_DIAL);
}
if (isDialIntent(intent)) {
- searchController.showDialpadFromNewIntent(false);
// Dialpad will grab the intent and populate the number
- return;
- }
-
- if (lastTabController.isEnabled) {
- lastTabController.selectLastTab();
- return;
+ searchController.showDialpadFromNewIntent();
}
-
- bottomNav.selectTab(TabIndex.SPEED_DIAL);
}
/** Returns true if the given intent contains a phone number to populate the dialer with */
@@ -296,6 +296,11 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
}
@Override
+ public void onUserLeaveHint() {
+ searchController.onUserLeaveHint();
+ }
+
+ @Override
public void onActivityStop() {
lastTabController.onActivityStop();
callLogFragmentListener.onActivityStop(
@@ -344,6 +349,7 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
@Override
public boolean onBackPressed() {
+ LogUtil.enterBlock("OldMainActivityPeer.onBackPressed");
if (searchController.onBackPressed()) {
return true;
}
@@ -460,6 +466,7 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
@Override
public void onCallPlacedFromDialpad() {
// TODO(calderwoodra): logging
+ searchController.onCallPlacedFromSearch();
}
}
@@ -480,6 +487,7 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
@Override
public void onCallPlacedFromSearch() {
// TODO(calderwoodra): logging
+ searchController.onCallPlacedFromSearch();
}
}
diff --git a/java/com/android/dialer/main/impl/toolbar/SearchBarListener.java b/java/com/android/dialer/main/impl/toolbar/SearchBarListener.java
index a074b5131..857c4b9c9 100644
--- a/java/com/android/dialer/main/impl/toolbar/SearchBarListener.java
+++ b/java/com/android/dialer/main/impl/toolbar/SearchBarListener.java
@@ -16,6 +16,7 @@
package com.android.dialer.main.impl.toolbar;
+import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
/** Useful callback for {@link SearchBarView} listeners. */
@@ -36,6 +37,12 @@ public interface SearchBarListener {
/** Called when a toolbar menu item is clicked. */
boolean onMenuItemClicked(MenuItem menuItem);
+ /** Called when {@link AppCompatActivity#onUserLeaveHint()} is called. */
+ void onUserLeaveHint();
+
+ /** Called when the user places a call from search (regular or dialpad). */
+ void onCallPlacedFromSearch();
+
/** Interface for returning voice results to the search bar. */
interface VoiceSearchResultCallback {