summaryrefslogtreecommitdiffstats
path: root/java/com/android/dialer/main/impl
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/main/impl')
-rw-r--r--java/com/android/dialer/main/impl/MainSearchController.java59
-rw-r--r--java/com/android/dialer/main/impl/OldMainActivityPeer.java47
-rw-r--r--java/com/android/dialer/main/impl/res/layout/main_activity.xml1
-rw-r--r--java/com/android/dialer/main/impl/res/values/strings.xml4
4 files changed, 96 insertions, 15 deletions
diff --git a/java/com/android/dialer/main/impl/MainSearchController.java b/java/com/android/dialer/main/impl/MainSearchController.java
index 33e0981dd..7d380d75d 100644
--- a/java/com/android/dialer/main/impl/MainSearchController.java
+++ b/java/com/android/dialer/main/impl/MainSearchController.java
@@ -52,6 +52,7 @@ import com.android.dialer.searchfragment.list.NewSearchFragment.SearchFragmentLi
import com.android.dialer.smartdial.util.SmartDialNameMatcher;
import com.google.common.base.Optional;
import java.util.ArrayList;
+import java.util.List;
/**
* Search controller for handling all the logic related to entering and exiting the search UI.
@@ -83,6 +84,8 @@ public class MainSearchController implements SearchBarListener {
private final MainToolbar toolbar;
private final View toolbarShadow;
+ private final List<OnSearchShowListener> onSearchShowListenerList = new ArrayList<>();
+
public MainSearchController(
MainActivity mainActivity,
BottomNavBar bottomNav,
@@ -125,7 +128,9 @@ public class MainSearchController implements SearchBarListener {
// 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);
+ transaction.replace(R.id.fragment_container, searchFragment, SEARCH_FRAGMENT_TAG);
+ transaction.addToBackStack(null);
+ transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
} else if (!isSearchVisible()) {
transaction.show(searchFragment);
}
@@ -142,6 +147,8 @@ public class MainSearchController implements SearchBarListener {
transaction.show(dialpadFragment);
}
transaction.commit();
+
+ notifyListenersOnSearchOpen();
}
/**
@@ -282,12 +289,23 @@ public class MainSearchController implements SearchBarListener {
showBottomNav();
toolbar.collapse(animate);
toolbarShadow.setVisibility(View.GONE);
- mainActivity.getFragmentManager().beginTransaction().remove(getSearchFragment()).commit();
+ mainActivity.getFragmentManager().popBackStack();
// Clear the dialpad so the phone number isn't persisted between search sessions.
- if (getDialpadFragment() != null) {
- getDialpadFragment().clearDialpad();
+ DialpadFragment dialpadFragment = getDialpadFragment();
+ if (dialpadFragment != null) {
+ // Temporarily disable accessibility when we clear the dialpad, since it should be
+ // invisible and should not announce anything.
+ dialpadFragment
+ .getDigitsWidget()
+ .setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
+ dialpadFragment.clearDialpad();
+ dialpadFragment
+ .getDigitsWidget()
+ .setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO);
}
+
+ notifyListenersOnSearchClose();
}
@Nullable
@@ -348,7 +366,9 @@ public class MainSearchController implements SearchBarListener {
// 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);
+ transaction.replace(R.id.fragment_container, searchFragment, SEARCH_FRAGMENT_TAG);
+ transaction.addToBackStack(null);
+ transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
} else if (!isSearchVisible()) {
transaction.show(getSearchFragment());
}
@@ -356,6 +376,8 @@ public class MainSearchController implements SearchBarListener {
searchFragment.setQuery(
query.isPresent() ? query.get() : "", CallInitiationType.Type.REGULAR_SEARCH);
transaction.commit();
+
+ notifyListenersOnSearchOpen();
}
@Override
@@ -455,4 +477,31 @@ public class MainSearchController implements SearchBarListener {
toolbar.slideUp(false);
}
}
+
+ public void addOnSearchShowListener(OnSearchShowListener listener) {
+ onSearchShowListenerList.add(listener);
+ }
+
+ public void removeOnSearchShowListener(OnSearchShowListener listener) {
+ onSearchShowListenerList.remove(listener);
+ }
+
+ private void notifyListenersOnSearchOpen() {
+ for (OnSearchShowListener listener : onSearchShowListenerList) {
+ listener.onSearchOpen();
+ }
+ }
+
+ private void notifyListenersOnSearchClose() {
+ for (OnSearchShowListener listener : onSearchShowListenerList) {
+ listener.onSearchClose();
+ }
+ }
+
+ /** Listener for search fragment show states change */
+ public interface OnSearchShowListener {
+ void onSearchOpen();
+
+ void onSearchClose();
+ }
}
diff --git a/java/com/android/dialer/main/impl/OldMainActivityPeer.java b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
index 9ceea28bf..a05ef6d16 100644
--- a/java/com/android/dialer/main/impl/OldMainActivityPeer.java
+++ b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
@@ -201,7 +201,8 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
bottomNav = mainActivity.findViewById(R.id.bottom_nav_bar);
MainBottomNavBarBottomNavTabListener bottomNavTabListener =
- new MainBottomNavBarBottomNavTabListener(mainActivity, mainActivity.getFragmentManager());
+ new MainBottomNavBarBottomNavTabListener(
+ mainActivity, mainActivity.getFragmentManager(), fab);
bottomNav.addOnTabSelectedListener(bottomNavTabListener);
// TODO(uabdullah): Handle case of when a sim is inserted/removed while the activity is open.
boolean showVoicemailTab = canVoicemailTabBeShown(mainActivity);
@@ -251,7 +252,7 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
* Check and return whether the voicemail tab should be shown or not. This includes the following
* criteria under which we show the voicemail tab:
* <li>The voicemail number exists (e.g we are able to dial into listen to voicemail or press and
- * hold 1)
+ * hold 1) (TODO (uabdullah): Handle this case properly)
* <li>Visual voicemail is enabled from the settings tab
* <li>Visual voicemail carrier is supported by dialer
* <li>There is no voicemail carrier app installed.
@@ -264,14 +265,18 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
PhoneAccountHandle defaultUserSelectedAccount =
TelecomUtil.getDefaultOutgoingPhoneAccount(context, PhoneAccount.SCHEME_VOICEMAIL);
- if (isVoicemailAvailable(context, defaultUserSelectedAccount)) {
- return true;
+ if (!isVoicemailAvailable(context, defaultUserSelectedAccount)) {
+ LogUtil.i("OldMainActivityPeer.canVoicemailTabBeShown", "Voicemail is not available");
+ return false;
}
+
if (VoicemailComponent.get(context)
.getVoicemailClient()
.isVoicemailEnabled(context, defaultUserSelectedAccount)) {
+ LogUtil.i("OldMainActivityPeer.canVoicemailTabBeShown", "Voicemail is not enabled");
return true;
}
+ LogUtil.i("OldMainActivityPeer.canVoicemailTabBeShown", "returning false");
return false;
}
@@ -674,6 +679,7 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
@Override
public void enableFloatingButton(boolean enabled) {
+ LogUtil.i("MainCallLogHost.enableFloatingButton", "enabled: " + enabled);
if (enabled) {
fab.show();
} else {
@@ -972,7 +978,10 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
/**
* Implementation of {@link OnBottomNavTabSelectedListener} that handles logic for showing each of
- * the main tabs.
+ * the main tabs and FAB.
+ *
+ * <p>TODO(calderwoodra, uabdullah): Rethink the logic for showing/hiding the FAB when new
+ * voicemail is ready.
*/
private static final class MainBottomNavBarBottomNavTabListener
implements OnBottomNavTabSelectedListener {
@@ -982,17 +991,22 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
private static final String CONTACTS_TAG = "contacts";
private static final String VOICEMAIL_TAG = "voicemail";
- private final FragmentManager fragmentManager;
private final Context context;
+ private final FragmentManager fragmentManager;
+ private final FloatingActionButton fab;
+
@TabIndex private int selectedTab = -1;
- private MainBottomNavBarBottomNavTabListener(Context context, FragmentManager fragmentManager) {
- this.fragmentManager = fragmentManager;
+ private MainBottomNavBarBottomNavTabListener(
+ Context context, FragmentManager fragmentManager, FloatingActionButton fab) {
this.context = context;
+ this.fragmentManager = fragmentManager;
+ this.fab = fab;
}
@Override
public void onSpeedDialSelected() {
+ LogUtil.enterBlock("MainBottomNavBarBottomNavTabListener.onSpeedDialSelected");
if (selectedTab != TabIndex.SPEED_DIAL) {
Logger.get(context).logImpression(DialerImpression.Type.NUI_SWITCH_TAB_TO_FAVORITE);
selectedTab = TabIndex.SPEED_DIAL;
@@ -1007,10 +1021,12 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
} else {
fragmentManager.beginTransaction().show(fragment).commit();
}
+ fab.show();
}
@Override
public void onCallLogSelected() {
+ LogUtil.enterBlock("MainBottomNavBarBottomNavTabListener.onCallLogSelected");
if (selectedTab != TabIndex.CALL_LOG) {
Logger.get(context).logImpression(DialerImpression.Type.NUI_SWITCH_TAB_TO_CALL_LOG);
selectedTab = TabIndex.CALL_LOG;
@@ -1025,10 +1041,12 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
} else {
fragmentManager.beginTransaction().show(fragment).commit();
}
+ fab.show();
}
@Override
public void onContactsSelected() {
+ LogUtil.enterBlock("MainBottomNavBarBottomNavTabListener.onContactsSelected");
if (selectedTab != TabIndex.CONTACTS) {
Logger.get(context).logImpression(DialerImpression.Type.NUI_SWITCH_TAB_TO_CONTACTS);
selectedTab = TabIndex.CONTACTS;
@@ -1047,10 +1065,12 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
} else {
fragmentManager.beginTransaction().show(fragment).commit();
}
+ fab.show();
}
@Override
public void onVoicemailSelected() {
+ LogUtil.enterBlock("MainBottomNavBarBottomNavTabListener.onVoicemailSelected");
if (selectedTab != TabIndex.VOICEMAIL) {
Logger.get(context).logImpression(DialerImpression.Type.NUI_SWITCH_TAB_TO_VOICEMAIL);
selectedTab = TabIndex.VOICEMAIL;
@@ -1059,13 +1079,16 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
VisualVoicemailCallLogFragment fragment =
(VisualVoicemailCallLogFragment) fragmentManager.findFragmentByTag(VOICEMAIL_TAG);
if (fragment == null) {
+ fragment = new VisualVoicemailCallLogFragment();
fragmentManager
.beginTransaction()
- .add(R.id.fragment_container, new VisualVoicemailCallLogFragment(), VOICEMAIL_TAG)
+ .add(R.id.fragment_container, fragment, VOICEMAIL_TAG)
.commit();
} else {
fragmentManager.beginTransaction().show(fragment).commit();
}
+ fragment.setUserVisibleHint(true);
+ fragment.onVisible();
}
private void hideAllFragments() {
@@ -1082,7 +1105,11 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
}
if (fragmentManager.findFragmentByTag(VOICEMAIL_TAG) != null) {
// Old VisualVoicemailFragment
- transaction.hide(fragmentManager.findFragmentByTag(VOICEMAIL_TAG));
+ VisualVoicemailCallLogFragment fragment =
+ (VisualVoicemailCallLogFragment) fragmentManager.findFragmentByTag(VOICEMAIL_TAG);
+ fragment.setUserVisibleHint(false);
+ fragment.onNotVisible();
+ transaction.hide(fragment);
}
transaction.commit();
}
diff --git a/java/com/android/dialer/main/impl/res/layout/main_activity.xml b/java/com/android/dialer/main/impl/res/layout/main_activity.xml
index 4f0284126..b69625e63 100644
--- a/java/com/android/dialer/main/impl/res/layout/main_activity.xml
+++ b/java/com/android/dialer/main/impl/res/layout/main_activity.xml
@@ -44,6 +44,7 @@
android:layout_margin="16dp"
android:layout_gravity="end|bottom"
android:src="@drawable/quantum_ic_dialpad_white_24"
+ android:contentDescription="@string/dialpad_button_content_description"
app:backgroundTint="?android:attr/colorAccent"/>
</android.support.design.widget.CoordinatorLayout>
diff --git a/java/com/android/dialer/main/impl/res/values/strings.xml b/java/com/android/dialer/main/impl/res/values/strings.xml
index c842beeff..4e65432e5 100644
--- a/java/com/android/dialer/main/impl/res/values/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values/strings.xml
@@ -40,4 +40,8 @@
<!-- Message displayed when there is no application available to handle voice search. [CHAR LIMIT=NONE] -->
<string name="voice_search_not_available">Voice search not available</string>
+
+ <!-- Content description for the button that displays the dialpad
+ [CHAR LIMIT=NONE] -->
+ <string name="dialpad_button_content_description">key pad</string>
</resources>