From b2159ed87f5a45f658302bf11485f28031dba233 Mon Sep 17 00:00:00 2001
From: yuvraj-coder1 <142040957+yuvraj-coder1@users.noreply.github.com>
Date: Tue, 7 Jan 2025 02:42:24 +0530
Subject: [PATCH] feat: Long-pressing a row in "Uploads" copies the caption to
clipboard, and displays a snack saying "Caption copied to clipboard" (#6105)
* feat: Long-pressing a row in "Uploads" copies the caption to clipboard, and displays a snack saying "Caption copied to clipboard
* refactor: using string resources for the text instead of hard coded values
---
.../commons/upload/FailedUploadsAdapter.kt | 22 +++++++++++++++++++
.../commons/upload/PendingUploadsAdapter.kt | 20 +++++++++++++++++
app/src/main/res/values/strings.xml | 2 ++
3 files changed, 44 insertions(+)
diff --git a/app/src/main/java/fr/free/nrw/commons/upload/FailedUploadsAdapter.kt b/app/src/main/java/fr/free/nrw/commons/upload/FailedUploadsAdapter.kt
index fc57ffe41..5b3eb5140 100644
--- a/app/src/main/java/fr/free/nrw/commons/upload/FailedUploadsAdapter.kt
+++ b/app/src/main/java/fr/free/nrw/commons/upload/FailedUploadsAdapter.kt
@@ -1,5 +1,8 @@
package fr.free.nrw.commons.upload
+import android.content.ClipData
+import android.content.ClipboardManager
+import android.content.Context.CLIPBOARD_SERVICE
import android.net.Uri
import android.text.TextUtils
import android.view.LayoutInflater
@@ -13,6 +16,7 @@ import androidx.paging.PagedListAdapter
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
import com.facebook.imagepipeline.request.ImageRequest
+import com.google.android.material.snackbar.Snackbar
import fr.free.nrw.commons.R
import fr.free.nrw.commons.contributions.Contribution
import java.io.File
@@ -51,6 +55,24 @@ class FailedUploadsAdapter(
position: Int,
) {
val item: Contribution? = getItem(position)
+ val itemView = holder.itemView
+ val clipboardManager =
+ itemView.context.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
+
+ itemView.setOnLongClickListener {
+ val clip = ClipData.newPlainText(
+ itemView.context.getString(R.string.caption),
+ item?.media?.displayTitle
+ )
+ clipboardManager.setPrimaryClip(clip)
+ Snackbar.make(
+ itemView,
+ itemView.context.getString(R.string.caption_copied_to_clipboard),
+ Snackbar.LENGTH_SHORT
+ ).show()
+ true
+ }
+
if (item != null) {
holder.titleTextView.setText(item.media.displayTitle)
}
diff --git a/app/src/main/java/fr/free/nrw/commons/upload/PendingUploadsAdapter.kt b/app/src/main/java/fr/free/nrw/commons/upload/PendingUploadsAdapter.kt
index 8edfcb472..7f0b8aba1 100644
--- a/app/src/main/java/fr/free/nrw/commons/upload/PendingUploadsAdapter.kt
+++ b/app/src/main/java/fr/free/nrw/commons/upload/PendingUploadsAdapter.kt
@@ -1,5 +1,8 @@
package fr.free.nrw.commons.upload
+import android.content.ClipData
+import android.content.ClipboardManager
+import android.content.Context.CLIPBOARD_SERVICE
import android.net.Uri
import android.text.TextUtils
import android.view.LayoutInflater
@@ -13,6 +16,7 @@ import androidx.paging.PagedListAdapter
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
import com.facebook.imagepipeline.request.ImageRequest
+import com.google.android.material.snackbar.Snackbar
import fr.free.nrw.commons.R
import fr.free.nrw.commons.contributions.Contribution
import java.io.File
@@ -99,6 +103,22 @@ class PendingUploadsAdapter(
fun bind(contribution: Contribution) {
titleTextView.text = contribution.media.displayTitle
+ val clipboardManager =
+ itemView.context.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
+
+ itemView.setOnLongClickListener {
+ val clip = ClipData.newPlainText(
+ itemView.context.getString(R.string.caption),
+ titleTextView.text
+ )
+ clipboardManager.setPrimaryClip(clip)
+ Snackbar.make(
+ itemView,
+ itemView.context.getString(R.string.caption_copied_to_clipboard),
+ Snackbar.LENGTH_SHORT
+ ).show()
+ true
+ }
val imageSource: String = contribution.localUri.toString()
var imageRequest: ImageRequest? = null
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 843ab6545..7f5cbf814 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -860,5 +860,7 @@ Upload your first media by tapping on the add button.
Other wikis
•
File usages
+ Caption
+ Caption copied to clipboard