From 9d4d67fdaa756a2525557f77bc8a2d7d32806c70 Mon Sep 17 00:00:00 2001 From: Paul Hawke Date: Wed, 2 Jul 2025 16:16:17 -0500 Subject: [PATCH] Moved clipboard copy into its own utility class --- .../contributions/ContributionsListFragment.kt | 4 ++-- .../nrw/commons/media/MediaDetailFragment.kt | 3 ++- .../media/MediaDetailPagerFragment.java | 4 ++-- .../nearby/fragments/NearbyParentFragment.kt | 4 ++-- .../free/nrw/commons/utils/ClipboardUtils.java | 18 ++++++++++++++++++ .../java/fr/free/nrw/commons/utils/Utils.java | 12 ------------ 6 files changed, 26 insertions(+), 19 deletions(-) create mode 100644 app/src/main/java/fr/free/nrw/commons/utils/ClipboardUtils.java diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.kt b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.kt index f42cf37d8..aa872d1e3 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.kt @@ -29,7 +29,6 @@ import androidx.recyclerview.widget.SimpleItemAnimator import fr.free.nrw.commons.Media import fr.free.nrw.commons.MediaDataExtractor import fr.free.nrw.commons.R -import fr.free.nrw.commons.utils.Utils import fr.free.nrw.commons.auth.SessionManager import fr.free.nrw.commons.contributions.WikipediaInstructionsDialogFragment.Companion.newInstance import fr.free.nrw.commons.databinding.FragmentContributionsListBinding @@ -38,6 +37,7 @@ import fr.free.nrw.commons.di.NetworkingModule import fr.free.nrw.commons.filepicker.FilePicker import fr.free.nrw.commons.media.MediaClient import fr.free.nrw.commons.profile.ProfileActivity +import fr.free.nrw.commons.utils.ClipboardUtils import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog import fr.free.nrw.commons.utils.SystemThemeUtils import fr.free.nrw.commons.utils.UrlUtils @@ -529,7 +529,7 @@ class ContributionsListFragment : CommonsDaggerSupportFragment(), ContributionsL override fun onConfirmClicked(contribution: Contribution?, copyWikicode: Boolean) { if (copyWikicode) { val wikicode = contribution!!.media.wikiCode - Utils.copy("wikicode", wikicode, context) + ClipboardUtils.copy("wikicode", wikicode, context) } val url = diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.kt b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.kt index 8203388cb..883817017 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.kt @@ -110,6 +110,7 @@ import fr.free.nrw.commons.upload.UploadMediaDetail import fr.free.nrw.commons.upload.categories.UploadCategoriesFragment import fr.free.nrw.commons.upload.depicts.DepictsFragment import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment +import fr.free.nrw.commons.utils.ClipboardUtils import fr.free.nrw.commons.utils.DateUtil.getDateStringWithSkeletonPattern import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog import fr.free.nrw.commons.utils.GeoCoordinates @@ -926,7 +927,7 @@ class MediaDetailFragment : CommonsDaggerSupportFragment(), CategoryEditHelper.C private fun onCopyWikicodeClicked() { val data: String = "[[" + media!!.filename + "|thumb|" + media!!.fallbackDescription + "]]" - Utils.copy("wikiCode", data, context) + ClipboardUtils.copy("wikiCode", data, context) Timber.d("Generated wikidata copy code: %s", data) Toast.makeText(context, getString(R.string.wikicode_copied), Toast.LENGTH_SHORT) diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java index 45e1cd9cb..cb43657e8 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java @@ -31,7 +31,7 @@ import com.google.android.material.snackbar.Snackbar; import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; -import fr.free.nrw.commons.utils.Utils; +import fr.free.nrw.commons.utils.ClipboardUtils; import fr.free.nrw.commons.auth.SessionManager; import fr.free.nrw.commons.bookmarks.models.Bookmark; import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesContentProvider; @@ -216,7 +216,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple return true; case R.id.menu_copy_link: String uri = m.getPageTitle().getCanonicalUri(); - Utils.copy("shareLink", uri, requireContext()); + ClipboardUtils.copy("shareLink", uri, requireContext()); Timber.d("Copied share link to clipboard: %s", uri); Toast.makeText(requireContext(), getString(R.string.menu_link_copied), Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt index ccd5f5763..32aab45db 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt @@ -58,7 +58,6 @@ import fr.free.nrw.commons.CommonsApplication import fr.free.nrw.commons.MapController.NearbyPlacesInfo import fr.free.nrw.commons.Media import fr.free.nrw.commons.R -import fr.free.nrw.commons.utils.Utils import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsDao import fr.free.nrw.commons.contributions.ContributionController import fr.free.nrw.commons.contributions.MainActivity @@ -92,6 +91,7 @@ import fr.free.nrw.commons.nearby.contract.NearbyParentFragmentContract import fr.free.nrw.commons.nearby.model.BottomSheetItem import fr.free.nrw.commons.nearby.presenter.NearbyParentFragmentPresenter import fr.free.nrw.commons.upload.FileUtils +import fr.free.nrw.commons.utils.ClipboardUtils import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog import fr.free.nrw.commons.utils.ExecutorUtils.get import fr.free.nrw.commons.utils.GeoCoordinates @@ -1017,7 +1017,7 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), */ private fun addActionToTitle() { binding!!.bottomSheetDetails.title.setOnLongClickListener { view -> - Utils.copy( + ClipboardUtils.copy( "place", binding!!.bottomSheetDetails.title.text.toString(), context ) diff --git a/app/src/main/java/fr/free/nrw/commons/utils/ClipboardUtils.java b/app/src/main/java/fr/free/nrw/commons/utils/ClipboardUtils.java new file mode 100644 index 000000000..d79842483 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/utils/ClipboardUtils.java @@ -0,0 +1,18 @@ +package fr.free.nrw.commons.utils; + +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; + +public final class ClipboardUtils { + + /* + *Copies the content to the clipboard + * + */ + public static void copy(String label,String text, Context context){ + ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText(label, text); + clipboard.setPrimaryClip(clip); + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/utils/Utils.java b/app/src/main/java/fr/free/nrw/commons/utils/Utils.java index 179686592..e12e44c41 100644 --- a/app/src/main/java/fr/free/nrw/commons/utils/Utils.java +++ b/app/src/main/java/fr/free/nrw/commons/utils/Utils.java @@ -1,7 +1,5 @@ package fr.free.nrw.commons.utils; -import android.content.ClipData; -import android.content.ClipboardManager; import android.content.Context; import android.text.SpannableString; import android.text.style.UnderlineSpan; @@ -9,16 +7,6 @@ import android.widget.TextView; public class Utils { - /* - *Copies the content to the clipboard - * - */ - public static void copy(String label,String text, Context context){ - ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); - ClipData clip = ClipData.newPlainText(label, text); - clipboard.setPrimaryClip(clip); - } - /** * This method sets underlined string text to a TextView *