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

Commit 739183a2 authored by Matt Casey's avatar Matt Casey Committed by Automerger Merge Worker
Browse files

Merge "Accessibility fixes for clipboard overlay" into tm-dev am: 6e3282ca

parents 82d1e324 6e3282ca
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -788,6 +788,7 @@
                  android:theme="@style/EditTextActivity"
                  android:theme="@style/EditTextActivity"
                  android:exported="false"
                  android:exported="false"
                  android:excludeFromRecents="true"
                  android:excludeFromRecents="true"
                  android:label="@string/clipboard_editor"
                  />
                  />


        <activity android:name=".controls.management.ControlsProviderSelectorActivity"
        <activity android:name=".controls.management.ControlsProviderSelectorActivity"
+3 −1
Original line number Original line Diff line number Diff line
@@ -22,7 +22,8 @@
    android:theme="@style/FloatingOverlay"
    android:theme="@style/FloatingOverlay"
    android:alpha="0"
    android:alpha="0"
    android:layout_width="match_parent"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    android:layout_height="match_parent"
    android:contentDescription="@string/clipboard_overlay_window_name">
    <ImageView
    <ImageView
        android:id="@+id/actions_container_background"
        android:id="@+id/actions_container_background"
        android:visibility="gone"
        android:visibility="gone"
@@ -121,6 +122,7 @@
            android:id="@+id/image_preview"
            android:id="@+id/image_preview"
            android:scaleType="fitCenter"
            android:scaleType="fitCenter"
            android:adjustViewBounds="true"
            android:adjustViewBounds="true"
            android:contentDescription="@string/clipboard_image_preview"
            android:layout_width="match_parent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
            android:layout_height="wrap_content"/>
        <TextView
        <TextView
+8 −0
Original line number Original line Diff line number Diff line
@@ -2507,6 +2507,14 @@
    <string name="clipboard_image_copied">Image copied</string>
    <string name="clipboard_image_copied">Image copied</string>
    <!-- Accessibility announcement informing user that something has been copied [CHAR LIMIT=NONE] -->
    <!-- Accessibility announcement informing user that something has been copied [CHAR LIMIT=NONE] -->
    <string name="clipboard_content_copied">Content copied</string>
    <string name="clipboard_content_copied">Content copied</string>
    <!-- Name of the screen that lets the user edit the context of the clipboard (copy/paste) [CHAR LIMIT=NONE] -->
    <string name="clipboard_editor">Clipboard Editor</string>
    <!-- Name for the window showing the clipboard (copy/paste) preview and controls [CHAR LIMIT=NONE] -->
    <string name="clipboard_overlay_window_name">Clipboard</string>
    <!-- Accessibility label for an image preview [CHAR LIMIT=NONE] -->
    <string name="clipboard_image_preview">Image preview</string>
    <!-- Accessibility string describing what will happen when the user selects the clipboard preview. Completing the sentence "Double tap to ..." [CHAR LIMIT=NONE] -->
    <string name="clipboard_edit">edit</string>


    <!-- Generic "add" string [CHAR LIMIT=NONE] -->
    <!-- Generic "add" string [CHAR LIMIT=NONE] -->
    <string name="add">Add</string>
    <string name="add">Add</string>
+15 −0
Original line number Original line Diff line number Diff line
@@ -97,6 +97,9 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.TextView;


import androidx.core.view.ViewCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;

import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.policy.PhoneWindow;
import com.android.internal.policy.PhoneWindow;
import com.android.systemui.R;
import com.android.systemui.R;
@@ -218,6 +221,7 @@ public class ClipboardOverlayController {
        mRemoteCopyChip.setAlpha(1);
        mRemoteCopyChip.setAlpha(1);
        mDismissButton = requireNonNull(mView.findViewById(R.id.dismiss_button));
        mDismissButton = requireNonNull(mView.findViewById(R.id.dismiss_button));


        mShareChip.setContentDescription(mContext.getString(com.android.internal.R.string.share));
        mView.setCallbacks(new DraggableConstraintLayout.SwipeDismissCallbacks() {
        mView.setCallbacks(new DraggableConstraintLayout.SwipeDismissCallbacks() {
            @Override
            @Override
            public void onInteraction() {
            public void onInteraction() {
@@ -367,6 +371,8 @@ public class ClipboardOverlayController {
        PackageManager packageManager = mContext.getPackageManager();
        PackageManager packageManager = mContext.getPackageManager();
        if (packageManager.resolveActivity(
        if (packageManager.resolveActivity(
                remoteCopyIntent, PackageManager.ResolveInfoFlags.of(0)) != null) {
                remoteCopyIntent, PackageManager.ResolveInfoFlags.of(0)) != null) {
            mRemoteCopyChip.setContentDescription(
                    mContext.getString(R.string.clipboard_send_nearby_description));
            mRemoteCopyChip.setVisibility(View.VISIBLE);
            mRemoteCopyChip.setVisibility(View.VISIBLE);
            mRemoteCopyChip.setOnClickListener((v) -> {
            mRemoteCopyChip.setOnClickListener((v) -> {
                mUiEventLogger.log(CLIPBOARD_OVERLAY_REMOTE_COPY_TAPPED);
                mUiEventLogger.log(CLIPBOARD_OVERLAY_REMOTE_COPY_TAPPED);
@@ -581,6 +587,7 @@ public class ClipboardOverlayController {
        TextView textView = hidden ? mHiddenPreview : mTextPreview;
        TextView textView = hidden ? mHiddenPreview : mTextPreview;
        showTextPreview(text, textView);
        showTextPreview(text, textView);
        View.OnClickListener listener = v -> editText();
        View.OnClickListener listener = v -> editText();
        setAccessibilityActionToEdit(textView);
        if (DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SYSTEMUI,
        if (DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SYSTEMUI,
                CLIPBOARD_OVERLAY_SHOW_EDIT_BUTTON, false)) {
                CLIPBOARD_OVERLAY_SHOW_EDIT_BUTTON, false)) {
            mEditChip.setVisibility(View.VISIBLE);
            mEditChip.setVisibility(View.VISIBLE);
@@ -602,6 +609,7 @@ public class ClipboardOverlayController {
            showSinglePreview(mHiddenPreview);
            showSinglePreview(mHiddenPreview);
            if (isEditableImage) {
            if (isEditableImage) {
                mHiddenPreview.setOnClickListener(listener);
                mHiddenPreview.setOnClickListener(listener);
                setAccessibilityActionToEdit(mHiddenPreview);
            }
            }
        } else if (isEditableImage) { // if the MIMEtype is image, try to load
        } else if (isEditableImage) { // if the MIMEtype is image, try to load
            try {
            try {
@@ -612,6 +620,7 @@ public class ClipboardOverlayController {
                showSinglePreview(mImagePreview);
                showSinglePreview(mImagePreview);
                mImagePreview.setImageBitmap(thumbnail);
                mImagePreview.setImageBitmap(thumbnail);
                mImagePreview.setOnClickListener(listener);
                mImagePreview.setOnClickListener(listener);
                setAccessibilityActionToEdit(mImagePreview);
            } catch (IOException e) {
            } catch (IOException e) {
                Log.e(TAG, "Thumbnail loading failed", e);
                Log.e(TAG, "Thumbnail loading failed", e);
                showTextPreview(
                showTextPreview(
@@ -635,6 +644,12 @@ public class ClipboardOverlayController {
        return isEditableImage;
        return isEditableImage;
    }
    }


    private void setAccessibilityActionToEdit(View view) {
        ViewCompat.replaceAccessibilityAction(view,
                AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_CLICK,
                mContext.getString(R.string.clipboard_edit), null);
    }

    private Intent getRemoteCopyIntent(ClipData clipData) {
    private Intent getRemoteCopyIntent(ClipData clipData) {
        Intent nearbyIntent = new Intent(REMOTE_COPY_ACTION);
        Intent nearbyIntent = new Intent(REMOTE_COPY_ACTION);


+8 −0
Original line number Original line Diff line number Diff line
@@ -117,6 +117,14 @@ public class DraggableConstraintLayout extends ConstraintLayout
        mCallbacks = callbacks;
        mCallbacks = callbacks;
    }
    }


    @Override
    public boolean onInterceptHoverEvent(MotionEvent event) {
        if (mCallbacks != null) {
            mCallbacks.onInteraction();
        }
        return super.onInterceptHoverEvent(event);
    }

    @Override // View
    @Override // View
    protected void onFinishInflate() {
    protected void onFinishInflate() {
        mActionsContainer = findViewById(R.id.actions_container);
        mActionsContainer = findViewById(R.id.actions_container);