From 9cb181d53eeacd79667b6dcf9de3684cf341c197 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sun, 29 Mar 2020 21:04:09 +0300 Subject: [PATCH] Show new chapters on details --- .../kotatsu/ui/details/ChaptersAdapter.kt | 15 +++++++++++++-- .../kotatsu/ui/details/ChaptersFragment.kt | 16 ++++++++++++++++ .../kotatsu/ui/details/MangaDetailsActivity.kt | 11 +++++++++++ .../kotatsu/ui/details/MangaDetailsFragment.kt | 2 ++ .../kotatsu/ui/details/MangaDetailsPresenter.kt | 4 ++++ .../kotatsu/ui/details/MangaDetailsView.kt | 5 +++-- 6 files changed, 49 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/details/ChaptersAdapter.kt b/app/src/main/java/org/koitharu/kotatsu/ui/details/ChaptersAdapter.kt index 92e8a9e51..cc9ce1800 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/details/ChaptersAdapter.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/details/ChaptersAdapter.kt @@ -16,6 +16,13 @@ class ChaptersAdapter(onItemClickListener: OnRecyclerItemClickListener ChapterExtra.UNREAD + currentChapterPosition == RecyclerView.NO_POSITION + || currentChapterPosition < position -> if (position >= itemCount - newChaptersCount) { + ChapterExtra.NEW + } else { + ChapterExtra.UNREAD + } currentChapterPosition == position -> ChapterExtra.CURRENT - currentChapterPosition < position -> ChapterExtra.UNREAD currentChapterPosition > position -> ChapterExtra.READ else -> ChapterExtra.UNREAD } diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/details/ChaptersFragment.kt b/app/src/main/java/org/koitharu/kotatsu/ui/details/ChaptersFragment.kt index c6d10d354..84585a070 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/details/ChaptersFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/details/ChaptersFragment.kt @@ -4,6 +4,7 @@ import android.os.Bundle import android.view.View import androidx.core.view.isVisible import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.fragment_chapters.* import moxy.ktx.moxyPresenter @@ -44,6 +45,7 @@ class ChaptersFragment : BaseFragment(R.layout.fragment_chapters), MangaDetailsV override fun onMangaUpdated(manga: Manga) { this.manga = manga adapter.replaceData(manga.chapters.orEmpty()) + scrollToCurrent() } override fun onLoadingStateChanged(isLoading: Boolean) { @@ -56,6 +58,11 @@ class ChaptersFragment : BaseFragment(R.layout.fragment_chapters), MangaDetailsV override fun onHistoryChanged(history: MangaHistory?) { adapter.currentChapterId = history?.chapterId + scrollToCurrent() + } + + override fun onNewChaptersChanged(newChapters: Int) { + adapter.newChaptersCount = newChapters } override fun onFavouriteChanged(categories: List) = Unit @@ -86,4 +93,13 @@ class ChaptersFragment : BaseFragment(R.layout.fragment_chapters), MangaDetailsV } return true } + + private fun scrollToCurrent() { + val pos = (recyclerView_chapters.adapter as? ChaptersAdapter)?.currentChapterPosition + ?: RecyclerView.NO_POSITION + if (pos != RecyclerView.NO_POSITION) { + (recyclerView_chapters.layoutManager as? LinearLayoutManager) + ?.scrollToPositionWithOffset(pos, 100) + } + } } \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/details/MangaDetailsActivity.kt b/app/src/main/java/org/koitharu/kotatsu/ui/details/MangaDetailsActivity.kt index d6565d6cd..a2ba6619a 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/details/MangaDetailsActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/details/MangaDetailsActivity.kt @@ -80,6 +80,17 @@ class MangaDetailsActivity : BaseActivity(), MangaDetailsView { } } + override fun onNewChaptersChanged(newChapters: Int) { + val tab = tabs.getTabAt(1) ?: return + if (newChapters == 0) { + tab.removeBadge() + } else { + val badge = tab.orCreateBadge + badge.number = newChapters + badge.isVisible = true + } + } + override fun onCreateOptionsMenu(menu: Menu?): Boolean { menuInflater.inflate(R.menu.opt_details, menu) return super.onCreateOptionsMenu(menu) diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/details/MangaDetailsFragment.kt b/app/src/main/java/org/koitharu/kotatsu/ui/details/MangaDetailsFragment.kt index 8947328f7..dc99dcd2c 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/details/MangaDetailsFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/details/MangaDetailsFragment.kt @@ -93,6 +93,8 @@ class MangaDetailsFragment : BaseFragment(R.layout.fragment_details), MangaDetai override fun onMangaRemoved(manga: Manga) = Unit //handled in activity + override fun onNewChaptersChanged(newChapters: Int) = Unit + override fun onClick(v: View) { if (v is Chip) { when(val tag = v.tag) { diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/details/MangaDetailsPresenter.kt b/app/src/main/java/org/koitharu/kotatsu/ui/details/MangaDetailsPresenter.kt index 7fa9f912a..46eba2c09 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/details/MangaDetailsPresenter.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/details/MangaDetailsPresenter.kt @@ -17,6 +17,7 @@ import org.koitharu.kotatsu.domain.favourites.FavouritesRepository import org.koitharu.kotatsu.domain.favourites.OnFavouritesChangeListener import org.koitharu.kotatsu.domain.history.HistoryRepository import org.koitharu.kotatsu.domain.history.OnHistoryChangeListener +import org.koitharu.kotatsu.domain.tracking.TrackingRepository import org.koitharu.kotatsu.ui.common.BasePresenter import org.koitharu.kotatsu.utils.ext.safe import java.io.IOException @@ -28,12 +29,14 @@ class MangaDetailsPresenter private constructor() : BasePresenter