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

Commit 6f3dadc2 authored by Wenyi Wang's avatar Wenyi Wang Committed by Android (Google) Code Review
Browse files

Merge "Hide FAB if the account is read-only"

parents 16c29591 bf693301
Loading
Loading
Loading
Loading
+28 −5
Original line number Original line Diff line number Diff line
@@ -75,6 +75,8 @@ import com.android.contacts.common.list.ViewPagerTabs;
import com.android.contacts.common.logging.ListEvent;
import com.android.contacts.common.logging.ListEvent;
import com.android.contacts.common.logging.Logger;
import com.android.contacts.common.logging.Logger;
import com.android.contacts.common.logging.ScreenEvent.ScreenType;
import com.android.contacts.common.logging.ScreenEvent.ScreenType;
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.account.AccountWithDataSet;
import com.android.contacts.common.preference.ContactsPreferenceActivity;
import com.android.contacts.common.preference.ContactsPreferenceActivity;
import com.android.contacts.common.util.AccountFilterUtil;
import com.android.contacts.common.util.AccountFilterUtil;
import com.android.contacts.common.util.Constants;
import com.android.contacts.common.util.Constants;
@@ -138,6 +140,7 @@ public class PeopleActivity extends AppCompatContactsActivity implements
    private ContactsRequest mRequest;
    private ContactsRequest mRequest;


    private ActionBarAdapter mActionBarAdapter;
    private ActionBarAdapter mActionBarAdapter;
    private List<AccountWithDataSet> mWritableAccounts;
    private FloatingActionButtonController mFloatingActionButtonController;
    private FloatingActionButtonController mFloatingActionButtonController;
    private View mFloatingActionButtonContainer;
    private View mFloatingActionButtonContainer;
    private boolean wasLastFabAnimationScaleIn = false;
    private boolean wasLastFabAnimationScaleIn = false;
@@ -563,12 +566,25 @@ public class PeopleActivity extends AppCompatContactsActivity implements


    private void initializeFabVisibility() {
    private void initializeFabVisibility() {
        final boolean hideFab = mActionBarAdapter.isSearchMode()
        final boolean hideFab = mActionBarAdapter.isSearchMode()
                || mActionBarAdapter.isSelectionMode();
                || mActionBarAdapter.isSelectionMode()
                || !shouldShowFabForAccount();
        mFloatingActionButtonContainer.setVisibility(hideFab ? View.GONE : View.VISIBLE);
        mFloatingActionButtonContainer.setVisibility(hideFab ? View.GONE : View.VISIBLE);
        mFloatingActionButtonController.resetIn();
        mFloatingActionButtonController.resetIn();
        wasLastFabAnimationScaleIn = !hideFab;
        wasLastFabAnimationScaleIn = !hideFab;
    }
    }


    private boolean shouldShowFabForAccount() {
        return isCurrentAccountFilterWritable()
                || isAllContactsFilter(mContactListFilterController.getFilter());
    }

    private boolean isCurrentAccountFilterWritable() {
        final ContactListFilter currentFilter = mContactListFilterController.getFilter();
        final AccountWithDataSet accountOfCurrentFilter = new AccountWithDataSet(
                currentFilter.accountName, currentFilter.accountType, currentFilter.dataSet);
        return mWritableAccounts != null && mWritableAccounts.contains(accountOfCurrentFilter);
    }

    private void showFabWithAnimation(boolean showFab) {
    private void showFabWithAnimation(boolean showFab) {
        if (mFloatingActionButtonContainer == null) {
        if (mFloatingActionButtonContainer == null) {
            return;
            return;
@@ -596,6 +612,7 @@ public class PeopleActivity extends AppCompatContactsActivity implements
        }
        }


        setFilterAndUpdateTitle(mContactListFilterController.getFilter());
        setFilterAndUpdateTitle(mContactListFilterController.getFilter());
        showFabWithAnimation(shouldShowFabForAccount());


        invalidateOptionsMenuIfNeeded();
        invalidateOptionsMenuIfNeeded();
    }
    }
@@ -981,6 +998,9 @@ public class PeopleActivity extends AppCompatContactsActivity implements
            // Get rid of the default memu item overlay and show original account icons.
            // Get rid of the default memu item overlay and show original account icons.
            menuItem.getIcon().setColorFilter(Color.TRANSPARENT, PorterDuff.Mode.SRC_ATOP);
            menuItem.getIcon().setColorFilter(Color.TRANSPARENT, PorterDuff.Mode.SRC_ATOP);
        }
        }

        mWritableAccounts = AccountTypeManager.getInstance(this).getAccounts(true);
        initializeFabVisibility();
    }
    }


    @Override
    @Override
@@ -1057,8 +1077,7 @@ public class PeopleActivity extends AppCompatContactsActivity implements
                if (mAllFragment.isSearchMode()) {
                if (mAllFragment.isSearchMode()) {
                    previousScreen = ScreenType.SEARCH;
                    previousScreen = ScreenType.SEARCH;
                } else {
                } else {
                    if (mAllFragment.getFilter().filterType ==
                    if (isAllContactsFilter(mContactListFilterController.getFilter())) {
                            ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) {
                        if (position < mAllFragment.getAdapter().getNumberOfFavorites()) {
                        if (position < mAllFragment.getAdapter().getNumberOfFavorites()) {
                            previousScreen = ScreenType.FAVORITES;
                            previousScreen = ScreenType.FAVORITES;
                        } else {
                        } else {
@@ -1558,7 +1577,11 @@ public class PeopleActivity extends AppCompatContactsActivity implements


    // Persist filter only when it's of the type FILTER_TYPE_ALL_ACCOUNTS.
    // Persist filter only when it's of the type FILTER_TYPE_ALL_ACCOUNTS.
    private void persistFilterIfNeeded(ContactListFilter filter) {
    private void persistFilterIfNeeded(ContactListFilter filter) {
        mContactListFilterController.setContactListFilter(filter, /* persistent */
        mContactListFilterController.setContactListFilter(filter,
                filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS);
                /* persistent */ isAllContactsFilter(filter));
    }

    private boolean isAllContactsFilter(ContactListFilter filter) {
        return filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS;
    }
    }
}
}