diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChapterHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChapterHolder.kt index da3c28696b..c576cb4371 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChapterHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChapterHolder.kt @@ -47,10 +47,7 @@ class ChapterHolder( localSource = manga.source == LocalSource.ID download_button.visibleIf(!localSource && !isLocked) - val chapterColor = ChapterUtil.chapterColor(itemView.context, item, isLocked) - - // Set correct text color - chapter_title.setTextColor(chapterColor) + ChapterUtil.setTextViewForChapter(chapter_title, item, hideStatus = isLocked) val statuses = mutableListOf() @@ -83,7 +80,9 @@ class ChapterHolder( ) } // this will color the scanlator the same bookmarks - chapter_scanlator.setTextColor(chapterColor) + ChapterUtil.setTextViewForChapter( + chapter_scanlator, item, showBookmark = false, hideStatus = isLocked + ) chapter_scanlator.text = statuses.joinToString(" • ") val status = when { @@ -94,8 +93,7 @@ class ChapterHolder( notifyStatus(status, item.isLocked, item.progress) resetFrontView() if (adapterPosition == 1) { - if (!adapter.hasShownSwipeTut.get()) - showSlideAnimation() + if (!adapter.hasShownSwipeTut.get()) showSlideAnimation() } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderChapterItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderChapterItem.kt index 15d0294bd2..5b7421b971 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderChapterItem.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderChapterItem.kt @@ -16,8 +16,8 @@ import java.text.DecimalFormat import java.text.DecimalFormatSymbols class ReaderChapterItem(val chapter: Chapter, val manga: Manga, val isCurrent: Boolean) : - AbstractItem - () { + AbstractItem(), + Chapter by chapter { val decimalFormat = DecimalFormat("#.###", DecimalFormatSymbols().apply { decimalSeparator = '.' }) @@ -28,9 +28,7 @@ class ReaderChapterItem(val chapter: Chapter, val manga: Manga, val isCurrent: B /** defines the layout which will be used for this item in the list */ override val layoutRes: Int = R.layout.reader_chapter_item - override var identifier: Long - get() = chapter.id!! - set(value) {} + override var identifier: Long = chapter.id!! override fun getViewHolder(v: View): ViewHolder { return ViewHolder(v) @@ -43,23 +41,22 @@ class ReaderChapterItem(val chapter: Chapter, val manga: Manga, val isCurrent: B private var bookmarkImage: ImageView = view.findViewById(R.id.bookmark_image) override fun bindView(item: ReaderChapterItem, payloads: List) { - val chapter = item.chapter val manga = item.manga val chapterColor = ChapterUtil.chapterColor(itemView.context, item.chapter) - chapterTitle.setTextColor(chapterColor) + ChapterUtil.setTextViewForChapter(chapterTitle, item) chapterTitle.text = when (manga.displayMode) { Manga.DISPLAY_NUMBER -> { - val number = item.decimalFormat.format(chapter.chapter_number.toDouble()) + val number = item.decimalFormat.format(item.chapter_number.toDouble()) itemView.context.getString(R.string.chapter_, number) } - else -> chapter.name + else -> item.name } val statuses = mutableListOf() - ChapterUtil.relativeDate(chapter)?.let { statuses.add(it) } - chapter.scanlator?.isNotBlank()?.let { statuses.add(chapter.scanlator!!) } + ChapterUtil.relativeDate(item)?.let { statuses.add(it) } + item.scanlator?.isNotBlank()?.let { statuses.add(item.scanlator!!) } if (item.isCurrent) { chapterTitle.setTypeface(null, Typeface.BOLD_ITALIC) @@ -73,11 +70,11 @@ class ReaderChapterItem(val chapter: Chapter, val manga: Manga, val isCurrent: B chapterSubtitle.setTextColor(chapterColor) bookmarkImage.setImageResource( - if (chapter.bookmark) R.drawable.ic_bookmark_24dp + if (item.bookmark) R.drawable.ic_bookmark_24dp else R.drawable.ic_bookmark_border_24dp ) - val drawableColor = ChapterUtil.bookmarkColor(itemView.context, chapter) + val drawableColor = ChapterUtil.bookmarkColor(itemView.context, item) DrawableCompat.setTint(bookmarkImage.drawable, drawableColor) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt index 97d6d552f5..620c807767 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt @@ -38,7 +38,7 @@ class RecentMangaHolder( title.apply { text = item.chapter.name - setTextColor(ChapterUtil.chapterColor(context, item)) + ChapterUtil.setTextViewForChapter(this, item) } subtitle.apply { text = item.mch.manga.title diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterUtil.kt b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterUtil.kt index 56a568f307..8397aba3f9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterUtil.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterUtil.kt @@ -1,10 +1,15 @@ package eu.kanade.tachiyomi.util.chapter import android.content.Context +import android.content.res.ColorStateList +import android.widget.TextView import androidx.core.graphics.ColorUtils +import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.util.system.contextCompatColor +import eu.kanade.tachiyomi.util.system.dpToPx +import eu.kanade.tachiyomi.util.system.dpToPxEnd import eu.kanade.tachiyomi.util.system.timeSpanFromNow class ChapterUtil { @@ -17,11 +22,43 @@ class ChapterUtil { } } + fun setTextViewForChapter( + textView: TextView, + chapter: Chapter, + showBookmark: Boolean = true, + hideStatus: Boolean = false + ) { + val context = textView.context + textView.setTextColor(chapterColor(context, chapter, hideStatus)) + if (!hideStatus && showBookmark) { + setBookmark(textView, chapter) + } + } + + fun setBookmark(textView: TextView, chapter: Chapter) { + if (chapter.bookmark) { + val context = textView.context + val drawable = VectorDrawableCompat.create( + textView.resources, R.drawable.ic_bookmark_24dp, context.theme + ) + drawable?.setBounds(0, 0, textView.textSize.toInt(), textView.textSize.toInt()) + textView.setCompoundDrawablesRelative( + drawable, null, null, null + ) + textView.compoundDrawableTintList = ColorStateList.valueOf( + bookmarkedColor(context) + ) + textView.compoundDrawablePadding = 3.dpToPx + textView.translationX = (-2f).dpToPxEnd + } else { + textView.setCompoundDrawablesRelative(null, null, null, null) + textView.translationX = 0f + } + } + fun chapterColor(context: Context, chapter: Chapter, hideStatus: Boolean = false): Int { return when { hideStatus -> unreadColor(context) - chapter.bookmark && chapter.read -> bookmarkedAndReadColor(context) - chapter.bookmark -> bookmarkedColor(context) chapter.read -> readColor(context) else -> unreadColor(context) }