summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/main/impl/MainActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/main/impl/MainActivity.java')
-rw-r--r--java/com/android/dialer/main/impl/MainActivity.java131
1 files changed, 119 insertions, 12 deletions
diff --git a/java/com/android/dialer/main/impl/MainActivity.java b/java/com/android/dialer/main/impl/MainActivity.java
index 52b39f0e9..87bd8dd58 100644
--- a/java/com/android/dialer/main/impl/MainActivity.java
+++ b/java/com/android/dialer/main/impl/MainActivity.java
@@ -18,19 +18,29 @@ package com.android.dialer.main.impl;
import android.content.Context;
import android.content.Intent;
+import android.net.Uri;
import android.os.Bundle;
-import android.support.design.widget.TabLayout;
-import android.support.v4.view.ViewPager;
+import android.provider.ContactsContract.QuickContact;
+import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import android.widget.ImageView;
import android.widget.Toast;
+import com.android.dialer.calllog.ui.NewCallLogFragment;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.contactsfragment.ContactsFragment;
+import com.android.dialer.contactsfragment.ContactsFragment.Header;
+import com.android.dialer.contactsfragment.ContactsFragment.OnContactSelectedListener;
+import com.android.dialer.main.impl.BottomNavBar.OnBottomNavTabSelectedListener;
+import com.android.dialer.speeddial.SpeedDialFragment;
+import com.android.dialer.voicemail.listui.NewVoicemailFragment;
/** This is the main activity for dialer. It hosts favorites, call log, search, dialpad, etc... */
-public final class MainActivity extends AppCompatActivity implements View.OnClickListener {
+public final class MainActivity extends AppCompatActivity
+ implements View.OnClickListener, OnContactSelectedListener {
/**
* @param context Context of the application package implementing MainActivity class.
@@ -53,12 +63,9 @@ public final class MainActivity extends AppCompatActivity implements View.OnClic
private void initLayout() {
findViewById(R.id.fab).setOnClickListener(this);
- ViewPager pager = findViewById(R.id.pager);
- MainPagerAdapter pagerAdapter = new MainPagerAdapter(this, getSupportFragmentManager());
- pager.setAdapter(pagerAdapter);
-
- TabLayout tabLayout = findViewById(R.id.tab_layout);
- tabLayout.setupWithViewPager(pager);
+ BottomNavBar navBar = findViewById(R.id.bottom_nav_bar);
+ navBar.setOnTabSelectedListener(new MainBottomNavBarBottomNavTabListener());
+ navBar.selectTab(BottomNavBar.TabIndex.SPEED_DIAL);
Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setPopupTheme(android.R.style.Theme_Material_Light);
@@ -77,9 +84,6 @@ public final class MainActivity extends AppCompatActivity implements View.OnClic
if (item.getItemId() == R.id.search) {
// open search
return true;
- } else if (item.getItemId() == R.id.contacts) {
- // open contacts
- return true;
} else {
// TODO(calderwoodra) handle other menu items
return super.onOptionsItemSelected(item);
@@ -92,4 +96,107 @@ public final class MainActivity extends AppCompatActivity implements View.OnClic
// open dialpad search
}
}
+
+ @Override
+ public void onContactSelected(ImageView photo, Uri contactUri, long contactId) {
+ // TODO(calderwoodra): Add impression logging
+ QuickContact.showQuickContact(
+ this, photo, contactUri, QuickContact.MODE_LARGE, null /* excludeMimes */);
+ }
+
+ /**
+ * Implementation of {@link OnBottomNavTabSelectedListener} that handles logic for showing each of
+ * the main tabs.
+ */
+ private final class MainBottomNavBarBottomNavTabListener
+ implements OnBottomNavTabSelectedListener {
+
+ private static final String SPEED_DIAL_TAG = "speed_dial";
+ private static final String CALL_LOG_TAG = "call_log";
+ private static final String CONTACTS_TAG = "contacts";
+ private static final String VOICEMAIL_TAG = "voicemail";
+
+ @Override
+ public void onSpeedDialSelected() {
+ hideAllFragments();
+ SpeedDialFragment fragment =
+ (SpeedDialFragment) getFragmentManager().findFragmentByTag(SPEED_DIAL_TAG);
+ if (fragment == null) {
+ getFragmentManager()
+ .beginTransaction()
+ .add(R.id.fragment_container, SpeedDialFragment.newInstance(), SPEED_DIAL_TAG)
+ .commit();
+ } else {
+ getFragmentManager().beginTransaction().show(fragment).commit();
+ }
+ }
+
+ @Override
+ public void onCallLogSelected() {
+ hideAllFragments();
+ NewCallLogFragment fragment =
+ (NewCallLogFragment) getSupportFragmentManager().findFragmentByTag(CALL_LOG_TAG);
+ if (fragment == null) {
+ getSupportFragmentManager()
+ .beginTransaction()
+ .add(R.id.fragment_container, new NewCallLogFragment(), CALL_LOG_TAG)
+ .commit();
+ } else {
+ getSupportFragmentManager().beginTransaction().show(fragment).commit();
+ }
+ }
+
+ @Override
+ public void onContactsSelected() {
+ hideAllFragments();
+ ContactsFragment fragment =
+ (ContactsFragment) getFragmentManager().findFragmentByTag(CONTACTS_TAG);
+ if (fragment == null) {
+ getFragmentManager()
+ .beginTransaction()
+ .add(
+ R.id.fragment_container,
+ ContactsFragment.newInstance(Header.ADD_CONTACT),
+ CONTACTS_TAG)
+ .commit();
+ } else {
+ getFragmentManager().beginTransaction().show(fragment).commit();
+ }
+ }
+
+ @Override
+ public void onVoicemailSelected() {
+ hideAllFragments();
+ NewVoicemailFragment fragment =
+ (NewVoicemailFragment) getSupportFragmentManager().findFragmentByTag(VOICEMAIL_TAG);
+ if (fragment == null) {
+ getSupportFragmentManager()
+ .beginTransaction()
+ .add(R.id.fragment_container, new NewVoicemailFragment(), VOICEMAIL_TAG)
+ .commit();
+ } else {
+ getSupportFragmentManager().beginTransaction().show(fragment).commit();
+ }
+ }
+
+ private void hideAllFragments() {
+ FragmentTransaction supportTransaction = getSupportFragmentManager().beginTransaction();
+ if (getSupportFragmentManager().findFragmentByTag(CALL_LOG_TAG) != null) {
+ supportTransaction.hide(getSupportFragmentManager().findFragmentByTag(CALL_LOG_TAG));
+ }
+ if (getSupportFragmentManager().findFragmentByTag(VOICEMAIL_TAG) != null) {
+ supportTransaction.hide(getSupportFragmentManager().findFragmentByTag(VOICEMAIL_TAG));
+ }
+ supportTransaction.commit();
+
+ android.app.FragmentTransaction transaction = getFragmentManager().beginTransaction();
+ if (getFragmentManager().findFragmentByTag(SPEED_DIAL_TAG) != null) {
+ transaction.hide(getFragmentManager().findFragmentByTag(SPEED_DIAL_TAG));
+ }
+ if (getFragmentManager().findFragmentByTag(CONTACTS_TAG) != null) {
+ transaction.hide(getFragmentManager().findFragmentByTag(CONTACTS_TAG));
+ }
+ transaction.commit();
+ }
+ }
}