summaryrefslogtreecommitdiffstats
path: root/mobile/android/base/java/org/mozilla/gecko/toolbar/ShapedButtonFrameLayout.java
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/base/java/org/mozilla/gecko/toolbar/ShapedButtonFrameLayout.java')
-rw-r--r--mobile/android/base/java/org/mozilla/gecko/toolbar/ShapedButtonFrameLayout.java74
1 files changed, 74 insertions, 0 deletions
diff --git a/mobile/android/base/java/org/mozilla/gecko/toolbar/ShapedButtonFrameLayout.java b/mobile/android/base/java/org/mozilla/gecko/toolbar/ShapedButtonFrameLayout.java
new file mode 100644
index 000000000..c14829aec
--- /dev/null
+++ b/mobile/android/base/java/org/mozilla/gecko/toolbar/ShapedButtonFrameLayout.java
@@ -0,0 +1,74 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package org.mozilla.gecko.toolbar;
+
+import android.support.v4.content.ContextCompat;
+import org.mozilla.gecko.R;
+import org.mozilla.gecko.lwt.LightweightThemeDrawable;
+import org.mozilla.gecko.widget.themed.ThemedFrameLayout;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.StateListDrawable;
+import android.util.AttributeSet;
+
+/** A FrameLayout with lightweight theme support. Note that {@link ShapedButton}'s lwt support is basically the same so
+ * if you change it here, you should probably change it there. Note also that this doesn't have ShapedButton's path code
+ * so shouldn't have "ShapedButton" in the name, but I wanted to make the connection apparent so I left it.
+ */
+public class ShapedButtonFrameLayout extends ThemedFrameLayout {
+
+ public ShapedButtonFrameLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ // The drawable is constructed as per @drawable/shaped_button.
+ @Override
+ public void onLightweightThemeChanged() {
+ final int background = ContextCompat.getColor(getContext(), R.color.text_and_tabs_tray_grey);
+ final LightweightThemeDrawable lightWeight = getTheme().getColorDrawable(this, background);
+
+ if (lightWeight == null)
+ return;
+
+ lightWeight.setAlpha(34, 34);
+
+ final StateListDrawable stateList = new StateListDrawable();
+ stateList.addState(PRESSED_ENABLED_STATE_SET, getColorDrawable(R.color.highlight_shaped));
+ stateList.addState(FOCUSED_STATE_SET, getColorDrawable(R.color.highlight_shaped_focused));
+ stateList.addState(PRIVATE_STATE_SET, getColorDrawable(R.color.text_and_tabs_tray_grey));
+ stateList.addState(EMPTY_STATE_SET, lightWeight);
+
+ setBackgroundDrawable(stateList);
+ }
+
+ @Override
+ public void onLightweightThemeReset() {
+ setBackgroundResource(R.drawable.shaped_button);
+ }
+
+ @Override
+ public void setBackgroundDrawable(Drawable drawable) {
+ if (getBackground() == null || drawable == null) {
+ super.setBackgroundDrawable(drawable);
+ return;
+ }
+
+ int[] padding = new int[] { getPaddingLeft(),
+ getPaddingTop(),
+ getPaddingRight(),
+ getPaddingBottom()
+ };
+ drawable.setLevel(getBackground().getLevel());
+ super.setBackgroundDrawable(drawable);
+
+ setPadding(padding[0], padding[1], padding[2], padding[3]);
+ }
+
+ @Override
+ public void setBackgroundResource(int resId) {
+ setBackgroundDrawable(getResources().getDrawable(resId));
+ }
+}