Merge "Fix ActionMode.snooze API" into mnc-dev

This commit is contained in:
Abodunrinwa Toki
2015-06-08 11:36:16 +00:00
committed by Android (Google) Code Review
6 changed files with 42 additions and 37 deletions

View File

@@ -34596,6 +34596,7 @@ package android.view {
method public abstract java.lang.CharSequence getTitle();
method public boolean getTitleOptionalHint();
method public int getType();
method public void hide(long);
method public abstract void invalidate();
method public void invalidateContentRect();
method public boolean isTitleOptional();
@@ -34607,8 +34608,7 @@ package android.view {
method public abstract void setTitle(int);
method public void setTitleOptionalHint(boolean);
method public void setType(int);
method public void snooze(int);
field public static final int SNOOZE_TIME_DEFAULT;
field public static final int DEFAULT_HIDE_DURATION = -1; // 0xffffffff
field public static final int TYPE_FLOATING = 1; // 0x1
field public static final int TYPE_PRIMARY = 0; // 0x0
}
@@ -36673,7 +36673,7 @@ package android.view {
public class ViewConfiguration {
ctor public deprecated ViewConfiguration();
method public static android.view.ViewConfiguration get(android.content.Context);
method public static int getDefaultActionModeSnoozeTime();
method public static long getDefaultActionModeHideDuration();
method public static int getDoubleTapTimeout();
method public static deprecated int getEdgeSlop();
method public static deprecated int getFadingEdgeLength();

View File

@@ -36861,6 +36861,7 @@ package android.view {
method public abstract java.lang.CharSequence getTitle();
method public boolean getTitleOptionalHint();
method public int getType();
method public void hide(long);
method public abstract void invalidate();
method public void invalidateContentRect();
method public boolean isTitleOptional();
@@ -36872,8 +36873,7 @@ package android.view {
method public abstract void setTitle(int);
method public void setTitleOptionalHint(boolean);
method public void setType(int);
method public void snooze(int);
field public static final int SNOOZE_TIME_DEFAULT;
field public static final int DEFAULT_HIDE_DURATION = -1; // 0xffffffff
field public static final int TYPE_FLOATING = 1; // 0x1
field public static final int TYPE_PRIMARY = 0; // 0x0
}
@@ -38938,7 +38938,7 @@ package android.view {
public class ViewConfiguration {
ctor public deprecated ViewConfiguration();
method public static android.view.ViewConfiguration get(android.content.Context);
method public static int getDefaultActionModeSnoozeTime();
method public static long getDefaultActionModeHideDuration();
method public static int getDoubleTapTimeout();
method public static deprecated int getEdgeSlop();
method public static deprecated int getFadingEdgeLength();

View File

@@ -45,10 +45,10 @@ public abstract class ActionMode {
public static final int TYPE_FLOATING = 1;
/**
* Default snooze time.
* Default value to hide the action mode for
* {@link ViewConfiguration#getDefaultActionModeHideDuration()}.
*/
public static final int SNOOZE_TIME_DEFAULT =
ViewConfiguration.getDefaultActionModeSnoozeTime();
public static final int DEFAULT_HIDE_DURATION = -1;
private Object mTag;
private boolean mTitleOptionalHint;
@@ -213,17 +213,17 @@ public abstract class ActionMode {
public void invalidateContentRect() {}
/**
* Hide the action mode view from obstructing the content below for a short period.
* Hide the action mode view from obstructing the content below for a short duration.
* This only makes sense for action modes that support dynamic positioning on the screen.
* If this method is called again before the snooze time expires, the later snooze will
* If this method is called again before the hide duration expires, the later hide call will
* cancel the former and then take effect.
* NOTE that there is an internal limit to how long the mode can be snoozed for. It's typically
* NOTE that there is an internal limit to how long the mode can be hidden for. It's typically
* about a few seconds.
*
* @param snoozeTime The number of milliseconds to snooze for.
* @see #SNOOZE_TIME_DEFAULT
* @param duration The number of milliseconds to hide for.
* @see #DEFAULT_HIDE_DURATION
*/
public void snooze(int snoozeTime) {}
public void hide(long duration) {}
/**
* Finish and close this action mode. The action mode's {@link ActionMode.Callback} will

View File

@@ -213,9 +213,9 @@ public class ViewConfiguration {
private static final int OVERFLING_DISTANCE = 6;
/**
* Default time to snooze an action mode for.
* Default duration to hide an action mode for.
*/
private static final int ACTION_MODE_SNOOZE_TIME_DEFAULT = 2000;
private static final long ACTION_MODE_HIDE_DURATION_DEFAULT = 2000;
/**
* Configuration values for overriding {@link #hasPermanentMenuKey()} behavior.
@@ -737,10 +737,10 @@ public class ViewConfiguration {
}
/**
* @return the default duration in milliseconds for {@link ActionMode#snooze(int)}.
* @return the default duration in milliseconds for {@link ActionMode#hide(long)}.
*/
public static int getDefaultActionModeSnoozeTime() {
return ACTION_MODE_SNOOZE_TIME_DEFAULT;
public static long getDefaultActionModeHideDuration() {
return ACTION_MODE_HIDE_DURATION_DEFAULT;
}
/**

View File

@@ -248,7 +248,7 @@ public class Editor {
@Override
public void run() {
if (mTextActionMode != null) {
mTextActionMode.snooze(ActionMode.SNOOZE_TIME_DEFAULT);
mTextActionMode.hide(ActionMode.DEFAULT_HIDE_DURATION);
}
}
};
@@ -257,7 +257,7 @@ public class Editor {
@Override
public void run() {
if (mTextActionMode != null) {
mTextActionMode.snooze(0); // snooze off.
mTextActionMode.hide(0); // hide off.
}
}
};

View File

@@ -23,6 +23,7 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewConfiguration;
import com.android.internal.util.Preconditions;
import com.android.internal.view.menu.MenuBuilder;
@@ -30,7 +31,7 @@ import com.android.internal.widget.FloatingToolbar;
public class FloatingActionMode extends ActionMode {
private static final int MAX_SNOOZE_TIME = 3000;
private static final int MAX_HIDE_DURATION = 3000;
private static final int MOVING_HIDE_DELAY = 300;
private final Context mContext;
@@ -50,9 +51,9 @@ public class FloatingActionMode extends ActionMode {
}
};
private final Runnable mSnoozeOff = new Runnable() {
private final Runnable mHideOff = new Runnable() {
public void run() {
mFloatingToolbarVisibilityHelper.setSnoozed(false);
mFloatingToolbarVisibilityHelper.setHideRequested(false);
}
};
@@ -171,15 +172,19 @@ public class FloatingActionMode extends ActionMode {
}
@Override
public void snooze(int snoozeTime) {
public void hide(long duration) {
checkToolbarInitialized();
snoozeTime = Math.min(MAX_SNOOZE_TIME, snoozeTime);
mOriginatingView.removeCallbacks(mSnoozeOff);
if (snoozeTime <= 0) {
mSnoozeOff.run();
if (duration == ActionMode.DEFAULT_HIDE_DURATION) {
duration = ViewConfiguration.getDefaultActionModeHideDuration();
}
duration = Math.min(MAX_HIDE_DURATION, duration);
mOriginatingView.removeCallbacks(mHideOff);
if (duration <= 0) {
mHideOff.run();
} else {
mFloatingToolbarVisibilityHelper.setSnoozed(true);
mOriginatingView.postDelayed(mSnoozeOff, snoozeTime);
mFloatingToolbarVisibilityHelper.setHideRequested(true);
mOriginatingView.postDelayed(mHideOff, duration);
}
}
@@ -225,7 +230,7 @@ public class FloatingActionMode extends ActionMode {
private void reset() {
mOriginatingView.removeCallbacks(mMovingOff);
mOriginatingView.removeCallbacks(mSnoozeOff);
mOriginatingView.removeCallbacks(mHideOff);
}
@@ -236,7 +241,7 @@ public class FloatingActionMode extends ActionMode {
private final FloatingToolbar mToolbar;
private boolean mSnoozed;
private boolean mHideRequested;
private boolean mMoving;
private boolean mOutOfBounds;
@@ -244,8 +249,8 @@ public class FloatingActionMode extends ActionMode {
mToolbar = Preconditions.checkNotNull(toolbar);
}
public void setSnoozed(boolean snoozed) {
mSnoozed = snoozed;
public void setHideRequested(boolean hide) {
mHideRequested = hide;
updateToolbarVisibility();
}
@@ -260,7 +265,7 @@ public class FloatingActionMode extends ActionMode {
}
private void updateToolbarVisibility() {
if (mSnoozed || mMoving || mOutOfBounds) {
if (mHideRequested || mMoving || mOutOfBounds) {
mToolbar.hide();
} else if (mToolbar.isHidden()) {
mToolbar.show();