Merge "Add share button to clipboard overlay" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
300b970951
@@ -56,6 +56,8 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:animateLayoutChanges="true">
|
||||
<include layout="@layout/overlay_action_chip"
|
||||
android:id="@+id/share_chip"/>
|
||||
<include layout="@layout/overlay_action_chip"
|
||||
android:id="@+id/remote_copy_chip"/>
|
||||
<include layout="@layout/overlay_action_chip"
|
||||
|
||||
@@ -26,6 +26,7 @@ import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.CLIPBO
|
||||
import static com.android.systemui.clipboardoverlay.ClipboardOverlayEvent.CLIPBOARD_OVERLAY_ACTION_TAPPED;
|
||||
import static com.android.systemui.clipboardoverlay.ClipboardOverlayEvent.CLIPBOARD_OVERLAY_EDIT_TAPPED;
|
||||
import static com.android.systemui.clipboardoverlay.ClipboardOverlayEvent.CLIPBOARD_OVERLAY_REMOTE_COPY_TAPPED;
|
||||
import static com.android.systemui.clipboardoverlay.ClipboardOverlayEvent.CLIPBOARD_OVERLAY_SHARE_TAPPED;
|
||||
import static com.android.systemui.clipboardoverlay.ClipboardOverlayEvent.CLIPBOARD_OVERLAY_SWIPE_DISMISSED;
|
||||
import static com.android.systemui.clipboardoverlay.ClipboardOverlayEvent.CLIPBOARD_OVERLAY_TIMED_OUT;
|
||||
|
||||
@@ -141,6 +142,7 @@ public class ClipboardOverlayController {
|
||||
private final TextView mHiddenImagePreview;
|
||||
private final View mPreviewBorder;
|
||||
private final OverlayActionChip mEditChip;
|
||||
private final OverlayActionChip mShareChip;
|
||||
private final OverlayActionChip mRemoteCopyChip;
|
||||
private final View mActionContainerBackground;
|
||||
private final View mDismissButton;
|
||||
@@ -160,7 +162,7 @@ public class ClipboardOverlayController {
|
||||
|
||||
/** Tracks config changes that require updating insets */
|
||||
private final InterestingConfigChanges mConfigChanges = new InterestingConfigChanges(
|
||||
ActivityInfo.CONFIG_KEYBOARD_HIDDEN);
|
||||
ActivityInfo.CONFIG_KEYBOARD_HIDDEN);
|
||||
|
||||
public ClipboardOverlayController(Context context,
|
||||
BroadcastDispatcher broadcastDispatcher,
|
||||
@@ -205,6 +207,7 @@ public class ClipboardOverlayController {
|
||||
mHiddenImagePreview = requireNonNull(mView.findViewById(R.id.hidden_image_preview));
|
||||
mPreviewBorder = requireNonNull(mView.findViewById(R.id.preview_border));
|
||||
mEditChip = requireNonNull(mView.findViewById(R.id.edit_chip));
|
||||
mShareChip = requireNonNull(mView.findViewById(R.id.share_chip));
|
||||
mRemoteCopyChip = requireNonNull(mView.findViewById(R.id.remote_copy_chip));
|
||||
mDismissButton = requireNonNull(mView.findViewById(R.id.dismiss_button));
|
||||
|
||||
@@ -238,6 +241,7 @@ public class ClipboardOverlayController {
|
||||
mEditChip.setIcon(Icon.createWithResource(mContext, R.drawable.ic_screenshot_edit), true);
|
||||
mRemoteCopyChip.setIcon(
|
||||
Icon.createWithResource(mContext, R.drawable.ic_baseline_devices_24), true);
|
||||
mShareChip.setIcon(Icon.createWithResource(mContext, R.drawable.ic_screenshot_share), true);
|
||||
|
||||
attachWindow();
|
||||
withWindowAttached(() -> {
|
||||
@@ -329,9 +333,11 @@ public class ClipboardOverlayController {
|
||||
} else {
|
||||
showEditableText(item.getText(), false);
|
||||
}
|
||||
showShareChip(clipData);
|
||||
accessibilityAnnouncement = mContext.getString(R.string.clipboard_text_copied);
|
||||
} else if (clipData.getItemAt(0).getUri() != null) {
|
||||
if (tryShowEditableImage(clipData.getItemAt(0).getUri(), isSensitive)) {
|
||||
showShareChip(clipData);
|
||||
accessibilityAnnouncement = mContext.getString(R.string.clipboard_image_copied);
|
||||
} else {
|
||||
accessibilityAnnouncement = mContext.getString(R.string.clipboard_content_copied);
|
||||
@@ -396,6 +402,12 @@ public class ClipboardOverlayController {
|
||||
});
|
||||
}
|
||||
|
||||
private void showShareChip(ClipData clip) {
|
||||
mShareChip.setVisibility(View.VISIBLE);
|
||||
mShareChip.setAlpha(1f);
|
||||
mShareChip.setOnClickListener((v) -> shareContent(clip));
|
||||
}
|
||||
|
||||
private OverlayActionChip constructActionChip(RemoteAction action) {
|
||||
OverlayActionChip chip = (OverlayActionChip) LayoutInflater.from(mContext).inflate(
|
||||
R.layout.overlay_action_chip, mActionContainer, false);
|
||||
@@ -471,6 +483,21 @@ public class ClipboardOverlayController {
|
||||
animateOut();
|
||||
}
|
||||
|
||||
private void shareContent(ClipData clip) {
|
||||
mUiEventLogger.log(CLIPBOARD_OVERLAY_SHARE_TAPPED);
|
||||
Intent shareIntent = new Intent(Intent.ACTION_SEND);
|
||||
shareIntent.putExtra(Intent.EXTRA_TEXT, clip.getItemAt(0).getText());
|
||||
shareIntent.setDataAndType(
|
||||
clip.getItemAt(0).getUri(), clip.getDescription().getMimeType(0));
|
||||
shareIntent.putExtra(Intent.EXTRA_STREAM, clip.getItemAt(0).getUri());
|
||||
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
Intent chooserIntent = Intent.createChooser(shareIntent, null)
|
||||
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
mContext.startActivity(chooserIntent);
|
||||
animateOut();
|
||||
}
|
||||
|
||||
private void showSinglePreview(View v) {
|
||||
mTextPreview.setVisibility(View.GONE);
|
||||
mImagePreview.setVisibility(View.GONE);
|
||||
@@ -738,6 +765,7 @@ public class ClipboardOverlayController {
|
||||
mView.setTranslationX(0);
|
||||
mView.setAlpha(0);
|
||||
mActionContainerBackground.setVisibility(View.GONE);
|
||||
mShareChip.setVisibility(View.GONE);
|
||||
resetActionChips();
|
||||
mTimeoutHandler.cancelTimeout();
|
||||
}
|
||||
|
||||
@@ -26,6 +26,8 @@ public enum ClipboardOverlayEvent implements UiEventLogger.UiEventEnum {
|
||||
CLIPBOARD_OVERLAY_UPDATED(950),
|
||||
@UiEvent(doc = "clipboard edit tapped")
|
||||
CLIPBOARD_OVERLAY_EDIT_TAPPED(951),
|
||||
@UiEvent(doc = "clipboard share tapped")
|
||||
CLIPBOARD_OVERLAY_SHARE_TAPPED(RESERVE_NEW_UI_EVENT_ID),
|
||||
@UiEvent(doc = "clipboard action tapped")
|
||||
CLIPBOARD_OVERLAY_ACTION_TAPPED(952),
|
||||
@UiEvent(doc = "clipboard remote copy tapped")
|
||||
|
||||
Reference in New Issue
Block a user