Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 007b847d authored by roldenburg's avatar roldenburg Committed by android-build-merger
Browse files

Merge changes I699fc02f,Ifaacf982 am: ac386c93

am: 99bea0ce

Change-Id: I1f3e6652431a76eb1b2238a22539319698faf2b3
parents 575538a1 99bea0ce
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -372,7 +372,11 @@
  <string name="set_default_account">Always use this for calls</string>

  <!-- Title for dialog to select Phone Account for outgoing call.  [CHAR LIMIT=40] -->
  <string name="select_phone_account_for_calls">Call with</string>
  <string name="select_phone_account_for_calls">Choose SIM for this call</string>

  <!-- Checkbox label when selecting a SIM when calling a contact, to use the selected SIM for the
   same contact and never ask again [CHAR LIMIT=40]-->
  <string name="select_phone_account_for_calls_remember">Remember this choice</string>

  <!-- String used for actions in the dialer call log and the quick contact card to initiate
       a call to an individual.  The user is prompted to enter a note which is sent along with
+59 −43
Original line number Diff line number Diff line
40:10695 Android Annotations Support Library
10784:11344 Android Architecture Components Core Library
22182:11344 Android Architecture Components Lifecycle Library
33588:11344 Android Architecture Components Lifecycle Runtime Library
44951:11358 Android Common
56344:10695 Android Compat Support Library
67077:10695 Android Compatibility Library v13
77809:10695 Android Compatibility Library v4
88541:10695 Android Compatibility Library v7
99272:10695 Android Core UI Support Library
110006:10691 Android Core Utils Support Library
120732:10695 Android Design Support Library
131473:10695 Android Dynamic Animation Support Library
142206:10695 Android Fragments Support Library
152938:10695 Android Graphics Support Library
163674:10691 Android Media Compat Support Library
174404:10691 Android Transition Support Library
185117:11359 Apache Commons IO
196487:11358 Dagger
207861:11357 Error Prone
219234:11358 Google Auto
230607:11358 Guava JDK5
241980:11362 Guava JDK7
253353:11358 J2ObjC
264723:11358 JSR 250
276093:11365 JSR 330
287494:11358 Material Components for Android
298863:11358 OkHttp
310230:11358 Okio
321603:11358 OpenCensus
332972:11358 Volley
344341:10695 bubble
355056:12847 carrierservices
367915:11358 flexbox
379287:11358 gRPC Java
390663:12847 jibercsclient
403529:10173 libphonenumber
413713:18982 mime4j
432714:10699 shortcutbadger
443429:16013 Android SDK
459452:4771 Glide
464242:1096 Animal Sniffer
465360:22655 Checker Framework
488027:1602 JSR 305
10771:11344 Android Architecture Components
22164:11344 Android Architecture Components Core Library
33562:11344 Android Architecture Components Lifecycle Library
44968:11344 Android Architecture Components Lifecycle Runtime Library
56331:11358 Android Common
67724:10695 Android Compat Support Library
78457:10695 Android Compatibility Library v13
89189:10695 Android Compatibility Library v4
99921:10695 Android Compatibility Library v7
110652:10695 Android Core UI Support Library
121386:10691 Android Core Utils Support Library
132112:10695 Android Design Support Library
142853:10695 Android Dynamic Animation Support Library
153586:10695 Android Fragments Support Library
164318:10695 Android Graphics Support Library
175054:10691 Android Media Compat Support Library
185784:10691 Android Transition Support Library
196497:11359 Apache Commons IO
207917:10693 Compatibility Libraries for Android asynclayoutinflater.
218663:10693 Compatibility Libraries for Android collections.
229415:10693 Compatibility Libraries for Android coordinatorlayout.
240163:10693 Compatibility Libraries for Android cursoradapter.
250908:10693 Compatibility Libraries for Android customview.
261655:10693 Compatibility Libraries for Android documentfile.
272402:10693 Compatibility Libraries for Android drawerlayout.
283149:10693 Compatibility Libraries for Android interpolator.
293890:10693 Compatibility Libraries for Android loader.
304646:10693 Compatibility Libraries for Android localbroadcastmanager.
315386:10693 Compatibility Libraries for Android print.
326138:10693 Compatibility Libraries for Android slidingpanelayout.
336891:10693 Compatibility Libraries for Android swiperefreshlayout.
347635:10693 Compatibility Libraries for Android viewpager.
358339:11358 Dagger
369713:11357 Error Prone
381086:11358 Google Auto
392459:11358 Guava JDK5
403832:11362 Guava JDK7
415205:11358 J2ObjC
426575:11358 JSR 250
437945:11365 JSR 330
449346:11358 Material Components for Android
460715:11358 OkHttp
472082:11358 Okio
483455:11358 OpenCensus
494824:11358 Volley
506192:11357 ZXing
517569:12847 carrierservices
530428:11358 flexbox
541800:11358 gRPC Java
553167:11358 gson
564543:12847 jibercsclient
577409:10173 libphonenumber
587593:18982 mime4j
606594:10699 shortcutbadger
617309:16013 Android SDK
633344:22655 Checker Framework
656018:1096 Animal Sniffer
657124:4771 Glide
661907:1602 JSR 305
+3622 −511

File changed.

Preview size limit exceeded, changes collapsed.

+67 −89
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.dialer.main.impl;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.app.KeyguardManager;
import android.content.ContentResolver;
import android.content.Context;
@@ -31,6 +32,7 @@ import android.os.Handler;
import android.provider.CallLog.Calls;
import android.provider.ContactsContract.QuickContact;
import android.provider.VoicemailContract;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
@@ -83,7 +85,6 @@ import com.android.dialer.duo.DuoComponent;
import com.android.dialer.interactions.PhoneNumberInteraction;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.dialer.logging.ScreenEvent;
import com.android.dialer.main.MainActivityPeer;
import com.android.dialer.main.impl.bottomnav.BottomNavBar;
import com.android.dialer.main.impl.bottomnav.BottomNavBar.OnBottomNavTabSelectedListener;
@@ -107,6 +108,7 @@ import com.android.dialer.voicemailstatus.VoicemailStatusHelper;
import com.android.voicemail.VoicemailComponent;
import com.google.common.util.concurrent.ListenableFuture;
import java.util.Locale;
import java.util.Objects;
import java.util.concurrent.TimeUnit;

/**
@@ -214,8 +216,7 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen

    bottomNav = mainActivity.findViewById(R.id.bottom_nav_bar);
    MainBottomNavBarBottomNavTabListener bottomNavTabListener =
        new MainBottomNavBarBottomNavTabListener(
            mainActivity, mainActivity.getFragmentManager(), fab);
        new MainBottomNavBarBottomNavTabListener(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);
@@ -1101,140 +1102,117 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
    private static final String CONTACTS_TAG = "contacts";
    private static final String VOICEMAIL_TAG = "voicemail";

    private final MainActivity mainActivity;
    private final FragmentManager fragmentManager;
    private final FloatingActionButton fab;

    @TabIndex private int selectedTab = -1;

    private MainBottomNavBarBottomNavTabListener(
        MainActivity mainActivity, FragmentManager fragmentManager, FloatingActionButton fab) {
      this.mainActivity = mainActivity;
        FragmentManager fragmentManager, FloatingActionButton fab) {
      this.fragmentManager = fragmentManager;
      this.fab = fab;
      preloadCallLogFragment();
    }

    private void preloadCallLogFragment() {
      if (ConfigProviderBindings.get(mainActivity).getBoolean("nui_preload_call_log", true)) {
        CallLogFragment fragment = new CallLogFragment();
        fragmentManager
            .beginTransaction()
            .add(R.id.fragment_container, fragment, CALL_LOG_TAG)
            .hide(fragment)
            .commit();
      }
    }

    @Override
    public void onSpeedDialSelected() {
      LogUtil.enterBlock("MainBottomNavBarBottomNavTabListener.onSpeedDialSelected");
      if (selectedTab != TabIndex.SPEED_DIAL) {
        Logger.get(mainActivity).logScreenView(ScreenEvent.Type.MAIN_SPEED_DIAL, mainActivity);
        selectedTab = TabIndex.SPEED_DIAL;
      if (selectedTab == TabIndex.SPEED_DIAL) {
        return;
      }
      hideAllFragments();
      selectedTab = TabIndex.SPEED_DIAL;
      Fragment fragment = fragmentManager.findFragmentByTag(SPEED_DIAL_TAG);
      if (fragment == null) {
        fragmentManager
            .beginTransaction()
            .add(R.id.fragment_container, new OldSpeedDialFragment(), SPEED_DIAL_TAG)
            .commit();
      } else {
        fragmentManager.beginTransaction().show(fragment).commit();
      }
      showFragment(fragment == null ? new OldSpeedDialFragment() : fragment, SPEED_DIAL_TAG);
      fab.show();
    }

    @Override
    public void onCallLogSelected() {
      LogUtil.enterBlock("MainBottomNavBarBottomNavTabListener.onCallLogSelected");
      if (selectedTab != TabIndex.CALL_LOG) {
        Logger.get(mainActivity).logScreenView(ScreenEvent.Type.MAIN_CALL_LOG, mainActivity);
        selectedTab = TabIndex.CALL_LOG;
      }
      hideAllFragments();
      CallLogFragment fragment = (CallLogFragment) fragmentManager.findFragmentByTag(CALL_LOG_TAG);
      if (fragment == null) {
        fragmentManager
            .beginTransaction()
            .add(R.id.fragment_container, new CallLogFragment(), CALL_LOG_TAG)
            .commit();
      } else {
        fragmentManager.beginTransaction().show(fragment).commit();
      if (selectedTab == TabIndex.CALL_LOG) {
        return;
      }
      selectedTab = TabIndex.CALL_LOG;
      Fragment fragment = fragmentManager.findFragmentByTag(CALL_LOG_TAG);
      showFragment(fragment == null ? new CallLogFragment() : fragment, CALL_LOG_TAG);
      fab.show();
    }

    @Override
    public void onContactsSelected() {
      LogUtil.enterBlock("MainBottomNavBarBottomNavTabListener.onContactsSelected");
      if (selectedTab != TabIndex.CONTACTS) {
        Logger.get(mainActivity).logScreenView(ScreenEvent.Type.MAIN_CONTACTS, mainActivity);
        selectedTab = TabIndex.CONTACTS;
      }
      hideAllFragments();
      ContactsFragment fragment =
          (ContactsFragment) fragmentManager.findFragmentByTag(CONTACTS_TAG);
      if (fragment == null) {
        fragmentManager
            .beginTransaction()
            .add(
                R.id.fragment_container,
                ContactsFragment.newInstance(Header.ADD_CONTACT),
                CONTACTS_TAG)
            .commit();
      } else {
        fragmentManager.beginTransaction().show(fragment).commit();
      if (selectedTab == TabIndex.CONTACTS) {
        return;
      }
      selectedTab = TabIndex.CONTACTS;
      Fragment fragment = fragmentManager.findFragmentByTag(CONTACTS_TAG);
      showFragment(
          fragment == null ? ContactsFragment.newInstance(Header.ADD_CONTACT) : fragment,
          CONTACTS_TAG);
      fab.show();
    }

    @Override
    public void onVoicemailSelected() {
      LogUtil.enterBlock("MainBottomNavBarBottomNavTabListener.onVoicemailSelected");
      if (selectedTab != TabIndex.VOICEMAIL) {
        Logger.get(mainActivity).logScreenView(ScreenEvent.Type.MAIN_VOICEMAIL, mainActivity);
        selectedTab = TabIndex.VOICEMAIL;
      if (selectedTab == TabIndex.VOICEMAIL) {
        return;
      }
      hideAllFragments();
      selectedTab = TabIndex.VOICEMAIL;
      VisualVoicemailCallLogFragment fragment =
          (VisualVoicemailCallLogFragment) fragmentManager.findFragmentByTag(VOICEMAIL_TAG);
      if (fragment == null) {
        fragment = new VisualVoicemailCallLogFragment();
        fragmentManager
            .beginTransaction()
            .add(R.id.fragment_container, fragment, VOICEMAIL_TAG)
            .commit();
      } else {
        fragmentManager.beginTransaction().show(fragment).commit();
      }
      showFragment(fragment, VOICEMAIL_TAG);

      fragment.setUserVisibleHint(true);
      fragment.onVisible();
    }

    private void hideAllFragments() {
      android.app.FragmentTransaction transaction = fragmentManager.beginTransaction();
      if (fragmentManager.findFragmentByTag(SPEED_DIAL_TAG) != null) {
        transaction.hide(fragmentManager.findFragmentByTag(SPEED_DIAL_TAG));
      }
      if (fragmentManager.findFragmentByTag(CALL_LOG_TAG) != null) {
        // Old CallLogFragment
        transaction.hide(fragmentManager.findFragmentByTag(CALL_LOG_TAG));
      }
      if (fragmentManager.findFragmentByTag(CONTACTS_TAG) != null) {
        transaction.hide(fragmentManager.findFragmentByTag(CONTACTS_TAG));
      }
      if (fragmentManager.findFragmentByTag(VOICEMAIL_TAG) != null) {
        // Old VisualVoicemailFragment
        VisualVoicemailCallLogFragment fragment =
            (VisualVoicemailCallLogFragment) fragmentManager.findFragmentByTag(VOICEMAIL_TAG);
        fragment.setUserVisibleHint(false);
        fragment.onNotVisible();
        transaction.hide(fragment);
    /**
     * Shows the passed in fragment and hides all of the others in one transaction.
     *
     * <p>Executes all fragment shows/hides in one transaction with no conflicting transactions
     * (like showing and hiding the same fragment in the same transaction). See a bug.
     */
    private void showFragment(@NonNull Fragment fragment, String tag) {
      Fragment speedDial = fragmentManager.findFragmentByTag(SPEED_DIAL_TAG);
      Fragment callLog = fragmentManager.findFragmentByTag(CALL_LOG_TAG);
      Fragment contacts = fragmentManager.findFragmentByTag(CONTACTS_TAG);
      Fragment voicemail = fragmentManager.findFragmentByTag(VOICEMAIL_TAG);

      FragmentTransaction transaction = fragmentManager.beginTransaction();
      boolean fragmentShown = showIfEqualElseHide(transaction, fragment, speedDial);
      fragmentShown |= showIfEqualElseHide(transaction, fragment, callLog);
      fragmentShown |= showIfEqualElseHide(transaction, fragment, contacts);
      fragmentShown |= showIfEqualElseHide(transaction, fragment, voicemail);

      if (!fragmentShown) {
        transaction.add(R.id.fragment_container, fragment, tag);
      }
      transaction.commit();
    }

    /**
     * @param fragment1 will be shown if equal to {@code fragment2}
     * @param fragment2 will be hidden if unequal to {@code fragment1}
     * @return {@code true} if {@code fragment1} was shown
     */
    private boolean showIfEqualElseHide(
        FragmentTransaction transaction, Fragment fragment1, Fragment fragment2) {
      boolean shown = false;
      if (Objects.equals(fragment1, fragment2)) {
        transaction.show(fragment1);
        shown = true;
      } else if (fragment2 != null) {
        if (fragment2 instanceof VisualVoicemailCallLogFragment) {
          fragment2.setUserVisibleHint(false);
          ((VisualVoicemailCallLogFragment) fragment2).onNotVisible();
        }
        transaction.hide(fragment2);
      }
      return shown;
    }
  }

  private static final class LastTabController {
+23 −363

File changed.

Preview size limit exceeded, changes collapsed.

Loading