summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
diff options
context:
space:
mode:
Diffstat (limited to 'packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java')
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java71
1 files changed, 44 insertions, 27 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
index 0bad729..5c4d9ac 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
@@ -38,11 +38,8 @@ import android.view.ViewConfiguration;
import android.view.accessibility.AccessibilityEvent;
import android.widget.ImageView;
-import com.android.internal.util.ArrayUtils;
import com.android.systemui.R;
import com.android.systemui.statusbar.NavigationButtons;
-import com.android.systemui.statusbar.phone.NavbarEditor;
-import com.android.systemui.statusbar.phone.NavigationBarView;
public class KeyButtonView extends ImageView {
private static final String TAG = "StatusBar.KeyButtonView";
@@ -52,13 +49,15 @@ public class KeyButtonView extends ImageView {
long mDownTime;
int mCode;
+ boolean mIsSmall;
int mTouchSlop;
Drawable mGlowBG;
int mGlowWidth, mGlowHeight;
float mGlowAlpha = 0f, mGlowScale = 1f, mDrawingAlpha = 1f;
- boolean mSupportsLongpress = true;
+ boolean mSupportsLongPress = true;
RectF mRect = new RectF(0f,0f,0f,0f);
AnimatorSet mPressedAnim;
+ boolean mInEditMode;
Runnable mCheckLongPress = new Runnable() {
public void run() {
@@ -87,7 +86,7 @@ public class KeyButtonView extends ImageView {
mCode = a.getInteger(R.styleable.KeyButtonView_keyCode, 0);
- mSupportsLongpress = a.getBoolean(R.styleable.KeyButtonView_keyRepeat, true);
+ mSupportsLongPress = a.getBoolean(R.styleable.KeyButtonView_keyRepeat, true);
mGlowBG = a.getDrawable(R.styleable.KeyButtonView_glowBackground);
if (mGlowBG != null) {
@@ -209,39 +208,57 @@ public class KeyButtonView extends ImageView {
super.setPressed(pressed);
}
- public void setInfo(NavigationButtons.ButtonInfo buttonInfo, boolean isVertical) {
- setTag(buttonInfo);
+ public void setEditMode(boolean editMode) {
+ mInEditMode = editMode;
+ updateVisibility();
+ }
+
+ public void setInfo(NavigationButtons.ButtonInfo buttonInfo, boolean isVertical, boolean isSmall) {
final Resources res = getResources();
- setContentDescription(res.getString(buttonInfo.contentDescription));
+ final int keyDrawableResId;
+
mCode = buttonInfo.keyCode;
- boolean isSmallButton = ArrayUtils.contains(NavbarEditor.smallButtonIds, getId());
- Drawable keyD;
- if (isSmallButton) {
- keyD = res.getDrawable(buttonInfo.sideResource);
+ mIsSmall = isSmall;
+
+ setTag(buttonInfo);
+ setContentDescription(res.getString(buttonInfo.contentDescription));
+
+ if (isSmall) {
+ keyDrawableResId = buttonInfo.sideResource;
} else if (!isVertical) {
- keyD = res.getDrawable(buttonInfo.portResource);
+ keyDrawableResId = buttonInfo.portResource;
} else {
- keyD = res.getDrawable(buttonInfo.landResource);
+ keyDrawableResId = buttonInfo.landResource;
}
+
//Reason for setImageDrawable vs setImageResource is because setImageResource calls relayout() w/o
//any checks. setImageDrawable performs size checks and only calls relayout if necessary. We rely on this
//because otherwise the setX/setY attributes which are post layout cause it to mess up the layout.
- setImageDrawable(keyD);
+
+ setImageDrawable(res.getDrawable(keyDrawableResId));
+ updateVisibility();
+ }
+
+ private void updateVisibility() {
+ if (mInEditMode) {
+ setVisibility(View.VISIBLE);
+ return;
+ }
+
+ NavigationButtons.ButtonInfo buttonInfo = (NavigationButtons.ButtonInfo) getTag();
if (buttonInfo == NavigationButtons.EMPTY) {
- if (isSmallButton) {
- setVisibility(NavigationBarView.getEditMode() ? View.VISIBLE : View.INVISIBLE);
- } else {
- setVisibility(NavigationBarView.getEditMode() ? View.VISIBLE : View.GONE);
- }
+ setVisibility(mIsSmall ? View.INVISIBLE : View.GONE);
} else if (buttonInfo == NavigationButtons.CONDITIONAL_MENU) {
- setVisibility(NavigationBarView.getEditMode() ? View.VISIBLE : View.INVISIBLE);
- } else if (buttonInfo == NavigationButtons.HOME) {
- mSupportsLongpress = false;
+ setVisibility(View.INVISIBLE);
}
}
+ private boolean supportsLongPress() {
+ return mSupportsLongPress && !NavigationButtons.HOME.equals(getTag());
+ }
+
public boolean onTouchEvent(MotionEvent ev) {
- if (NavigationBarView.getEditMode()) {
+ if (mInEditMode) {
return false;
}
final int action = ev.getAction();
@@ -258,7 +275,7 @@ public class KeyButtonView extends ImageView {
// Provide the same haptic feedback that the system offers for virtual keys.
performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
}
- if (mSupportsLongpress) {
+ if (supportsLongPress()) {
removeCallbacks(mCheckLongPress);
postDelayed(mCheckLongPress, ViewConfiguration.getLongPressTimeout());
}
@@ -276,7 +293,7 @@ public class KeyButtonView extends ImageView {
if (mCode != 0) {
sendEvent(KeyEvent.ACTION_UP, KeyEvent.FLAG_CANCELED);
}
- if (mSupportsLongpress) {
+ if (supportsLongPress()) {
removeCallbacks(mCheckLongPress);
}
break;
@@ -297,7 +314,7 @@ public class KeyButtonView extends ImageView {
performClick();
}
}
- if (mSupportsLongpress) {
+ if (supportsLongPress()) {
removeCallbacks(mCheckLongPress);
}
break;