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

Commit fad31024 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix support for rendering status icons" into pi-dev

parents e7154b6d 2d726741
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@
    <declare-styleable name="CarFacetButton">
        <!-- icon to be rendered (drawable) -->
        <attr name="icon" format="reference"/>
        <!-- icon to be rendered when in selected state -->
        <attr name="selectedIcon" format="reference"/>
        <!-- intent to start when button is click -->
        <attr name="intent" format="string"/>
        <!-- intent to start when a long press has happened -->
@@ -45,6 +47,12 @@
        <attr name="longIntent" format="string"/>
        <!-- start the intent as a broad cast instead of an activity if true-->
        <attr name="broadcast" format="boolean"/>
        <!-- Alpha value to used when in selected state.  Defaults 1f  -->
        <attr name="selectedAlpha" format="float" />
        <!-- Alpha value to used when in un-selected state.  Defaults 0.7f  -->
        <attr name="unselectedAlpha" format="float" />
        <!-- icon to be rendered when in selected state -->
        <attr name="selectedIcon" format="reference"/>
    </declare-styleable>

    <!-- Custom attributes to configure hvac values -->
+11 −19
Original line number Diff line number Diff line
@@ -42,6 +42,11 @@ public class CarFacetButton extends LinearLayout {
    /** App packages that are allowed to be used with this widget */
    private String[] mFacetPackages;
    private int mIconResourceId;
    /**
     * If defined in the xml this will be the icon that's rendered when the button is marked as
     * selected
     */
    private int mSelectedIconResourceId;
    private boolean mUseMoreIcon = true;
    private float mSelectedAlpha = 1f;
    private float mUnselectedAlpha = 1f;
@@ -112,10 +117,9 @@ public class CarFacetButton extends LinearLayout {
        mIcon.setClickable(false);
        mIcon.setAlpha(mUnselectedAlpha);
        mIconResourceId = styledAttributes.getResourceId(R.styleable.CarFacetButton_icon, 0);
        if (mIconResourceId == 0)  {
            throw new RuntimeException("specified icon resource was not found and is required");
        }
        mIcon.setImageResource(mIconResourceId);
        mSelectedIconResourceId = styledAttributes.getResourceId(
                R.styleable.CarFacetButton_selectedIcon, mIconResourceId);

        mMoreIcon = findViewById(R.id.car_nav_button_more_icon);
        mMoreIcon.setClickable(false);
@@ -161,22 +165,10 @@ public class CarFacetButton extends LinearLayout {
     */
    public void setSelected(boolean selected, boolean showMoreIcon) {
        mSelected = selected;
        if (selected) {
        mIcon.setAlpha(mSelected ? mSelectedAlpha : mUnselectedAlpha);
        mIcon.setImageResource(mSelected ? mSelectedIconResourceId : mIconResourceId);
        if (mUseMoreIcon) {
            mMoreIcon.setVisibility(showMoreIcon ? VISIBLE : GONE);
        }
            mIcon.setAlpha(mSelectedAlpha);
        } else {
            mMoreIcon.setVisibility(GONE);
            mIcon.setAlpha(mUnselectedAlpha);
        }
    }

    public void setIcon(Drawable d) {
        if (d != null) {
            mIcon.setImageDrawable(d);
        } else {
            mIcon.setImageResource(mIconResourceId);
        }
    }
}
+13 −0
Original line number Diff line number Diff line
@@ -25,7 +25,9 @@ import android.widget.LinearLayout;
import android.widget.TextView;

import com.android.keyguard.AlphaOptimizedImageButton;
import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.statusbar.phone.StatusBarIconController;

/**
 * A custom navigation bar for the automotive use case.
@@ -52,6 +54,17 @@ class CarNavigationBarView extends LinearLayout {
        if (mNotificationsButton != null) {
            mNotificationsButton.setOnClickListener(this::onNotificationsClick);
        }
        View mStatusIcons = findViewById(R.id.statusIcons);
        if (mStatusIcons != null) {
            // Attach the controllers for Status icons such as wifi and bluetooth if the standard
            // container is in the view.
            StatusBarIconController.DarkIconManager mDarkIconManager =
                    new StatusBarIconController.DarkIconManager(
                            mStatusIcons.findViewById(R.id.statusIcons));
            mDarkIconManager.setShouldLog(true);
            Dependency.get(StatusBarIconController.class).addIconGroup(mDarkIconManager);
        }

    }

    void setStatusBar(CarStatusBar carStatusBar) {
+36 −16
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.ImageView;

import com.android.systemui.R;
@@ -17,23 +18,34 @@ import java.net.URISyntaxException;
 */
public class CarNavigationButton extends com.android.keyguard.AlphaOptimizedImageButton {

    private static final float SELECTED_ALPHA = 1;
    private static final float UNSELECTED_ALPHA = 0.7f;

    private static final String TAG = "CarNavigationButton";
    private Context mContext;
    private String mIntent = null;
    private String mLongIntent = null;
    private boolean mBroadcastIntent = false;
    private String mIntent;
    private String mLongIntent;
    private boolean mBroadcastIntent;
    private boolean mSelected = false;
    private float mSelectedAlpha;
    private float mUnselectedAlpha;
    private int mSelectedIconResourceId;
    private int mIconResourceId;


    public CarNavigationButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext = context;
        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.CarNavigationButton);
        TypedArray typedArray = context.obtainStyledAttributes(
                attrs, R.styleable.CarNavigationButton);
        mIntent = typedArray.getString(R.styleable.CarNavigationButton_intent);
        mLongIntent = typedArray.getString(R.styleable.CarNavigationButton_longIntent);
        mBroadcastIntent = typedArray.getBoolean(R.styleable.CarNavigationButton_broadcast, false);
        mSelectedAlpha = typedArray.getFloat(
                R.styleable.CarNavigationButton_selectedAlpha, mSelectedAlpha);
        mUnselectedAlpha = typedArray.getFloat(
                R.styleable.CarNavigationButton_unselectedAlpha, mUnselectedAlpha);
        mIconResourceId = typedArray.getResourceId(
                com.android.internal.R.styleable.ImageView_src, 0);
        mSelectedIconResourceId = typedArray.getResourceId(
                R.styleable.CarNavigationButton_selectedIcon, mIconResourceId);
    }


@@ -45,17 +57,20 @@ public class CarNavigationButton extends com.android.keyguard.AlphaOptimizedImag
    public void onFinishInflate() {
        super.onFinishInflate();
        setScaleType(ImageView.ScaleType.CENTER);
        setAlpha(UNSELECTED_ALPHA);
        setAlpha(mUnselectedAlpha);
        try {
            if (mIntent != null) {
                final Intent intent = Intent.parseUri(mIntent, Intent.URI_INTENT_SCHEME);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                setOnClickListener(v -> {
                    try {
                        if (mBroadcastIntent) {
                            mContext.sendBroadcast(intent);
                            return;
                        }
                        mContext.startActivity(intent);
                    } catch (Exception e) {
                        Log.e(TAG, "Failed to launch intent", e);
                    }
                });
            }
        } catch (URISyntaxException e) {
@@ -65,9 +80,13 @@ public class CarNavigationButton extends com.android.keyguard.AlphaOptimizedImag
        try {
            if (mLongIntent != null) {
                final Intent intent = Intent.parseUri(mLongIntent, Intent.URI_INTENT_SCHEME);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                setOnLongClickListener(v -> {
                    try {
                        mContext.startActivity(intent);
                    } catch (Exception e) {
                        Log.e(TAG, "Failed to launch intent", e);
                    }
                    // consume event either way
                    return true;
                });
            }
@@ -82,6 +101,7 @@ public class CarNavigationButton extends com.android.keyguard.AlphaOptimizedImag
    public void setSelected(boolean selected) {
        super.setSelected(selected);
        mSelected = selected;
        setAlpha(mSelected ? SELECTED_ALPHA : UNSELECTED_ALPHA);
        setAlpha(mSelected ? mSelectedAlpha : mUnselectedAlpha);
        setImageResource(mSelected ? mSelectedIconResourceId : mIconResourceId);
    }
}