summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/main
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/main')
-rw-r--r--java/com/android/dialer/main/impl/BottomNavBar.java2
-rw-r--r--java/com/android/dialer/main/impl/MainActivity.java16
-rw-r--r--java/com/android/dialer/main/impl/MainSearchController.java11
-rw-r--r--java/com/android/dialer/main/impl/OldMainActivityPeer.java65
4 files changed, 91 insertions, 3 deletions
diff --git a/java/com/android/dialer/main/impl/BottomNavBar.java b/java/com/android/dialer/main/impl/BottomNavBar.java
index 6d43ee29d..97f526251 100644
--- a/java/com/android/dialer/main/impl/BottomNavBar.java
+++ b/java/com/android/dialer/main/impl/BottomNavBar.java
@@ -29,7 +29,7 @@ import java.util.ArrayList;
import java.util.List;
/** Dialer Bottom Nav Bar for {@link MainActivity}. */
-final class BottomNavBar extends LinearLayout {
+public final class BottomNavBar extends LinearLayout {
/** Index for each tab in the bottom nav. */
@Retention(RetentionPolicy.SOURCE)
diff --git a/java/com/android/dialer/main/impl/MainActivity.java b/java/com/android/dialer/main/impl/MainActivity.java
index 1a79fbab3..24c3df575 100644
--- a/java/com/android/dialer/main/impl/MainActivity.java
+++ b/java/com/android/dialer/main/impl/MainActivity.java
@@ -26,6 +26,7 @@ import com.android.dialer.interactions.PhoneNumberInteraction.DisambigDialogDism
import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorCode;
import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorListener;
import com.android.dialer.main.MainActivityPeer;
+import com.android.dialer.main.impl.BottomNavBar.TabIndex;
import com.android.dialer.util.TransactionSafeActivity;
/** This is the main activity for dialer. It hosts favorites, call log, search, dialpad, etc... */
@@ -38,6 +39,21 @@ public final class MainActivity extends TransactionSafeActivity
private MainActivityPeer activePeer;
+ public static Intent getShowCallLogIntent(Context context) {
+ return getShowTabIntent(context, TabIndex.CALL_LOG);
+ }
+
+ /** Returns intent that will open MainActivity to the specified tab. */
+ public static Intent getShowTabIntent(Context context, @TabIndex int tabIndex) {
+ if (ConfigProviderComponent.get(context)
+ .getConfigProvider()
+ .getBoolean("nui_peer_enabled", false)) {
+ // TODO(calderwoodra): implement this in NewMainActivityPeer
+ return null;
+ }
+ return OldMainActivityPeer.getShowTabIntent(context, tabIndex);
+ }
+
/**
* @param context Context of the application package implementing MainActivity class.
* @return intent for MainActivity.class
diff --git a/java/com/android/dialer/main/impl/MainSearchController.java b/java/com/android/dialer/main/impl/MainSearchController.java
index 1defdf578..62ecc5389 100644
--- a/java/com/android/dialer/main/impl/MainSearchController.java
+++ b/java/com/android/dialer/main/impl/MainSearchController.java
@@ -84,8 +84,17 @@ final class MainSearchController implements SearchBarListener {
this.toolbar = toolbar;
}
+ /** Should be called if we're showing the dialpad because of a new ACTION_DIAL intent. */
+ public void showDialpadFromNewIntent(boolean animate) {
+ showDialpad(animate, true);
+ }
+
/** Shows the dialpad, hides the FAB and slides the toolbar off screen. */
public void showDialpad(boolean animate) {
+ showDialpad(animate, false);
+ }
+
+ private void showDialpad(boolean animate, boolean fromNewIntent) {
Assert.checkArgument(!isDialpadVisible());
fab.hide();
@@ -106,9 +115,11 @@ final class MainSearchController implements SearchBarListener {
// Show Dialpad
if (getDialpadFragment() == null) {
DialpadFragment dialpadFragment = new DialpadFragment();
+ dialpadFragment.setStartedFromNewIntent(fromNewIntent);
transaction.add(R.id.dialpad_fragment_container, dialpadFragment, DIALPAD_FRAGMENT_TAG);
} else {
DialpadFragment dialpadFragment = getDialpadFragment();
+ dialpadFragment.setStartedFromNewIntent(fromNewIntent);
transaction.show(dialpadFragment);
}
transaction.commit();
diff --git a/java/com/android/dialer/main/impl/OldMainActivityPeer.java b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
index 16b74d5ff..dd766d087 100644
--- a/java/com/android/dialer/main/impl/OldMainActivityPeer.java
+++ b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
@@ -31,6 +31,7 @@ import android.provider.ContactsContract.QuickContact;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.widget.Toolbar;
+import android.telecom.PhoneAccount;
import android.view.View;
import android.widget.ImageView;
import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
@@ -91,6 +92,11 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
private static final String KEY_CURRENT_TAB = "current_tab";
private static final String KEY_LAST_TAB = "last_tab";
+ /** Action and extra to let the activity know which tab to open up to. */
+ private static final String ACTION_SHOW_TAB = "ACTION_SHOW_TAB";
+
+ private static final String EXTRA_SHOW_TAB = "EXTRA_SHOW_TAB";
+
private final MainActivity mainActivity;
// Contacts
@@ -125,6 +131,22 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
private View snackbarContainer;
private UiListener<String> getLastOutgoingCallListener;
+ public static Intent getShowTabIntent(Context context, @TabIndex int tabIndex) {
+ Intent intent = new Intent(context, MainActivity.class);
+ intent.setAction(ACTION_SHOW_TAB);
+ intent.putExtra(EXTRA_SHOW_TAB, tabIndex);
+ // TODO(calderwoodra): Do we need to set some URI data here
+ return intent;
+ }
+
+ static boolean isShowTabIntent(Intent intent) {
+ return ACTION_SHOW_TAB.equals(intent.getAction()) && intent.hasExtra(EXTRA_SHOW_TAB);
+ }
+
+ static @TabIndex int getTabFromIntent(Intent intent) {
+ return intent.getIntExtra(EXTRA_SHOW_TAB, -1);
+ }
+
public OldMainActivityPeer(MainActivity mainActivity) {
this.mainActivity = mainActivity;
}
@@ -193,13 +215,52 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
searchController.onRestoreInstanceState(savedInstanceState);
bottomNav.selectTab(savedInstanceState.getInt(KEY_CURRENT_TAB));
} else {
- lastTabController.selectLastTab();
+ showTabOnIntent(mainActivity.getIntent());
}
}
@Override
public void onNewIntent(Intent intent) {
- lastTabController.selectLastTab();
+ showTabOnIntent(intent);
+ }
+
+ private void showTabOnIntent(Intent intent) {
+ if (isShowTabIntent(intent)) {
+ bottomNav.selectTab(getTabFromIntent(intent));
+ return;
+ }
+
+ if (isDialIntent(intent)) {
+ searchController.showDialpadFromNewIntent(false);
+ // Dialpad will grab the intent and populate the number
+ return;
+ }
+
+ if (lastTabController.isEnabled) {
+ lastTabController.selectLastTab();
+ return;
+ }
+
+ bottomNav.selectTab(TabIndex.SPEED_DIAL);
+ }
+
+ /** Returns true if the given intent contains a phone number to populate the dialer with */
+ private boolean isDialIntent(Intent intent) {
+ if (intent == null || intent.getData() == null) {
+ return false;
+ }
+
+ if (Intent.ACTION_DIAL.equals(intent.getAction())) {
+ return true;
+ }
+
+ if (Intent.ACTION_VIEW.equals(intent.getAction())) {
+ Uri data = intent.getData();
+ if (data != null && PhoneAccount.SCHEME_TEL.equals(data.getScheme())) {
+ return true;
+ }
+ }
+ return false;
}
@Override