Merge "Handle non-image URIs and quick copies" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
6a5d70573f
@@ -137,7 +137,6 @@ public class ClipboardOverlayController {
|
|||||||
|
|
||||||
private Runnable mOnSessionCompleteListener;
|
private Runnable mOnSessionCompleteListener;
|
||||||
|
|
||||||
|
|
||||||
private InputMonitor mInputMonitor;
|
private InputMonitor mInputMonitor;
|
||||||
private InputEventReceiver mInputEventReceiver;
|
private InputEventReceiver mInputEventReceiver;
|
||||||
|
|
||||||
@@ -145,6 +144,7 @@ public class ClipboardOverlayController {
|
|||||||
private BroadcastReceiver mScreenshotReceiver;
|
private BroadcastReceiver mScreenshotReceiver;
|
||||||
|
|
||||||
private boolean mBlockAttach = false;
|
private boolean mBlockAttach = false;
|
||||||
|
private Animator mExitAnimator;
|
||||||
|
|
||||||
public ClipboardOverlayController(Context context,
|
public ClipboardOverlayController(Context context,
|
||||||
BroadcastDispatcher broadcastDispatcher,
|
BroadcastDispatcher broadcastDispatcher,
|
||||||
@@ -200,6 +200,7 @@ public class ClipboardOverlayController {
|
|||||||
@Override
|
@Override
|
||||||
public void onSwipeDismissInitiated(Animator animator) {
|
public void onSwipeDismissInitiated(Animator animator) {
|
||||||
mUiEventLogger.log(CLIPBOARD_OVERLAY_SWIPE_DISMISSED);
|
mUiEventLogger.log(CLIPBOARD_OVERLAY_SWIPE_DISMISSED);
|
||||||
|
mExitAnimator = animator;
|
||||||
animator.addListener(new AnimatorListenerAdapter() {
|
animator.addListener(new AnimatorListenerAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void onAnimationStart(Animator animation) {
|
public void onAnimationStart(Animator animation) {
|
||||||
@@ -233,7 +234,6 @@ public class ClipboardOverlayController {
|
|||||||
mWindow.setContentView(mContainer);
|
mWindow.setContentView(mContainer);
|
||||||
updateInsets(mWindowManager.getCurrentWindowMetrics().getWindowInsets());
|
updateInsets(mWindowManager.getCurrentWindowMetrics().getWindowInsets());
|
||||||
mView.requestLayout();
|
mView.requestLayout();
|
||||||
mView.post(this::animateIn);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
mTimeoutHandler.setOnTimeoutRunnable(() -> {
|
mTimeoutHandler.setOnTimeoutRunnable(() -> {
|
||||||
@@ -273,6 +273,9 @@ public class ClipboardOverlayController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setClipData(ClipData clipData, String clipSource) {
|
void setClipData(ClipData clipData, String clipSource) {
|
||||||
|
if (mExitAnimator != null && mExitAnimator.isRunning()) {
|
||||||
|
mExitAnimator.cancel();
|
||||||
|
}
|
||||||
reset();
|
reset();
|
||||||
if (clipData == null || clipData.getItemCount() == 0) {
|
if (clipData == null || clipData.getItemCount() == 0) {
|
||||||
showTextPreview(mContext.getResources().getString(
|
showTextPreview(mContext.getResources().getString(
|
||||||
@@ -305,6 +308,7 @@ public class ClipboardOverlayController {
|
|||||||
} else {
|
} else {
|
||||||
mRemoteCopyChip.setVisibility(View.GONE);
|
mRemoteCopyChip.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
withWindowAttached(() -> mContainer.post(this::animateIn));
|
||||||
mTimeoutHandler.resetTimeout();
|
mTimeoutHandler.resetTimeout();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -411,7 +415,7 @@ public class ClipboardOverlayController {
|
|||||||
private void showTextPreview(CharSequence text) {
|
private void showTextPreview(CharSequence text) {
|
||||||
mTextPreview.setVisibility(View.VISIBLE);
|
mTextPreview.setVisibility(View.VISIBLE);
|
||||||
mImagePreview.setVisibility(View.GONE);
|
mImagePreview.setVisibility(View.GONE);
|
||||||
mTextPreview.setText(text);
|
mTextPreview.setText(text.subSequence(0, Math.min(500, text.length())));
|
||||||
mEditChip.setVisibility(View.GONE);
|
mEditChip.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -428,10 +432,6 @@ public class ClipboardOverlayController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showEditableImage(Uri uri) {
|
private void showEditableImage(Uri uri) {
|
||||||
mTextPreview.setVisibility(View.GONE);
|
|
||||||
mImagePreview.setVisibility(View.VISIBLE);
|
|
||||||
mEditChip.setAlpha(1f);
|
|
||||||
mActionContainerBackground.setVisibility(View.VISIBLE);
|
|
||||||
ContentResolver resolver = mContext.getContentResolver();
|
ContentResolver resolver = mContext.getContentResolver();
|
||||||
try {
|
try {
|
||||||
int size = mContext.getResources().getDimensionPixelSize(R.dimen.overlay_x_scale);
|
int size = mContext.getResources().getDimensionPixelSize(R.dimen.overlay_x_scale);
|
||||||
@@ -441,7 +441,14 @@ public class ClipboardOverlayController {
|
|||||||
mImagePreview.setImageBitmap(thumbnail);
|
mImagePreview.setImageBitmap(thumbnail);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Log.e(TAG, "Thumbnail loading failed", e);
|
Log.e(TAG, "Thumbnail loading failed", e);
|
||||||
|
showTextPreview(
|
||||||
|
mContext.getResources().getString(R.string.clipboard_overlay_text_copied));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
mTextPreview.setVisibility(View.GONE);
|
||||||
|
mImagePreview.setVisibility(View.VISIBLE);
|
||||||
|
mEditChip.setAlpha(1f);
|
||||||
|
mActionContainerBackground.setVisibility(View.VISIBLE);
|
||||||
View.OnClickListener listener = v -> editImage(uri);
|
View.OnClickListener listener = v -> editImage(uri);
|
||||||
mEditChip.setOnClickListener(listener);
|
mEditChip.setOnClickListener(listener);
|
||||||
mEditChip.setContentDescription(
|
mEditChip.setContentDescription(
|
||||||
@@ -472,12 +479,23 @@ public class ClipboardOverlayController {
|
|||||||
private void animateOut() {
|
private void animateOut() {
|
||||||
Animator anim = getExitAnimation();
|
Animator anim = getExitAnimation();
|
||||||
anim.addListener(new AnimatorListenerAdapter() {
|
anim.addListener(new AnimatorListenerAdapter() {
|
||||||
|
private boolean mCancelled;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAnimationCancel(Animator animation) {
|
||||||
|
super.onAnimationCancel(animation);
|
||||||
|
mCancelled = true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAnimationEnd(Animator animation) {
|
public void onAnimationEnd(Animator animation) {
|
||||||
super.onAnimationEnd(animation);
|
super.onAnimationEnd(animation);
|
||||||
hideImmediate();
|
if (!mCancelled) {
|
||||||
|
hideImmediate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
mExitAnimator = anim;
|
||||||
anim.start();
|
anim.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -630,6 +648,7 @@ public class ClipboardOverlayController {
|
|||||||
private void reset() {
|
private void reset() {
|
||||||
mView.setTranslationX(0);
|
mView.setTranslationX(0);
|
||||||
mContainer.setAlpha(0);
|
mContainer.setAlpha(0);
|
||||||
|
mActionContainerBackground.setVisibility(View.GONE);
|
||||||
resetActionChips();
|
resetActionChips();
|
||||||
mTimeoutHandler.cancelTimeout();
|
mTimeoutHandler.cancelTimeout();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user