Merge "Hide edit buttons on clipboard and clipboard smart actions" into tm-dev

This commit is contained in:
Miranda Kephart
2022-05-18 14:54:38 +00:00
committed by Android (Google) Code Review
3 changed files with 49 additions and 21 deletions

View File

@@ -549,6 +549,18 @@ public final class SystemUiDeviceConfigFlags {
*/ */
public static final String PERSISTS_WIDGET_PROVIDER_INFO = "persists_widget_provider_info"; public static final String PERSISTS_WIDGET_PROVIDER_INFO = "persists_widget_provider_info";
/**
* (boolean) Whether the clipboard overlay shows an edit button (as opposed to requiring tapping
* the preview to send an edit intent).
*/
public static final String CLIPBOARD_OVERLAY_SHOW_EDIT_BUTTON =
"clipboard_overlay_show_edit_button";
/**
* (boolean) Whether to show smart chips (based on TextClassifier) in the clipboard overlay.
*/
public static final String CLIPBOARD_OVERLAY_SHOW_ACTIONS = "clipboard_overlay_show_actions";
private SystemUiDeviceConfigFlags() { private SystemUiDeviceConfigFlags() {
} }
} }

View File

@@ -21,6 +21,8 @@ import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.WindowManager.LayoutParams.TYPE_SCREENSHOT; import static android.view.WindowManager.LayoutParams.TYPE_SCREENSHOT;
import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.CLIPBOARD_OVERLAY_SHOW_ACTIONS;
import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.CLIPBOARD_OVERLAY_SHOW_EDIT_BUTTON;
import static com.android.systemui.clipboardoverlay.ClipboardOverlayEvent.CLIPBOARD_OVERLAY_ACTION_TAPPED; 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_EDIT_TAPPED;
import static com.android.systemui.clipboardoverlay.ClipboardOverlayEvent.CLIPBOARD_OVERLAY_REMOTE_COPY_TAPPED; import static com.android.systemui.clipboardoverlay.ClipboardOverlayEvent.CLIPBOARD_OVERLAY_REMOTE_COPY_TAPPED;
@@ -58,6 +60,7 @@ import android.hardware.input.InputManager;
import android.net.Uri; import android.net.Uri;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Looper; import android.os.Looper;
import android.provider.DeviceConfig;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.Log; import android.util.Log;
@@ -314,9 +317,12 @@ public class ClipboardOverlayController {
accessibilityAnnouncement = mContext.getString(R.string.clipboard_content_copied); accessibilityAnnouncement = mContext.getString(R.string.clipboard_content_copied);
} else if (!TextUtils.isEmpty(clipData.getItemAt(0).getText())) { } else if (!TextUtils.isEmpty(clipData.getItemAt(0).getText())) {
ClipData.Item item = clipData.getItemAt(0); ClipData.Item item = clipData.getItemAt(0);
if (DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SYSTEMUI,
CLIPBOARD_OVERLAY_SHOW_ACTIONS, false)) {
if (item.getTextLinks() != null) { if (item.getTextLinks() != null) {
AsyncTask.execute(() -> classifyText(clipData.getItemAt(0), clipSource)); AsyncTask.execute(() -> classifyText(clipData.getItemAt(0), clipSource));
} }
}
if (isSensitive) { if (isSensitive) {
showEditableText( showEditableText(
mContext.getResources().getString(R.string.clipboard_text_hidden), true); mContext.getResources().getString(R.string.clipboard_text_hidden), true);
@@ -373,16 +379,20 @@ public class ClipboardOverlayController {
} }
mView.post(() -> { mView.post(() -> {
resetActionChips(); resetActionChips();
if (actions.size() > 0) {
mActionContainerBackground.setVisibility(View.VISIBLE);
for (RemoteAction action : actions) { for (RemoteAction action : actions) {
Intent targetIntent = action.getActionIntent().getIntent(); Intent targetIntent = action.getActionIntent().getIntent();
ComponentName component = targetIntent.getComponent(); ComponentName component = targetIntent.getComponent();
if (component != null && !TextUtils.equals(source, component.getPackageName())) { if (component != null && !TextUtils.equals(source,
component.getPackageName())) {
OverlayActionChip chip = constructActionChip(action); OverlayActionChip chip = constructActionChip(action);
mActionContainer.addView(chip); mActionContainer.addView(chip);
mActionChips.add(chip); mActionChips.add(chip);
break; // only show at most one action chip break; // only show at most one action chip
} }
} }
}
}); });
} }
@@ -478,13 +488,16 @@ public class ClipboardOverlayController {
private void showEditableText(CharSequence text, boolean hidden) { private void showEditableText(CharSequence text, boolean hidden) {
TextView textView = hidden ? mHiddenTextPreview : mTextPreview; TextView textView = hidden ? mHiddenTextPreview : mTextPreview;
showTextPreview(text, textView); showTextPreview(text, textView);
View.OnClickListener listener = v -> editText();
if (DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SYSTEMUI,
CLIPBOARD_OVERLAY_SHOW_EDIT_BUTTON, false)) {
mEditChip.setVisibility(View.VISIBLE); mEditChip.setVisibility(View.VISIBLE);
mActionContainerBackground.setVisibility(View.VISIBLE); mActionContainerBackground.setVisibility(View.VISIBLE);
mEditChip.setAlpha(1f); mEditChip.setAlpha(1f);
mEditChip.setContentDescription( mEditChip.setContentDescription(
mContext.getString(R.string.clipboard_edit_text_description)); mContext.getString(R.string.clipboard_edit_text_description));
View.OnClickListener listener = v -> editText();
mEditChip.setOnClickListener(listener); mEditChip.setOnClickListener(listener);
}
textView.setOnClickListener(listener); textView.setOnClickListener(listener);
} }
@@ -519,7 +532,8 @@ public class ClipboardOverlayController {
mContext.getResources().getString(R.string.clipboard_overlay_text_copied), mContext.getResources().getString(R.string.clipboard_overlay_text_copied),
mTextPreview); mTextPreview);
} }
if (isEditableImage) { if (isEditableImage && DeviceConfig.getBoolean(
DeviceConfig.NAMESPACE_SYSTEMUI, CLIPBOARD_OVERLAY_SHOW_EDIT_BUTTON, false)) {
mEditChip.setVisibility(View.VISIBLE); mEditChip.setVisibility(View.VISIBLE);
mEditChip.setAlpha(1f); mEditChip.setAlpha(1f);
mActionContainerBackground.setVisibility(View.VISIBLE); mActionContainerBackground.setVisibility(View.VISIBLE);

View File

@@ -681,8 +681,10 @@ public class ScreenshotView extends FrameLayout implements
}); });
chips.add(mShareChip); chips.add(mShareChip);
mEditChip.setContentDescription(mContext.getString(R.string.screenshot_edit_description)); mEditChip.setContentDescription(
mEditChip.setIcon(Icon.createWithResource(mContext, R.drawable.ic_screenshot_edit), true); mContext.getString(R.string.screenshot_edit_description));
mEditChip.setIcon(Icon.createWithResource(mContext, R.drawable.ic_screenshot_edit),
true);
mEditChip.setOnClickListener(v -> { mEditChip.setOnClickListener(v -> {
mEditChip.setIsPending(true); mEditChip.setIsPending(true);
mShareChip.setIsPending(false); mShareChip.setIsPending(false);