diff options
Diffstat (limited to 'java/com/android/dialer/main/impl/MainActivity.java')
-rw-r--r-- | java/com/android/dialer/main/impl/MainActivity.java | 131 |
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(); + } + } } |