diff options
Diffstat (limited to 'java/com/android/dialer/main/impl/NewMainActivityPeer.java')
-rw-r--r-- | java/com/android/dialer/main/impl/NewMainActivityPeer.java | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/java/com/android/dialer/main/impl/NewMainActivityPeer.java b/java/com/android/dialer/main/impl/NewMainActivityPeer.java new file mode 100644 index 000000000..cc4c3e7fd --- /dev/null +++ b/java/com/android/dialer/main/impl/NewMainActivityPeer.java @@ -0,0 +1,137 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.main.impl; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentTransaction; +import com.android.dialer.calllog.ui.NewCallLogFragment; +import com.android.dialer.main.MainActivityPeer; +import com.android.dialer.main.impl.BottomNavBar.OnBottomNavTabSelectedListener; +import com.android.dialer.main.impl.BottomNavBar.TabIndex; +import com.android.dialer.voicemail.listui.NewVoicemailFragment; + +/** MainActivityPeer that implements the new fragments. */ +public class NewMainActivityPeer implements MainActivityPeer { + + private final MainActivity mainActivity; + + public NewMainActivityPeer(MainActivity mainActivity) { + this.mainActivity = mainActivity; + } + + @Override + public void onActivityCreate(Bundle saveInstanceState) { + mainActivity.setContentView(R.layout.main_activity); + MainBottomNavBarBottomNavTabListener bottomNavBarBottomNavTabListener = + new MainBottomNavBarBottomNavTabListener(mainActivity.getSupportFragmentManager()); + BottomNavBar bottomNav = mainActivity.findViewById(R.id.bottom_nav_bar); + bottomNav.addOnTabSelectedListener(bottomNavBarBottomNavTabListener); + bottomNav.selectTab(TabIndex.SPEED_DIAL); + } + + @Override + public void onActivityResume() {} + + @Override + public void onActivityStop() {} + + @Override + public void onNewIntent(Intent intent) {} + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) {} + + @Override + public void onSaveInstanceState(Bundle bundle) {} + + @Override + public boolean onBackPressed() { + return false; + } + + /** + * Implementation of {@link OnBottomNavTabSelectedListener} that handles logic for showing each of + * the main tabs. + */ + private static final class MainBottomNavBarBottomNavTabListener + implements OnBottomNavTabSelectedListener { + + private static final String CALL_LOG_TAG = "call_log"; + private static final String VOICEMAIL_TAG = "voicemail"; + + private final FragmentManager supportFragmentManager; + + private MainBottomNavBarBottomNavTabListener(FragmentManager supportFragmentManager) { + this.supportFragmentManager = supportFragmentManager; + } + + @Override + public void onSpeedDialSelected() { + hideAllFragments(); + // TODO(calderwoodra): Implement SpeedDialFragment when FragmentUtils#getParent works + } + + @Override + public void onCallLogSelected() { + hideAllFragments(); + NewCallLogFragment fragment = + (NewCallLogFragment) supportFragmentManager.findFragmentByTag(CALL_LOG_TAG); + if (fragment == null) { + supportFragmentManager + .beginTransaction() + .add(R.id.fragment_container, new NewCallLogFragment(), CALL_LOG_TAG) + .commit(); + } else { + supportFragmentManager.beginTransaction().show(fragment).commit(); + } + } + + @Override + public void onContactsSelected() { + hideAllFragments(); + // TODO(calderwoodra): Implement ContactsFragment when FragmentUtils#getParent works + } + + @Override + public void onVoicemailSelected() { + hideAllFragments(); + NewVoicemailFragment fragment = + (NewVoicemailFragment) supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG); + if (fragment == null) { + supportFragmentManager + .beginTransaction() + .add(R.id.fragment_container, new NewVoicemailFragment(), VOICEMAIL_TAG) + .commit(); + } else { + supportFragmentManager.beginTransaction().show(fragment).commit(); + } + } + + private void hideAllFragments() { + FragmentTransaction supportTransaction = supportFragmentManager.beginTransaction(); + if (supportFragmentManager.findFragmentByTag(CALL_LOG_TAG) != null) { + supportTransaction.hide(supportFragmentManager.findFragmentByTag(CALL_LOG_TAG)); + } + if (supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG) != null) { + supportTransaction.hide(supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG)); + } + supportTransaction.commit(); + } + } +} |