Dantotsu/app/src/main/java/ani/dantotsu/media/novel/UrlAdapter.kt
Finnley Somdahl afa960c808 reformat
2023-12-01 01:22:15 -06:00

67 lines
No EOL
2.1 KiB
Kotlin

package ani.dantotsu.media.novel
import android.annotation.SuppressLint
import android.view.HapticFeedbackConstants
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import ani.dantotsu.FileUrl
import ani.dantotsu.copyToClipboard
import ani.dantotsu.databinding.ItemUrlBinding
import ani.dantotsu.parsers.Book
import ani.dantotsu.setSafeOnClickListener
import ani.dantotsu.tryWith
class UrlAdapter(
private val urls: List<FileUrl>,
val book: Book,
val novel: String,
val callback: BookDialog.Callback?
) :
RecyclerView.Adapter<UrlAdapter.UrlViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UrlViewHolder {
return UrlViewHolder(
ItemUrlBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false
)
)
}
@SuppressLint("SetTextI18n")
override fun onBindViewHolder(holder: UrlViewHolder, position: Int) {
val binding = holder.binding
val url = urls[position]
binding.urlQuality.text = url.url
binding.urlQuality.maxLines = 4
binding.urlDownload.visibility = View.VISIBLE
}
override fun getItemCount(): Int = urls.size
inner class UrlViewHolder(val binding: ItemUrlBinding) : RecyclerView.ViewHolder(binding.root) {
init {
itemView.setSafeOnClickListener {
tryWith(true) {
binding.urlDownload.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)
callback?.onDownloadTriggered(book.links[bindingAdapterPosition].url)
/*download(
itemView.context,
book,
bindingAdapterPosition,
novel
)*/
}
}
itemView.setOnLongClickListener {
val file = urls[bindingAdapterPosition]
copyToClipboard(file.url, true)
true
}
}
}
}