summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/com/android/systemui/navigation/fling/FlingActionHandler.java30
-rw-r--r--src/com/android/systemui/navigation/fling/FlingView.java83
2 files changed, 93 insertions, 20 deletions
diff --git a/src/com/android/systemui/navigation/fling/FlingActionHandler.java b/src/com/android/systemui/navigation/fling/FlingActionHandler.java
index 8241ec8..92fc2b1 100644
--- a/src/com/android/systemui/navigation/fling/FlingActionHandler.java
+++ b/src/com/android/systemui/navigation/fling/FlingActionHandler.java
@@ -61,6 +61,7 @@ public class FlingActionHandler implements Swipeable, SmartObservable {
private View mHost;
private Context mContext;
private boolean isDoubleTapEnabled;
+ private boolean mIsBackAlt;
private boolean mKeyguardShowing;
public FlingActionHandler(Context context, View host) {
@@ -79,11 +80,7 @@ public class FlingActionHandler implements Swipeable, SmartObservable {
ActionConfig action = button.getActionConfig(entry.getValue().action);
mActionMap.put(entry.getKey(), action);
}
- isDoubleTapEnabled = !((ActionConfig) mActionMap
- .get(ActionConstants.Fling.DOUBLE_LEFT_TAP_TAG))
- .hasNoAction()
- || !((ActionConfig) mActionMap.get(ActionConstants.Fling.DOUBLE_RIGHT_TAP_TAG))
- .hasNoAction();
+ setDoubleTapEnabled();
}
public void setKeyguardShowing(boolean showing) {
@@ -169,8 +166,26 @@ public class FlingActionHandler implements Swipeable, SmartObservable {
fireAction(!right_tap.hasNoAction() ? right_tap : left_tap);
}
+ protected void setImeActions(boolean isBackAlt) {
+ mIsBackAlt = isBackAlt;
+ setDoubleTapEnabled();
+ }
+
+ private void setDoubleTapEnabled() {
+ isDoubleTapEnabled = mIsBackAlt || !((ActionConfig) mActionMap
+ .get(ActionConstants.Fling.DOUBLE_LEFT_TAP_TAG))
+ .hasNoAction()
+ || !((ActionConfig) mActionMap.get(ActionConstants.Fling.DOUBLE_RIGHT_TAP_TAG))
+ .hasNoAction();
+ }
+
@Override
public void onDoubleLeftTap() {
+ if (mIsBackAlt) {
+ ActionHandler.performTask(mContext, ActionHandler.SYSTEMUI_TASK_IME_NAVIGATION_LEFT);
+ return;
+ }
+
ActionConfig left_tap = (ActionConfig) mActionMap
.get(ActionConstants.Fling.DOUBLE_LEFT_TAP_TAG);
ActionConfig right_tap = (ActionConfig) mActionMap
@@ -180,6 +195,11 @@ public class FlingActionHandler implements Swipeable, SmartObservable {
@Override
public void onDoubleRightTap() {
+ if (mIsBackAlt) {
+ ActionHandler.performTask(mContext, ActionHandler.SYSTEMUI_TASK_IME_NAVIGATION_RIGHT);
+ return;
+ }
+
ActionConfig right_tap = (ActionConfig) mActionMap
.get(ActionConstants.Fling.DOUBLE_RIGHT_TAP_TAG);
ActionConfig left_tap = (ActionConfig) mActionMap
diff --git a/src/com/android/systemui/navigation/fling/FlingView.java b/src/com/android/systemui/navigation/fling/FlingView.java
index ad51c32..2cf3117 100644
--- a/src/com/android/systemui/navigation/fling/FlingView.java
+++ b/src/com/android/systemui/navigation/fling/FlingView.java
@@ -42,6 +42,9 @@ import com.android.systemui.statusbar.phone.BarTransitions;
import com.android.systemui.statusbar.phone.PhoneStatusBar;
import com.android.internal.utils.du.ActionConstants;
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.app.StatusBarManager;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
@@ -63,8 +66,11 @@ import android.widget.ImageView;
public class FlingView extends BaseNavigationBar {
final static String TAG = FlingView.class.getSimpleName();
+ final static int PULSE_FADE_OUT_DURATION = 250;
+ final static int PULSE_FADE_IN_DURATION = 200;
+ final static float PULSE_LOGO_OPACITY = 0.6f;
- private static Set<Uri> sUris = new HashSet<Uri>();
+ private static Set<Uri> sUris = new HashSet<Uri>();
static {
sUris.add(Settings.Secure.getUriFor(Settings.Secure.FLING_LONGPRESS_TIMEOUT));
sUris.add(Settings.Secure.getUriFor(Settings.Secure.FLING_RIPPLE_ENABLED));
@@ -84,6 +90,8 @@ public class FlingView extends BaseNavigationBar {
private FlingRipple mRipple;
private FlingTrails mTrails;
+ private int mNavigationIconHints = 0;
+
private SmartObservable mObservable = new SmartObservable() {
@Override
public Set<Uri> onGetUris() {
@@ -186,18 +194,23 @@ public class FlingView extends BaseNavigationBar {
}
};
- private final Runnable mAnimateShowLogo = new Runnable() {
- @Override
- public void run() {
- mLogoController.unlockAndShow(null);
- }
- };
-
@Override
public boolean onStartPulse(Animation animatePulseIn) {
- final boolean hasLogo = mLogoController.isEnabled();
- if (hasLogo) {
- mLogoController.hideAndLock(mPulseOnListener);
+ if (mLogoController.isEnabled()) {
+ getLogoView(getHiddenView()).setAlpha(PULSE_LOGO_OPACITY);
+ getLogoView(getCurrentView()).animate()
+ .alpha(PULSE_LOGO_OPACITY)
+ .setDuration(PULSE_FADE_OUT_DURATION)
+ .setListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator _a) {
+ // shouldn't be null, mPulse just called into us
+ if (mPulse != null) {
+ mPulse.turnOnPulse();
+ }
+ }
+ })
+ .start();
return true;
}
return false;
@@ -205,8 +218,13 @@ public class FlingView extends BaseNavigationBar {
@Override
public void onStopPulse(Animation animatePulseOut) {
- getHandler().removeCallbacks(mAnimateShowLogo);
- getHandler().postDelayed(mAnimateShowLogo, 250);
+ if (mLogoController.isEnabled()) {
+ getLogoView(getHiddenView()).setAlpha(1.0f);
+ getLogoView(getCurrentView()).animate()
+ .alpha(1.0f)
+ .setDuration(PULSE_FADE_IN_DURATION)
+ .start();
+ }
}
@Override
@@ -285,15 +303,44 @@ public class FlingView extends BaseNavigationBar {
public void reorient() {
super.reorient();
mBarTransitions.init();
- mLogoController.setLogoView(getFlingLogo());
+ final FlingLogoView logo = getFlingLogo();
+ mLogoController.setLogoView(logo);
mLogoController.setLogoIcon();
+ if (isBarPulseFaded() && mLogoController.isEnabled()) {
+ getLogoView(getCurrentView()).setAlpha(PULSE_LOGO_OPACITY);
+ getLogoView(getHiddenView()).setAlpha(PULSE_LOGO_OPACITY);
+ }
setDisabledFlags(mDisabledFlags, true /* force */);
}
+ boolean isBarPulseFaded() {
+ if (mPulse == null) {
+ return false;
+ } else {
+ return mPulse.shouldDrawPulse();
+ }
+ }
+
@Override
public void notifyScreenOn(boolean screenOn) {
mGestureHandler.onScreenStateChanged(screenOn);
super.notifyScreenOn(screenOn);
+
+ if (mLogoController.isEnabled()) {
+ final float fadeAlpha = 1.0f;
+ ImageView currentLogo = getLogoView(getCurrentView());
+ ImageView hiddenLogo = getLogoView(getHiddenView());
+ if (screenOn && (currentLogo.getAlpha() != fadeAlpha || hiddenLogo.getAlpha() != fadeAlpha)) {
+ currentLogo.setAlpha(fadeAlpha);
+ hiddenLogo.setAlpha(fadeAlpha);
+ }
+ }
+ }
+
+ private ImageView getLogoView(View v) {
+ final ViewGroup viewGroup = (ViewGroup) v;
+ ImageView logoView = (ImageView)viewGroup.findViewById(R.id.fling_console);
+ return logoView;
}
@Override
@@ -310,7 +357,13 @@ public class FlingView extends BaseNavigationBar {
@Override
public void setNavigationIconHints(int hints) {
- // maybe do something with the IME switcher
+ if (hints == mNavigationIconHints) {
+ return;
+ }
+
+ final boolean backAlt = (hints & StatusBarManager.NAVIGATION_HINT_BACK_ALT) != 0;
+ mNavigationIconHints = hints;
+ mActionHandler.setImeActions(backAlt);
}
@Override