mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +01:00
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
This commit is contained in:
parent
ecb19d6984
commit
b2159ed87f
3 changed files with 44 additions and 0 deletions
|
|
@ -1,5 +1,8 @@
|
||||||
package fr.free.nrw.commons.upload
|
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.net.Uri
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
|
@ -13,6 +16,7 @@ import androidx.paging.PagedListAdapter
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.facebook.imagepipeline.request.ImageRequest
|
import com.facebook.imagepipeline.request.ImageRequest
|
||||||
|
import com.google.android.material.snackbar.Snackbar
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.contributions.Contribution
|
import fr.free.nrw.commons.contributions.Contribution
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
@ -51,6 +55,24 @@ class FailedUploadsAdapter(
|
||||||
position: Int,
|
position: Int,
|
||||||
) {
|
) {
|
||||||
val item: Contribution? = getItem(position)
|
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) {
|
if (item != null) {
|
||||||
holder.titleTextView.setText(item.media.displayTitle)
|
holder.titleTextView.setText(item.media.displayTitle)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
package fr.free.nrw.commons.upload
|
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.net.Uri
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
|
@ -13,6 +16,7 @@ import androidx.paging.PagedListAdapter
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.facebook.imagepipeline.request.ImageRequest
|
import com.facebook.imagepipeline.request.ImageRequest
|
||||||
|
import com.google.android.material.snackbar.Snackbar
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.contributions.Contribution
|
import fr.free.nrw.commons.contributions.Contribution
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
@ -99,6 +103,22 @@ class PendingUploadsAdapter(
|
||||||
|
|
||||||
fun bind(contribution: Contribution) {
|
fun bind(contribution: Contribution) {
|
||||||
titleTextView.text = contribution.media.displayTitle
|
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()
|
val imageSource: String = contribution.localUri.toString()
|
||||||
var imageRequest: ImageRequest? = null
|
var imageRequest: ImageRequest? = null
|
||||||
|
|
|
||||||
|
|
@ -860,5 +860,7 @@ Upload your first media by tapping on the add button.</string>
|
||||||
<string name="usages_on_other_wikis_heading">Other wikis</string>
|
<string name="usages_on_other_wikis_heading">Other wikis</string>
|
||||||
<string name="bullet_point">•</string>
|
<string name="bullet_point">•</string>
|
||||||
<string name="file_usages_container_heading">File usages</string>
|
<string name="file_usages_container_heading">File usages</string>
|
||||||
|
<string name="caption">Caption</string>
|
||||||
|
<string name="caption_copied_to_clipboard">Caption copied to clipboard</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue