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

Commit 725cea8b authored by Miranda Kephart's avatar Miranda Kephart Committed by Automerger Merge Worker
Browse files

Merge "Add share button to clipboard overlay" into tm-dev am: 300b9709

parents 561f0442 300b9709
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")