diff --git a/app/src/main/java/com/hippo/ehviewer/preference/AccountPreference.kt b/app/src/main/java/com/hippo/ehviewer/preference/AccountPreference.kt index 5c241baa4..0cef15d91 100644 --- a/app/src/main/java/com/hippo/ehviewer/preference/AccountPreference.kt +++ b/app/src/main/java/com/hippo/ehviewer/preference/AccountPreference.kt @@ -81,9 +81,7 @@ class AccountPreference @JvmOverloads constructor( super.onPrepareDialogBuilder(builder) if (message != null) { builder.setNeutralButton(R.string.settings_eh_identity_cookies_copy) { dialog: DialogInterface?, which: Int -> - context.getClipboardManager().addTextToClipboard(message, true) { - mActivity.showTip(R.string.copied_to_clipboard, BaseScene.LENGTH_SHORT) - } + context.getClipboardManager().addTextToClipboard(message, true, mActivity) this@AccountPreference.onClick(dialog, which) } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/GalleryInfoBottomSheet.kt b/app/src/main/java/com/hippo/ehviewer/ui/GalleryInfoBottomSheet.kt index c8dce3be6..bd32bdede 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/GalleryInfoBottomSheet.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/GalleryInfoBottomSheet.kt @@ -30,7 +30,6 @@ import com.hippo.ehviewer.UrlOpener import com.hippo.ehviewer.client.EhUrl import com.hippo.ehviewer.client.EhUtils import com.hippo.ehviewer.client.data.GalleryDetail -import com.hippo.ehviewer.ui.scene.BaseScene.LENGTH_SHORT import com.hippo.util.addTextToClipboard import com.hippo.util.getClipboardManager @@ -127,13 +126,9 @@ class GalleryInfoBottomSheet(detail: GalleryDetail) : BottomSheetDialogFragment( } else { requireContext().getClipboardManager().addTextToClipboard( mValues[position], - false - ) { - (requireActivity() as MainActivity).showTip( - R.string.copied_to_clipboard, - LENGTH_SHORT - ) - } + false, + activity + ) if (position == INDEX_URL) { // Save it to avoid detect the gallery Settings.putClipboardTextHashCode(mValues[position].hashCode()) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java index 5e8592d34..b7ef3476f 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java @@ -256,7 +256,7 @@ public final class MainActivity extends StageActivity String url = intent.getData().toString(); new EditTextDialogBuilder(this, url, "") .setTitle(R.string.error_cannot_parse_the_url) - .setPositiveButton(android.R.string.copy, (dialog, which) -> ClipboardUtilKt.addTextToClipboard(ClipboardUtilKt.getClipboardManager(this), url, false, () -> null)) + .setPositiveButton(android.R.string.copy, (dialog, which) -> ClipboardUtilKt.addTextToClipboard(ClipboardUtilKt.getClipboardManager(this), url, false, this)) .show(); } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java index 58ddb8251..066e17dd9 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java @@ -108,12 +108,11 @@ public abstract class BaseScene extends SceneFragment { } } - public Unit showTip(@StringRes int id, int length) { + public void showTip(@StringRes int id, int length) { FragmentActivity activity = getActivity(); if (activity instanceof MainActivity) { ((MainActivity) activity).showTip(id, length); } - return null; } public boolean needShowLeftDrawer() { diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java index 1a6f26d31..4fe40df5a 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java @@ -354,7 +354,7 @@ public final class GalleryCommentsScene extends ToolbarScene } int id = menuId.get(which); if (id == R.id.copy) { - ClipboardUtilKt.addTextToClipboard(ClipboardUtilKt.getClipboardManager(getContext()), comment.comment, false, () -> showTip(R.string.copied_to_clipboard, LENGTH_SHORT)); + ClipboardUtilKt.addTextToClipboard(ClipboardUtilKt.getClipboardManager(getContext()), comment.comment, false, getActivity()); } else if (id == R.id.vote_up) { voteComment(comment.id, 1); } else if (id == R.id.vote_down) { diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java index de9251141..ba30a9ad9 100755 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java @@ -1453,9 +1453,9 @@ public class GalleryDetailScene extends ToolbarScene implements View.OnClickList } else if (id == R.id.add_filter) { showFilterTagDialog(tag); } else if (id == R.id.copy) { - ClipboardUtilKt.addTextToClipboard(ClipboardUtilKt.getClipboardManager(getContext()), tag, false, () -> showTip(R.string.copied_to_clipboard, LENGTH_SHORT)); + ClipboardUtilKt.addTextToClipboard(ClipboardUtilKt.getClipboardManager(getContext()), tag, false, getActivity()); } else if (id == R.id.copy_trans) { - ClipboardUtilKt.addTextToClipboard(ClipboardUtilKt.getClipboardManager(getContext()), tv.getText().toString(), false, () -> showTip(R.string.copied_to_clipboard, LENGTH_SHORT)); + ClipboardUtilKt.addTextToClipboard(ClipboardUtilKt.getClipboardManager(getContext()), tv.getText().toString(), false, getActivity()); } }).show(); } diff --git a/app/src/main/java/com/hippo/util/ClipboardUtil.kt b/app/src/main/java/com/hippo/util/ClipboardUtil.kt index a9b5a51fa..59c74babe 100644 --- a/app/src/main/java/com/hippo/util/ClipboardUtil.kt +++ b/app/src/main/java/com/hippo/util/ClipboardUtil.kt @@ -17,6 +17,7 @@ */ package com.hippo.util +import android.app.Activity import android.content.ClipData import android.content.ClipDescription import android.content.ClipboardManager @@ -25,20 +26,30 @@ import android.os.Build import android.os.PersistableBundle import android.text.TextUtils import android.view.textclassifier.TextClassifier +import com.hippo.ehviewer.R +import com.hippo.ehviewer.ui.MainActivity +import com.hippo.ehviewer.ui.SettingsActivity +import com.hippo.ehviewer.ui.scene.BaseScene fun Context.getClipboardManager(): ClipboardManager { return getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager } -fun ClipboardManager.addTextToClipboard(text: String?, isSensitive: Boolean, showTip: () -> Unit) { +fun ClipboardManager.addTextToClipboard(text: String?, isSensitive: Boolean, activity: Activity?) { setPrimaryClip(ClipData.newPlainText(null, text).apply { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && isSensitive) description.extras = PersistableBundle().apply { putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, true) } }) + + // Avoid double notify user since system have done that on Tiramisu above if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) - showTip() + if (activity is MainActivity) { + activity.showTip(R.string.copied_to_clipboard, BaseScene.LENGTH_SHORT) + } else if (activity is SettingsActivity) { + activity.showTip(R.string.copied_to_clipboard, BaseScene.LENGTH_SHORT) + } } fun ClipboardManager.getTextFromClipboard(context: Context): String? {