Replace Kotlin synthetic views in viewholders

This commit is contained in:
arkon
2020-11-28 15:24:40 -05:00
parent 322d66d282
commit 749c2071af
25 changed files with 227 additions and 263 deletions
@@ -2,18 +2,13 @@ package eu.kanade.tachiyomi.ui.recent.history
import android.view.View
import com.bumptech.glide.load.engine.DiskCacheStrategy
import eu.davidea.viewholders.FlexibleViewHolder
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.MangaChapterHistory
import eu.kanade.tachiyomi.data.glide.GlideApp
import eu.kanade.tachiyomi.data.glide.toMangaThumbnail
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
import eu.kanade.tachiyomi.databinding.HistoryItemBinding
import eu.kanade.tachiyomi.util.lang.toTimestampString
import kotlinx.android.synthetic.main.history_item.cover
import kotlinx.android.synthetic.main.history_item.holder
import kotlinx.android.synthetic.main.history_item.manga_subtitle
import kotlinx.android.synthetic.main.history_item.manga_title
import kotlinx.android.synthetic.main.history_item.remove
import kotlinx.android.synthetic.main.history_item.resume
import java.util.Date
/**
@@ -28,18 +23,20 @@ import java.util.Date
class HistoryHolder(
view: View,
val adapter: HistoryAdapter
) : BaseFlexibleViewHolder(view, adapter) {
) : FlexibleViewHolder(view, adapter) {
private val binding = HistoryItemBinding.bind(view)
init {
holder.setOnClickListener {
binding.holder.setOnClickListener {
adapter.itemClickListener.onItemClick(bindingAdapterPosition)
}
remove.setOnClickListener {
binding.remove.setOnClickListener {
adapter.removeClickListener.onRemoveClick(bindingAdapterPosition)
}
resume.setOnClickListener {
binding.resume.setOnClickListener {
adapter.resumeClickListener.onResumeClick(bindingAdapterPosition)
}
}
@@ -54,26 +51,26 @@ class HistoryHolder(
val (manga, chapter, history) = item
// Set manga title
manga_title.text = manga.title
binding.mangaTitle.text = manga.title
// Set chapter number + timestamp
if (chapter.chapter_number > -1f) {
val formattedNumber = adapter.decimalFormat.format(chapter.chapter_number.toDouble())
manga_subtitle.text = itemView.context.getString(
binding.mangaSubtitle.text = itemView.context.getString(
R.string.recent_manga_time,
formattedNumber,
Date(history.last_read).toTimestampString()
)
} else {
manga_subtitle.text = Date(history.last_read).toTimestampString()
binding.mangaSubtitle.text = Date(history.last_read).toTimestampString()
}
// Set cover
GlideApp.with(itemView.context).clear(cover)
GlideApp.with(itemView.context).clear(binding.cover)
GlideApp.with(itemView.context)
.load(manga.toMangaThumbnail())
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.centerCrop()
.into(cover)
.into(binding.cover)
}
}
@@ -5,16 +5,13 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.resource.bitmap.CenterCrop
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.bumptech.glide.request.RequestOptions
import eu.davidea.viewholders.FlexibleViewHolder
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.download.model.Download
import eu.kanade.tachiyomi.data.glide.GlideApp
import eu.kanade.tachiyomi.data.glide.toMangaThumbnail
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
import eu.kanade.tachiyomi.databinding.UpdatesItemBinding
import eu.kanade.tachiyomi.util.system.getResourceColor
import kotlinx.android.synthetic.main.updates_item.chapter_title
import kotlinx.android.synthetic.main.updates_item.download_text
import kotlinx.android.synthetic.main.updates_item.manga_cover
import kotlinx.android.synthetic.main.updates_item.manga_title
/**
* Holder that contains chapter item
@@ -27,7 +24,9 @@ import kotlinx.android.synthetic.main.updates_item.manga_title
* @constructor creates a new recent chapter holder.
*/
class UpdatesHolder(private val view: View, private val adapter: UpdatesAdapter) :
BaseFlexibleViewHolder(view, adapter) {
FlexibleViewHolder(view, adapter) {
private val binding = UpdatesItemBinding.bind(view)
private var readColor = view.context.getResourceColor(R.attr.colorOnSurface, 0.38f)
private var unreadColor = view.context.getResourceColor(R.attr.colorOnSurface)
@@ -38,7 +37,7 @@ class UpdatesHolder(private val view: View, private val adapter: UpdatesAdapter)
private var item: UpdatesItem? = null
init {
manga_cover.setOnClickListener {
binding.mangaCover.setOnClickListener {
adapter.coverClickListener.onCoverClick(bindingAdapterPosition)
}
}
@@ -52,25 +51,25 @@ class UpdatesHolder(private val view: View, private val adapter: UpdatesAdapter)
this.item = item
// Set chapter title
chapter_title.text = item.chapter.name
binding.chapterTitle.text = item.chapter.name
// Set manga title
manga_title.text = item.manga.title
binding.mangaTitle.text = item.manga.title
// Check if chapter is read and set correct color
if (item.chapter.read) {
chapter_title.setTextColor(readColor)
manga_title.setTextColor(readColor)
binding.chapterTitle.setTextColor(readColor)
binding.mangaTitle.setTextColor(readColor)
} else {
chapter_title.setTextColor(unreadColor)
manga_title.setTextColor(unreadColor)
binding.chapterTitle.setTextColor(unreadColor)
binding.mangaTitle.setTextColor(unreadColor)
}
// Set chapter status
notifyStatus(item.status)
// Set cover
GlideApp.with(itemView.context).clear(manga_cover)
GlideApp.with(itemView.context).clear(binding.mangaCover)
val radius = itemView.context.resources.getDimensionPixelSize(R.dimen.card_radius)
val requestOptions = RequestOptions().transform(CenterCrop(), RoundedCorners(radius))
@@ -79,7 +78,7 @@ class UpdatesHolder(private val view: View, private val adapter: UpdatesAdapter)
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.apply(requestOptions)
.dontAnimate()
.into(manga_cover)
.into(binding.mangaCover)
}
/**
@@ -87,7 +86,7 @@ class UpdatesHolder(private val view: View, private val adapter: UpdatesAdapter)
*
* @param status download status
*/
fun notifyStatus(status: Int) = with(download_text) {
fun notifyStatus(status: Int) = with(binding.downloadText) {
when (status) {
Download.QUEUE -> setText(R.string.chapter_queued)
Download.DOWNLOADING -> setText(R.string.chapter_downloading)