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

Commit 26bb1987 authored by Lyn Han's avatar Lyn Han
Browse files

Dark pointer for dark mode

Add pointer colors to resource
Fetch from resource based on dark mode config

Fixes: 158482996
Test: manual - toggle dark mode on/off, select different bubbles, select
overflow -> pointer updates color and position as expected

Change-Id: Ie5d2613bcceabc665106d4422a9b33402ade54b8
parent 918942f4
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -202,6 +202,10 @@
    <color name="global_screenshot_dismiss_foreground">@color/GM2_grey_500</color>
    <color name="global_screenshot_background_protection_start">#40000000</color> <!-- 25% black -->

    <!-- Bubbles -->
    <color name="bubbles_pointer_light">#FFFFFF</color>
    <color name="bubbles_pointer_dark">@color/GM2_grey_800</color>

    <!-- GM2 colors -->
    <color name="GM2_grey_50">#F8F9FA</color>
    <color name="GM2_grey_100">#F1F3F4</color>
+13 −2
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import android.app.PendingIntent;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Color;
@@ -255,8 +256,6 @@ public class BubbleExpandedView extends LinearLayout {

        mPointerDrawable = new ShapeDrawable(TriangleShape.create(
                mPointerWidth, mPointerHeight, true /* pointUp */));
        mPointerDrawable.setTint(Color.WHITE);
        mPointerView.setBackground(mPointerDrawable);
        mPointerView.setVisibility(INVISIBLE);

        mSettingsIconHeight = getContext().getResources().getDimensionPixelSize(
@@ -352,6 +351,18 @@ public class BubbleExpandedView extends LinearLayout {
                mContext.getResources())) {
            mActivityView.setCornerRadius(cornerRadius);
        }

        final int mode =
                getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
        switch (mode) {
            case Configuration.UI_MODE_NIGHT_NO:
                mPointerDrawable.setTint(getResources().getColor(R.color.bubbles_pointer_light));
                break;
            case Configuration.UI_MODE_NIGHT_YES:
                mPointerDrawable.setTint(getResources().getColor(R.color.bubbles_pointer_dark));
                break;
        }
        mPointerView.setBackground(mPointerDrawable);
    }

    /**
+1 −2
Original line number Diff line number Diff line
@@ -62,13 +62,12 @@ public class BubbleOverflow implements BubbleViewProvider {

    void setUpOverflow(ViewGroup parentViewGroup, BubbleStackView stackView) {
        updateDimensions();

        mExpandedView = (BubbleExpandedView) mInflater.inflate(
                R.layout.bubble_expanded_view, parentViewGroup /* root */,
                false /* attachToRoot */);
        mExpandedView.setOverflow(true);
        mExpandedView.setStackView(stackView);

        mExpandedView.applyThemeAttrs();
        updateIcon(mContext, parentViewGroup);
    }

+14 −3
Original line number Diff line number Diff line
@@ -1097,13 +1097,11 @@ public class BubbleStackView extends FrameLayout
            mBubbleOverflow.setUpOverflow(mBubbleContainer, this);
        } else {
            mBubbleContainer.removeView(mBubbleOverflow.getBtn());
            mBubbleOverflow.updateDimensions();
            mBubbleOverflow.updateIcon(mContext,this);
            mBubbleOverflow.setUpOverflow(mBubbleContainer, this);
            overflowBtnIndex = mBubbleContainer.getChildCount();
        }
        mBubbleContainer.addView(mBubbleOverflow.getBtn(), overflowBtnIndex,
                new FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));

        mBubbleOverflow.getBtn().setOnClickListener(v -> setSelectedBubble(mBubbleOverflow));
    }
    /**
@@ -1114,6 +1112,7 @@ public class BubbleStackView extends FrameLayout
        setUpOverflow();
        setUpUserEducation();
        setUpManageMenu();
        updateExpandedViewTheme();
    }

    /** Respond to the phone being rotated by repositioning the stack and hiding any flyouts. */
@@ -1215,6 +1214,18 @@ public class BubbleStackView extends FrameLayout
        setupLocalMenu(info);
    }

    void updateExpandedViewTheme() {
        final List<Bubble> bubbles = mBubbleData.getBubbles();
        if (bubbles.isEmpty()) {
            return;
        }
        bubbles.forEach(bubble -> {
            if (bubble.getExpandedView() != null) {
                bubble.getExpandedView().applyThemeAttrs();
            }
        });
    }

    void setupLocalMenu(AccessibilityNodeInfo info) {
        Resources res = mContext.getResources();