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

Commit e8b9662a authored by Lyn Han's avatar Lyn Han Committed by android-build-merger
Browse files

Update color for permission, settings, pointer am: 02cca81c

am: 1c1b8a61

Change-Id: I0d5aa6417a44db1c4c154e48dfc77e0cde655ccd
parents 1aa8074c 1c1b8a61
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@
    />

    <FrameLayout
        android:id="@+id/header_permission_wrapper"
        android:id="@+id/permission_or_settings"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:animateLayoutChanges="true">
+2 −2
Original line number Diff line number Diff line
@@ -222,14 +222,14 @@ public class BubbleController implements BubbleExpandedView.OnBubbleBlockedListe
    @Override
    public void onUiModeChanged() {
        if (mStackView != null) {
            mStackView.onConfigChanged();
            mStackView.onThemeChanged();
        }
    }

    @Override
    public void onOverlayChanged() {
        if (mStackView != null) {
            mStackView.onConfigChanged();
            mStackView.onThemeChanged();
        }
    }

+61 −44
Original line number Diff line number Diff line
@@ -69,7 +69,7 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.stack.ExpandableViewState;

/**
 * Container for the expanded bubble view, handles rendering the caret and header of the view.
 * Container for the expanded bubble view, handles rendering the caret and settings icon.
 */
public class BubbleExpandedView extends LinearLayout implements View.OnClickListener {
    private static final String TAG = "BubbleExpandedView";
@@ -82,6 +82,7 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList

    // Permission view
    private View mPermissionView;
    private TextView mPermissionPrompt;

    // Views for expanded state
    private ExpandableNotificationRow mNotifRow;
@@ -94,9 +95,13 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList
    private boolean mNeedsNewHeight;

    private int mMinHeight;
    private int mHeaderHeight;
    private int mSettingsIconHeight;
    private int mBubbleHeight;
    private int mPermissionHeight;
    private int mIconInset;
    private Drawable mSettingsIconDrawable;
    private int mPointerWidth;
    private int mPointerHeight;

    private NotificationEntry mEntry;
    private PackageManager mPm;
@@ -173,20 +178,21 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList

        Resources res = getResources();
        mPointerView = findViewById(R.id.pointer_view);
        int width = res.getDimensionPixelSize(R.dimen.bubble_pointer_width);
        int height = res.getDimensionPixelSize(R.dimen.bubble_pointer_height);
        mPointerWidth = res.getDimensionPixelSize(R.dimen.bubble_pointer_width);
        mPointerHeight = res.getDimensionPixelSize(R.dimen.bubble_pointer_height);

        TypedArray ta = getContext().obtainStyledAttributes(
                new int[] {android.R.attr.colorBackgroundFloating});
        int bgColor = ta.getColor(0, Color.WHITE);
        ta.recycle();

        ShapeDrawable triangleDrawable = new ShapeDrawable(
                TriangleShape.create(width, height, false /* pointUp */));
        ShapeDrawable triangleDrawable = new ShapeDrawable(TriangleShape.create(
                mPointerWidth, mPointerHeight, false /* pointUp */));

        triangleDrawable.setTint(bgColor);
        mPointerView.setBackground(triangleDrawable);

        FrameLayout viewWrapper = findViewById(R.id.header_permission_wrapper);
        FrameLayout permissionOrSettings = findViewById(R.id.permission_or_settings);

        LayoutTransition transition = new LayoutTransition();
        transition.setDuration(200);
@@ -200,18 +206,21 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList
        transition.setInterpolator(LayoutTransition.DISAPPEARING, Interpolators.ALPHA_OUT);

        transition.setAnimateParentHierarchy(false);
        viewWrapper.setLayoutTransition(transition);
        viewWrapper.getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
        permissionOrSettings.setLayoutTransition(transition);
        permissionOrSettings.getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);

        mHeaderHeight = getContext().getResources().getDimensionPixelSize(
        mSettingsIconHeight = getContext().getResources().getDimensionPixelSize(
                R.dimen.bubble_expanded_header_height);
        mSettingsIcon = findViewById(R.id.settings_button);
        mIconInset = getResources().getDimensionPixelSize(R.dimen.bubble_icon_inset);
        mSettingsIcon.setOnClickListener(this);
        // Save initial drawable to create adaptive icons that will take its place.
        mSettingsIconDrawable = mSettingsIcon.getDrawable();

        mPermissionHeight = getContext().getResources().getDimensionPixelSize(
                R.dimen.bubble_permission_height);

        mPermissionView = findViewById(R.id.permission_layout);
        mSettingsIcon = findViewById(R.id.settings_button);
        mSettingsIcon.setOnClickListener(this);
        updateHeaderColor();
        mPermissionPrompt = mPermissionView.findViewById(R.id.prompt);

        findViewById(R.id.no_bubbles_button).setOnClickListener(this);
        findViewById(R.id.yes_bubbles_button).setOnClickListener(this);
@@ -264,7 +273,7 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList
    /**
     * Creates a background with corners rounded based on how the view is configured to display
     */
    private Drawable createHeaderPermissionBackground(int bgColor) {
    private Drawable createPermissionBackground(int bgColor) {
        TypedArray ta2 = getContext().obtainStyledAttributes(
                new int[] {android.R.attr.dialogCornerRadius});
        final float cr = ta2.getDimension(0, 0f);
@@ -311,8 +320,8 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList
        if (mAppIcon == null) {
            mAppIcon = mPm.getDefaultActivityIcon();
        }
        updateHeaderView();
        updatePermissionView();
        updateTheme();
        togglePermissionOrSettings();
        updateExpandedView();
    }

@@ -338,12 +347,12 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList

    /**
     * Updates the entry backing this view. This will not re-populate ActivityView, it will
     * only update the deep-links in the header, the title, and the height of the view.
     * only update the deep-links in the title, and the height of the view.
     */
    public void update(NotificationEntry entry) {
        if (entry.key.equals(mEntry.key)) {
            mEntry = entry;
            updateHeaderView();
            updateSettingsContentDescription();
            updateHeight();
        } else {
            Log.w(TAG, "Trying to update entry with different key, new entry: "
@@ -351,35 +360,36 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList
        }
    }

    /**
     * Update header color and icon shape when theme changes.
     */
    void updateHeaderColor() {
    void updateTheme() {
        // Get new colors.
        TypedArray ta = mContext.obtainStyledAttributes(
                new int[]{android.R.attr.colorBackgroundFloating, android.R.attr.colorForeground});
        int backgroundColor = ta.getColor(0, Color.WHITE /* default */);
        int foregroundColor = ta.getColor(1, Color.BLACK /* default */);
        ta.recycle();

        mPermissionView.setBackground(createHeaderPermissionBackground(backgroundColor));

        Drawable settingsIcon =  mSettingsIcon.getDrawable();
        settingsIcon.setTint(foregroundColor);
        // Must clear tint first - otherwise tint updates inconsistently.
        mSettingsIconDrawable.setTintList(null);
        mSettingsIconDrawable.setTint(foregroundColor);

        int mIconInset = getResources().getDimensionPixelSize(R.dimen.bubble_icon_inset);
        InsetDrawable foreground = new InsetDrawable(settingsIcon, mIconInset);
        InsetDrawable foreground = new InsetDrawable(mSettingsIconDrawable, mIconInset);
        ColorDrawable background = new ColorDrawable(backgroundColor);
        AdaptiveIconDrawable adaptiveIcon = new AdaptiveIconDrawable(background,
                foreground);
        mSettingsIcon.setImageDrawable(adaptiveIcon);
    }

    private void updateHeaderView() {
        mSettingsIcon.setContentDescription(getResources().getString(
                R.string.bubbles_settings_button_description, mAppName));
        // Update permission prompt color.
        mPermissionView.setBackground(createPermissionBackground(backgroundColor));
        mPermissionPrompt.setTextColor(foregroundColor);

        // Update triangle color.
        ShapeDrawable triangleDrawable = new ShapeDrawable(
                TriangleShape.create(mPointerWidth, mPointerHeight, false /* pointUp */));
        triangleDrawable.setTint(backgroundColor);
        mPointerView.setBackground(triangleDrawable);
    }

    private void updatePermissionView() {
    void togglePermissionOrSettings() {
        boolean hasUserApprovedBubblesForPackage = false;
        try {
            hasUserApprovedBubblesForPackage =
@@ -392,12 +402,6 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList
            showSettingsIcon();
        } else {
            showPermissionView();
            ((ImageView) mPermissionView.findViewById(R.id.pkgicon)).setImageDrawable(mAppIcon);
            ((TextView) mPermissionView.findViewById(R.id.pkgname)).setText(mAppName);
            ((TextView) mPermissionView.findViewById(R.id.prompt)).setText(
                    getResources().getString(R.string.bubbles_prompt, mAppName));
            logBubbleClickEvent(mEntry,
                    StatsLog.BUBBLE_UICHANGED__ACTION__PERMISSION_DIALOG_SHOWN);
        }
    }

@@ -432,7 +436,7 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList
     */
    int getExpandedSize() {
        int chromeHeight = mPermissionView.getVisibility() != View.VISIBLE
                ? mHeaderHeight
                ? mSettingsIconHeight
                : mPermissionHeight;
        return mBubbleHeight + mPointerView.getHeight() + mPointerMargin
                + chromeHeight;
@@ -460,7 +464,7 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList
                desiredHeight = desiredPx > 0 ? desiredPx : mMinHeight;
            }
            int chromeHeight = mPermissionView.getVisibility() != View.VISIBLE
                    ? mHeaderHeight
                    ? mSettingsIconHeight
                    : mPermissionHeight;
            int max = mStackView.getMaxExpandedHeight() - chromeHeight - mPointerView.getHeight()
                    - mPointerMargin;
@@ -523,15 +527,28 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList
        }
    }

    private void updateSettingsContentDescription() {
        mSettingsIcon.setContentDescription(getResources().getString(
                R.string.bubbles_settings_button_description, mAppName));
    }

    void showSettingsIcon() {
        updateSettingsContentDescription();

        mPermissionView.setVisibility(GONE);
        mSettingsIcon.setVisibility(VISIBLE);
    }

    void showPermissionView() {
        ((ImageView) mPermissionView.findViewById(R.id.pkgicon)).setImageDrawable(mAppIcon);
        ((TextView) mPermissionView.findViewById(R.id.pkgname)).setText(mAppName);
        mPermissionPrompt.setText(
                getResources().getString(R.string.bubbles_prompt, mAppName));
        logBubbleClickEvent(mEntry,
                StatsLog.BUBBLE_UICHANGED__ACTION__PERMISSION_DIALOG_SHOWN);

        mSettingsIcon.setVisibility(GONE);
        mPermissionView.setVisibility(VISIBLE);

    }

    /**
+3 −3
Original line number Diff line number Diff line
@@ -309,12 +309,12 @@ public class BubbleStackView extends FrameLayout {
    }

    /**
     * Handle config changes.
     * Handle theme changes.
     */
    public void onConfigChanged() {
    public void onThemeChanged() {
        for (Bubble b: mBubbleData.getBubbles()) {
            b.iconView.updateViews();
            b.expandedView.updateHeaderColor();
            b.expandedView.updateTheme();
        }
    }