Loading policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -943,7 +943,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } }); mTransientNavigationConfirmation = new TransientNavigationConfirmation(mContext, mHandler); mTransientNavigationConfirmation = new TransientNavigationConfirmation(mContext); mWindowManagerFuncs.registerPointerEventListener(mSystemGestures); mVibrator = (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE); Loading policy/src/com/android/internal/policy/impl/TransientNavigationConfirmation.java +53 −32 Original line number Diff line number Diff line Loading @@ -18,9 +18,13 @@ package com.android.internal.policy.impl; import android.content.Context; import android.os.Handler; import android.os.Message; import android.util.ArraySet; import android.util.Slog; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationSet; import android.view.animation.AnimationUtils; import android.widget.Toast; import com.android.internal.R; Loading @@ -30,29 +34,26 @@ import com.android.internal.R; * is hidden. */ public class TransientNavigationConfirmation { private final String TAG = "TransientNavigationConfirmation"; private final boolean DEBUG = false; private static final String TAG = "TransientNavigationConfirmation"; private static final boolean DEBUG = false; private final Context mContext; private final Handler mHandler; private final H mHandler; private final ArraySet<String> mConfirmedUserPackages = new ArraySet<String>(); private final Runnable mHandleDismiss = new Runnable() { @Override public void run() { if (mToast != null) { mToast.cancel(); mToast = null; } } }; private final long mShowDelayMs; private Toast mToast; private String mLastUserPackage; public TransientNavigationConfirmation(Context context, Handler handler) { public TransientNavigationConfirmation(Context context) { mContext = context; mHandler = handler; mHandler = new H(); mShowDelayMs = getNavBarExitDuration() * 3; } private long getNavBarExitDuration() { Animation exit = AnimationUtils.loadAnimation(mContext, R.anim.dock_bottom_exit); return exit != null ? exit.getDuration() : 0; } public void transientNavigationChanged(int userId, String pkg, boolean isNavTransient) { Loading @@ -60,16 +61,17 @@ public class TransientNavigationConfirmation { return; } String userPkg = userId + ":" + pkg; mHandler.removeMessages(H.SHOW); if (isNavTransient) { mLastUserPackage = userPkg; if (!mConfirmedUserPackages.contains(userPkg)) { if (DEBUG) Slog.d(TAG, "Showing transient navigation confirmation for " + userPkg); mHandler.post(handleShowConfirmation(userPkg)); mHandler.sendMessageDelayed(mHandler.obtainMessage(H.SHOW, userPkg), mShowDelayMs); } } else { mLastUserPackage = null; if (DEBUG) Slog.d(TAG, "Hiding transient navigation confirmation for " + userPkg); mHandler.post(mHandleDismiss); mHandler.sendEmptyMessage(H.HIDE); } } Loading @@ -80,10 +82,14 @@ public class TransientNavigationConfirmation { } } private Runnable handleShowConfirmation(final String userPkg) { return new Runnable() { @Override public void run() { private void handleHide() { if (mToast != null) { mToast.cancel(); mToast = null; } } private void handleShow(String userPkg) { // create the confirmation toast bar final int msg = R.string.transient_navigation_confirmation; mToast = Toast.makeBar(mContext, msg, Toast.LENGTH_INFINITE); Loading @@ -95,16 +101,31 @@ public class TransientNavigationConfirmation { // show the confirmation mToast.show(); } }; } private Runnable confirmAction(final String userPkg) { return new Runnable() { @Override public void run() { mConfirmedUserPackages.add(userPkg); mHandleDismiss.run(); handleHide(); } }; } private final class H extends Handler { private static final int SHOW = 0; private static final int HIDE = 1; @Override public void handleMessage(Message msg) { switch(msg.what) { case SHOW: handleShow((String)msg.obj); break; case HIDE: handleHide(); break; } } } } Loading
policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -943,7 +943,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } }); mTransientNavigationConfirmation = new TransientNavigationConfirmation(mContext, mHandler); mTransientNavigationConfirmation = new TransientNavigationConfirmation(mContext); mWindowManagerFuncs.registerPointerEventListener(mSystemGestures); mVibrator = (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE); Loading
policy/src/com/android/internal/policy/impl/TransientNavigationConfirmation.java +53 −32 Original line number Diff line number Diff line Loading @@ -18,9 +18,13 @@ package com.android.internal.policy.impl; import android.content.Context; import android.os.Handler; import android.os.Message; import android.util.ArraySet; import android.util.Slog; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationSet; import android.view.animation.AnimationUtils; import android.widget.Toast; import com.android.internal.R; Loading @@ -30,29 +34,26 @@ import com.android.internal.R; * is hidden. */ public class TransientNavigationConfirmation { private final String TAG = "TransientNavigationConfirmation"; private final boolean DEBUG = false; private static final String TAG = "TransientNavigationConfirmation"; private static final boolean DEBUG = false; private final Context mContext; private final Handler mHandler; private final H mHandler; private final ArraySet<String> mConfirmedUserPackages = new ArraySet<String>(); private final Runnable mHandleDismiss = new Runnable() { @Override public void run() { if (mToast != null) { mToast.cancel(); mToast = null; } } }; private final long mShowDelayMs; private Toast mToast; private String mLastUserPackage; public TransientNavigationConfirmation(Context context, Handler handler) { public TransientNavigationConfirmation(Context context) { mContext = context; mHandler = handler; mHandler = new H(); mShowDelayMs = getNavBarExitDuration() * 3; } private long getNavBarExitDuration() { Animation exit = AnimationUtils.loadAnimation(mContext, R.anim.dock_bottom_exit); return exit != null ? exit.getDuration() : 0; } public void transientNavigationChanged(int userId, String pkg, boolean isNavTransient) { Loading @@ -60,16 +61,17 @@ public class TransientNavigationConfirmation { return; } String userPkg = userId + ":" + pkg; mHandler.removeMessages(H.SHOW); if (isNavTransient) { mLastUserPackage = userPkg; if (!mConfirmedUserPackages.contains(userPkg)) { if (DEBUG) Slog.d(TAG, "Showing transient navigation confirmation for " + userPkg); mHandler.post(handleShowConfirmation(userPkg)); mHandler.sendMessageDelayed(mHandler.obtainMessage(H.SHOW, userPkg), mShowDelayMs); } } else { mLastUserPackage = null; if (DEBUG) Slog.d(TAG, "Hiding transient navigation confirmation for " + userPkg); mHandler.post(mHandleDismiss); mHandler.sendEmptyMessage(H.HIDE); } } Loading @@ -80,10 +82,14 @@ public class TransientNavigationConfirmation { } } private Runnable handleShowConfirmation(final String userPkg) { return new Runnable() { @Override public void run() { private void handleHide() { if (mToast != null) { mToast.cancel(); mToast = null; } } private void handleShow(String userPkg) { // create the confirmation toast bar final int msg = R.string.transient_navigation_confirmation; mToast = Toast.makeBar(mContext, msg, Toast.LENGTH_INFINITE); Loading @@ -95,16 +101,31 @@ public class TransientNavigationConfirmation { // show the confirmation mToast.show(); } }; } private Runnable confirmAction(final String userPkg) { return new Runnable() { @Override public void run() { mConfirmedUserPackages.add(userPkg); mHandleDismiss.run(); handleHide(); } }; } private final class H extends Handler { private static final int SHOW = 0; private static final int HIDE = 1; @Override public void handleMessage(Message msg) { switch(msg.what) { case SHOW: handleShow((String)msg.obj); break; case HIDE: handleHide(); break; } } } }