From 4f7e54f77b48fe84930af4510cd27887a4c10f4d Mon Sep 17 00:00:00 2001 From: "Randall E. Barker" Date: Mon, 7 Oct 2019 08:01:22 -0700 Subject: [PATCH] Update UIButton to better manage multiple states. Fixes #1837 (#1920) --- .../mozilla/vrbrowser/ui/views/UIButton.java | 57 ++++++++----------- 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/views/UIButton.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/views/UIButton.java index 5ccd27024..b9b1cc432 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/views/UIButton.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/views/UIButton.java @@ -29,13 +29,6 @@ public class UIButton extends AppCompatImageButton implements CustomUIButton { - private enum State { - NORMAL, - PRIVATE, - ACTIVE, - NOTIFICATION - } - private ColorStateList mTintColorList; private Drawable mPrivateModeBackground; private Drawable mActiveModeBackground; @@ -46,11 +39,13 @@ private enum State { private @IdRes int mNotificationModeTintColorListRes; private TooltipWidget mTooltipView; private String mTooltipText; - private State mState; private int mTooltipDelay; private float mTooltipDensity; private boolean mCurvedTooltip = true; private ViewUtils.TooltipPosition mTooltipPosition; + private boolean mIsPrivate; + private boolean mIsActive; + private boolean mIsNotification; public UIButton(Context context, AttributeSet attrs) { this(context, attrs, R.attr.imageButtonStyle); @@ -79,8 +74,6 @@ public UIButton(Context context, AttributeSet attrs, int defStyleAttr) { attributes.recycle(); mBackground = getBackground(); - - mState = State.NORMAL; } @TargetApi(Build.VERSION_CODES.O) @@ -152,42 +145,41 @@ protected void drawableStateChanged() { @Override public void setPrivateMode(boolean isPrivateMode) { - if (isPrivateMode) { - setPrivate(); - - } else { - setNormal(); - } + mIsPrivate = isPrivateMode; + updateButtonColor(); } public void setActiveMode(boolean isActive) { - if (isActive) { - setActive(); - - } else { - setNormal(); - } + mIsActive = isActive; + updateButtonColor(); } public void setNotificationMode(boolean isNotification) { - if (isNotification) { - setNotification(); - - } else { - setNormal(); - } + mIsNotification = isNotification; + updateButtonColor(); } public boolean isActive() { - return mState == State.ACTIVE; + return mIsActive; } public boolean isPrivate() { - return mState == State.PRIVATE; + return mIsPrivate; + } + + private void updateButtonColor() { + if (mIsNotification) { + setNotification(); + } else if (mIsPrivate) { + setPrivate(); + } else if (mIsActive) { + setActive(); + } else { + setNormal(); + } } private void setPrivate() { - mState = State.PRIVATE; if (mPrivateModeBackground != null) { setBackground(mPrivateModeBackground); } @@ -198,7 +190,6 @@ private void setPrivate() { } private void setNormal() { - mState = State.NORMAL; if (mBackground != null) { setBackground(mBackground); } @@ -209,7 +200,6 @@ private void setNormal() { } private void setActive() { - mState = State.ACTIVE; if (mActiveModeBackground != null) { setBackground(mActiveModeBackground); } @@ -220,7 +210,6 @@ private void setActive() { } private void setNotification() { - mState = State.NOTIFICATION; if (mActiveModeTintColorListRes != 0) { setTintColorList(mNotificationModeTintColorListRes); }