Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 300b9709 authored by Miranda Kephart's avatar Miranda Kephart Committed by Android (Google) Code Review
Browse files

Merge "Add share button to clipboard overlay" into tm-dev

parents 33674c83 7dc86378
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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"
+29 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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();
    }
+2 −0
Original line number Diff line number Diff line
@@ -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")