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

Commit 0b6330f0 authored by Wenyi Wang's avatar Wenyi Wang
Browse files

Make labels view have grey app bar

Bug: 31268067

Test: manual
  - navigate b/w fragments + rotate screen
  - create a new label and delete a label
  - enter/exit edit mode of group fragment and contacts fragment

Change-Id: I88205faf7b97b6547b9783547dc35a51bec9fa71
parent 92b9931f
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -42,6 +42,9 @@
    <color name="primary_color_dark">#0277bd</color>
    <color name="primary_color">#0288d1</color>

    <color name="group_primary_color_dark">#546E7A</color>
    <color name="group_primary_color">#607D8B</color>

    <!-- Color of the selected tab underline -->
    <color name="contacts_accent_color">#FFFFFF</color>

+17 −9
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ import com.android.contacts.common.preference.ContactsPreferenceActivity;
import com.android.contacts.common.util.AccountFilterUtil;
import com.android.contacts.common.util.AccountsListAdapter.AccountListFilter;
import com.android.contacts.common.util.ImplicitIntentsUtil;
import com.android.contacts.common.util.MaterialColorMapUtils;
import com.android.contacts.common.util.ViewUtil;
import com.android.contacts.editor.ContactEditorFragment;
import com.android.contacts.editor.SelectAccountDialogFragment;
@@ -134,6 +135,7 @@ public abstract class ContactsDrawerActivity extends AppCompatContactsActivity i
            // another fragment in navigation drawer, the current search/selection mode will be
            // overlaid by the action bar of the newly-created fragment.
            stopSearchAndSelection();
            updateStatusBarBackground();
        }

        private void stopSearchAndSelection() {
@@ -170,7 +172,7 @@ public abstract class ContactsDrawerActivity extends AppCompatContactsActivity i
            super.onDrawerStateChanged(newState);
            // Set transparent status bar when drawer starts to move.
            if (newState != DrawerLayout.STATE_IDLE) {
                makeStatusBarTransparent();
                updateStatusBarBackground();
            }
            if (mRunnable != null && newState == DrawerLayout.STATE_IDLE) {
                mRunnable.run();
@@ -285,17 +287,23 @@ public abstract class ContactsDrawerActivity extends AppCompatContactsActivity i
    protected void onResume() {
        super.onResume();
        if (mDrawer.isDrawerOpen(GravityCompat.START)) {
            makeStatusBarTransparent();
            updateStatusBarBackground();
        }
    }

    private void makeStatusBarTransparent() {
        // Avoid making status bar transparent when action bar's selection mode is on.
        if (getWindow().getStatusBarColor() !=
                ContextCompat.getColor(this, R.color.contextual_selection_bar_status_bar_color)
                        && CompatUtils.isLollipopCompatible()) {
            getWindow().setStatusBarColor(Color.TRANSPARENT);
    public void updateStatusBarBackground() {
        updateStatusBarBackground(/* color */ -1);
    }

    public void updateStatusBarBackground(int color) {
        if (!CompatUtils.isLollipopCompatible()) return;
        if (color == -1) {
            mDrawer.setStatusBarBackgroundColor(MaterialColorMapUtils.getStatusBarColor(this));
        } else {
            mDrawer.setStatusBarBackgroundColor(color);
        }
        mDrawer.invalidate();
        getWindow().setStatusBarColor(Color.TRANSPARENT);
    }

    // Set up fragment manager to load groups and filters.
@@ -417,7 +425,7 @@ public abstract class ContactsDrawerActivity extends AppCompatContactsActivity i
        return null;
    }

    protected boolean isGroupView() {
    public boolean isGroupView() {
        return mCurrentView == ContactsView.GROUP_VIEW;
    }

+8 −5
Original line number Diff line number Diff line
@@ -43,9 +43,11 @@ import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.TextView;

import com.android.contacts.ContactsDrawerActivity;
import com.android.contacts.R;
import com.android.contacts.activities.ActionBarAdapter.Listener.Action;
import com.android.contacts.common.compat.CompatUtils;
import com.android.contacts.common.util.MaterialColorMapUtils;
import com.android.contacts.list.ContactsRequest;

import java.util.ArrayList;
@@ -365,6 +367,8 @@ public class ActionBarAdapter implements OnCloseListener {
                = (mSearchContainer.getParent() == null) == mSearchMode;
        final boolean isTabHeightChanging = isSearchModeChanging || isSelectionModeChanging;

        // Update toolbar and status bar color.
        mToolBarFrame.setBackgroundColor(MaterialColorMapUtils.getToolBarColor(mActivity));
        updateStatusBarColor(isSelectionModeChanging && !isSearchModeChanging);

        // When skipAnimation=true, it is possible that we will switch from search mode
@@ -494,12 +498,11 @@ public class ActionBarAdapter implements OnCloseListener {
                    mActivity, R.color.contextual_selection_bar_status_bar_color);
            runStatusBarAnimation(/* colorTo */ cabStatusBarColor);
        } else {
            final int normalStatusBarColor = ContextCompat.getColor(
                    mActivity, R.color.primary_color_dark);
            if (shouldAnimate) {
                runStatusBarAnimation(/* colorTo */ normalStatusBarColor);
            } else {
                mActivity.getWindow().setStatusBarColor(normalStatusBarColor);
                runStatusBarAnimation(/* colorTo */
                        MaterialColorMapUtils.getStatusBarColor(mActivity));
            } else if (mActivity instanceof ContactsDrawerActivity) {
                ((ContactsDrawerActivity) mActivity).updateStatusBarBackground();
            }
        }
    }
+16 −2
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@ import android.content.Context;
import android.content.Intent;
import android.content.SyncStatusObserver;
import android.content.IntentFilter;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
@@ -34,6 +36,7 @@ import android.provider.ContactsContract;
import android.provider.ContactsContract.ProviderStatus;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.SwipeRefreshLayout;
@@ -692,11 +695,13 @@ public class PeopleActivity extends ContactsDrawerActivity {
    }

    private boolean isAllFragmentInSelectionMode() {
        return mAllFragment.getActionBarAdapter().isSelectionMode();
        return mAllFragment.getActionBarAdapter() != null
                && mAllFragment.getActionBarAdapter().isSelectionMode();
    }

    private boolean isAllFragmentInSearchMode() {
        return mAllFragment.getActionBarAdapter().isSearchMode();
        return mAllFragment.getActionBarAdapter() != null
                && mAllFragment.getActionBarAdapter().isSearchMode();
    }

    @Override
@@ -789,6 +794,7 @@ public class PeopleActivity extends ContactsDrawerActivity {
                transaction.replace(
                        R.id.contacts_list_container, duplicatesFragment, TAG_DUPLICATES);
                transaction.add(duplicatesUtilFragment, TAG_DUPLICATES_UTIL);
                resetToolBarStatusBarColor();
            }
        }
        transaction.addToBackStack(TAG_SECOND_LEVEL);
@@ -814,6 +820,14 @@ public class PeopleActivity extends ContactsDrawerActivity {
        getFragmentManager().popBackStackImmediate(
                TAG_SECOND_LEVEL, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        mMembersFragment = null;
        resetToolBarStatusBarColor();
    }

    // Reset toolbar and status bar color to Contacts theme color.
    private void resetToolBarStatusBarColor() {
        findViewById(R.id.toolbar_frame).setBackgroundColor(
                ContextCompat.getColor(this, R.color.primary_color));
        updateStatusBarBackground(ContextCompat.getColor(this, R.color.primary_color_dark));
    }

    @Override
+26 −1
Original line number Diff line number Diff line
@@ -16,13 +16,16 @@

package com.android.contacts.common.util;

import com.android.contacts.common.R;
import com.android.contacts.ContactsDrawerActivity;
import com.android.contacts.R;

import android.app.Activity;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.Trace;
import android.support.v4.content.ContextCompat;

public class MaterialColorMapUtils {
    private final TypedArray sPrimaryColors;
@@ -177,4 +180,26 @@ public class MaterialColorMapUtils {

        return H;
    }

    /**
     * Returns status bar color for group view and non-group views.
     */
    public static int getStatusBarColor(Activity activity) {
        final boolean isGroupView = activity instanceof ContactsDrawerActivity
                && ((ContactsDrawerActivity) activity).isGroupView();
        return isGroupView
                ? ContextCompat.getColor(activity, R.color.group_primary_color_dark)
                : ContextCompat.getColor(activity, R.color.primary_color_dark);
    }

    /**
     * Returns toolbar color for group view and non-group views.
     */
    public static int getToolBarColor(Activity activity) {
        final boolean isGroupView = activity instanceof ContactsDrawerActivity
                && ((ContactsDrawerActivity) activity).isGroupView();
        return isGroupView
                ? ContextCompat.getColor(activity, R.color.group_primary_color)
                : ContextCompat.getColor(activity, R.color.primary_color);
    }
}