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

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

Merge changes Ia1de8afb,I0cd64d15

* changes:
  Add background protection to clipboard UI
  Add attribution to clipboard text editing
parents a364a187 317cffa8
Loading
Loading
Loading
Loading
+126 −115
Original line number Diff line number Diff line
@@ -14,13 +14,23 @@
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->
<com.android.systemui.clipboardoverlay.DraggableConstraintLayout
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:theme="@style/FloatingOverlay"
    android:alpha="0"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/background_protection"
        android:layout_height="@dimen/overlay_bg_protection_height"
        android:layout_width="match_parent"
        android:layout_gravity="bottom"
        android:src="@drawable/overlay_actions_background_protection"/>
    <com.android.systemui.clipboardoverlay.DraggableConstraintLayout
        android:id="@+id/clipboard_ui"
        android:theme="@style/FloatingOverlay"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <ImageView
            android:id="@+id/actions_container_background"
            android:visibility="gone"
@@ -137,3 +147,4 @@
                android:src="@drawable/overlay_cancel"/>
        </FrameLayout>
    </com.android.systemui.clipboardoverlay.DraggableConstraintLayout>
</FrameLayout>
 No newline at end of file
+2 −0
Original line number Diff line number Diff line
@@ -2384,6 +2384,8 @@
    <string name="clipboard_edit_text_copy">Copy</string>
    <!-- Text informing user that content has been copied to the system clipboard [CHAR LIMIT=NONE] -->
    <string name="clipboard_overlay_text_copied">Copied</string>
    <!-- Text informing user where text being edited was copied from [CHAR LIMIT=NONE] -->
    <string name="clipboard_edit_source">From <xliff:g id="appName" example="Gmail">%1$s</xliff:g></string>
    <!-- Label for button to dismiss clipboard overlay [CHAR LIMIT=NONE] -->
    <string name="clipboard_dismiss_description">Dismiss copy UI</string>
</resources>
+8 −6
Original line number Diff line number Diff line
@@ -103,6 +103,7 @@ public class ClipboardOverlayController {
    private final AccessibilityManager mAccessibilityManager;
    private final TextClassifier mTextClassifier;

    private final FrameLayout mContainer;
    private final DraggableConstraintLayout mView;
    private final ImageView mImagePreview;
    private final TextView mTextPreview;
@@ -147,8 +148,9 @@ public class ClipboardOverlayController {
        mWindow = FloatingWindowUtil.getFloatingWindow(mContext);
        mWindow.setWindowManager(mWindowManager, null, null);

        mView = (DraggableConstraintLayout)
        mContainer = (FrameLayout)
                LayoutInflater.from(mContext).inflate(R.layout.clipboard_overlay, null);
        mView = requireNonNull(mContainer.findViewById(R.id.clipboard_ui));
        mActionContainerBackground =
                requireNonNull(mView.findViewById(R.id.actions_container_background));
        mActionContainer = requireNonNull(mView.findViewById(R.id.actions));
@@ -180,7 +182,7 @@ public class ClipboardOverlayController {

        attachWindow();
        withWindowAttached(() -> {
            mWindow.setContentView(mView);
            mWindow.setContentView(mContainer);
            updateInsets(mWindowManager.getCurrentWindowMetrics().getWindowInsets());
            mView.requestLayout();
            mView.post(this::animateIn);
@@ -371,7 +373,7 @@ public class ClipboardOverlayController {
    private ValueAnimator getEnterAnimation() {
        ValueAnimator anim = ValueAnimator.ofFloat(0, 1);

        mView.setAlpha(0);
        mContainer.setAlpha(0);
        mDismissButton.setVisibility(View.GONE);
        final View previewBorder = requireNonNull(mView.findViewById(R.id.preview_border));
        final View actionBackground = requireNonNull(
@@ -383,7 +385,7 @@ public class ClipboardOverlayController {
        }

        anim.addUpdateListener(animation -> {
            mView.setAlpha(animation.getAnimatedFraction());
            mContainer.setAlpha(animation.getAnimatedFraction());
            float scale = 0.6f + 0.4f * animation.getAnimatedFraction();
            mView.setPivotY(mView.getHeight() - previewBorder.getHeight() / 2f);
            mView.setPivotX(actionBackground.getWidth() / 2f);
@@ -394,7 +396,7 @@ public class ClipboardOverlayController {
            @Override
            public void onAnimationEnd(Animator animation) {
                super.onAnimationEnd(animation);
                mView.setAlpha(1);
                mContainer.setAlpha(1);
                mTimeoutHandler.resetTimeout();
            }
        });
@@ -439,7 +441,7 @@ public class ClipboardOverlayController {

    private void reset() {
        mView.setTranslationX(0);
        mView.setAlpha(0);
        mContainer.setAlpha(0);
        resetActionChips();
        mTimeoutHandler.cancelTimeout();
    }
+16 −1
Original line number Diff line number Diff line
@@ -22,9 +22,12 @@ import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.TextView;

import com.android.systemui.R;

@@ -32,8 +35,11 @@ import com.android.systemui.R;
 * Lightweight activity for editing text clipboard contents
 */
public class EditTextActivity extends Activity {
    private static final String TAG = "EditTextActivity";

    private EditText mEditText;
    private ClipboardManager mClipboardManager;
    private TextView mAttribution;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
@@ -42,6 +48,7 @@ public class EditTextActivity extends Activity {
        findViewById(R.id.copy_button).setOnClickListener((v) -> saveToClipboard());
        findViewById(R.id.share).setOnClickListener((v) -> share());
        mEditText = findViewById(R.id.edit_text);
        mAttribution = findViewById(R.id.attribution);
        mClipboardManager = requireNonNull(getSystemService(ClipboardManager.class));
    }

@@ -53,7 +60,15 @@ public class EditTextActivity extends Activity {
            finish();
            return;
        }
        // TODO: put clip attribution in R.id.attribution TextView
        PackageManager pm = getApplicationContext().getPackageManager();
        try {
            CharSequence label = pm.getApplicationLabel(
                    pm.getApplicationInfo(mClipboardManager.getPrimaryClipSource(),
                            PackageManager.ApplicationInfoFlags.of(0)));
            mAttribution.setText(getResources().getString(R.string.clipboard_edit_source, label));
        } catch (PackageManager.NameNotFoundException e) {
            Log.w(TAG, "Package not found: " + mClipboardManager.getPrimaryClipSource(), e);
        }
        mEditText.setText(clip.getItemAt(0).getText());
        mEditText.requestFocus();
    }