mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
Even more updates to recents
*Fix history chapters showing the same unread chapter twice *When searching, automatically expand all items, with no option to collapse (why would you?) *Hide subtitle in sub chapters in history if the chapter's read date is over a day old (no point showing the same text that would be there already in the main section) set a min height for the sub chapter items * Make sub chapter text slightly bigger if there is no subtitle
This commit is contained in:
parent
597a37f1c2
commit
0485a7f692
5 changed files with 45 additions and 26 deletions
|
@ -28,6 +28,7 @@ class RecentMangaAdapter(val delegate: RecentsInterface) :
|
|||
var uniformCovers = preferences.uniformGrid().get()
|
||||
var showOutline = preferences.outlineOnCovers().get()
|
||||
var sortByFetched = preferences.sortFetchedTime().get()
|
||||
var isSearching = false
|
||||
private var collapseGroupedUpdates = preferences.collapseGroupedUpdates().get()
|
||||
private var collapseGroupedHistory = preferences.collapseGroupedHistory().get()
|
||||
val collapseGrouped: Boolean
|
||||
|
|
|
@ -30,6 +30,9 @@ import eu.kanade.tachiyomi.util.system.dpToPx
|
|||
import eu.kanade.tachiyomi.util.system.timeSpanFromNow
|
||||
import eu.kanade.tachiyomi.util.view.setAnimVectorCompat
|
||||
import eu.kanade.tachiyomi.util.view.setCards
|
||||
import java.util.Calendar
|
||||
import java.util.Date
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
class RecentMangaHolder(
|
||||
view: View,
|
||||
|
@ -214,8 +217,8 @@ class RecentMangaHolder(
|
|||
)
|
||||
}
|
||||
|
||||
binding.showMoreChapters.isVisible = item.mch.extraChapters.isNotEmpty()
|
||||
binding.moreChaptersLayout.isVisible = binding.showMoreChapters.isVisible &&
|
||||
binding.showMoreChapters.isVisible = item.mch.extraChapters.isNotEmpty() && !adapter.isSearching
|
||||
binding.moreChaptersLayout.isVisible = item.mch.extraChapters.isNotEmpty() &&
|
||||
adapter.delegate.areExtraChaptersExpanded(flexibleAdapterPosition)
|
||||
val moreVisible = binding.moreChaptersLayout.isVisible
|
||||
binding.showMoreChapters.setImageResource(
|
||||
|
@ -334,10 +337,19 @@ class RecentMangaHolder(
|
|||
val showDLs = adapter.showDownloads
|
||||
title.text = chapter.preferredChapterName(context, item.mch.manga, adapter.preferences)
|
||||
title.setTextColor(ChapterUtil.readColor(context, chapter))
|
||||
subtitle.isVisible = chapter.dateRead != null
|
||||
subtitle.text = chapter.dateRead?.let { dateRead ->
|
||||
val date = Calendar.getInstance().apply {
|
||||
time = Date()
|
||||
set(Calendar.HOUR_OF_DAY, 0)
|
||||
set(Calendar.MINUTE, 0)
|
||||
set(Calendar.MILLISECOND, 0)
|
||||
set(Calendar.SECOND, 0)
|
||||
}.timeInMillis
|
||||
context.timeSpanFromNow(R.string.read_, dateRead)
|
||||
.takeIf { date - dateRead < TimeUnit.DAYS.toMillis(1) }
|
||||
} ?: ""
|
||||
subtitle.isVisible = subtitle.text.isNotBlank()
|
||||
title.textSize = (if (subtitle.isVisible) 14f else 14.5f)
|
||||
root.setOnClickListener {
|
||||
adapter.delegate.onSubChapterClicked(
|
||||
bindingAdapterPosition,
|
||||
|
|
|
@ -126,6 +126,9 @@ class RecentsController(bundle: Bundle? = null) :
|
|||
set(value) {
|
||||
field = value
|
||||
presenter.query = value
|
||||
if (this::adapter.isInitialized) {
|
||||
adapter.isSearching = value.isNotBlank()
|
||||
}
|
||||
}
|
||||
|
||||
override val mainRecycler: RecyclerView
|
||||
|
@ -651,6 +654,7 @@ class RecentsController(bundle: Bundle? = null) :
|
|||
}
|
||||
|
||||
override fun areExtraChaptersExpanded(position: Int): Boolean {
|
||||
if (query.isNotBlank()) return true
|
||||
val item = (adapter.getItem(position) as? RecentMangaItem) ?: return false
|
||||
val date = presenter.dateFormat.format(item.chapter.dateRead ?: item.chapter.date_fetch)
|
||||
val invertDefault = !adapter.collapseGrouped
|
||||
|
@ -659,6 +663,7 @@ class RecentsController(bundle: Bundle? = null) :
|
|||
}
|
||||
|
||||
override fun updateExpandedExtraChapters(position: Int, expanded: Boolean) {
|
||||
if (query.isNotBlank()) return
|
||||
val item = (adapter.getItem(position) as? RecentMangaItem) ?: return
|
||||
val date = presenter.dateFormat.format(item.chapter.dateRead ?: item.chapter.date_fetch)
|
||||
val invertDefault = !adapter.collapseGrouped
|
||||
|
|
|
@ -267,25 +267,24 @@ class RecentsPresenter(
|
|||
}
|
||||
}
|
||||
val pairs = mangaList.mapNotNull {
|
||||
val chapter = run result@{
|
||||
when {
|
||||
(viewType == VIEW_TYPE_ONLY_UPDATES && !groupChaptersUpdates) ||
|
||||
(viewType == VIEW_TYPE_ONLY_HISTORY && !groupChaptersHistory) -> {
|
||||
it.chapter
|
||||
val chapter = when {
|
||||
(viewType == VIEW_TYPE_ONLY_UPDATES && !groupChaptersUpdates) ||
|
||||
(viewType == VIEW_TYPE_ONLY_HISTORY && !groupChaptersHistory) -> {
|
||||
it.chapter
|
||||
}
|
||||
(it.chapter.read && viewType != VIEW_TYPE_ONLY_UPDATES) || it.chapter.id == null -> {
|
||||
val unreadChapterIsAlreadyInList by lazy {
|
||||
val fIndex = mangaList.indexOfFirst { item -> item.manga.id == it.manga.id }
|
||||
(
|
||||
recentItems.any { item -> item.mch.manga.id == it.manga.id } ||
|
||||
fIndex < mangaList.indexOf(it)
|
||||
)
|
||||
}
|
||||
(it.chapter.read && viewType != VIEW_TYPE_ONLY_UPDATES) || it.chapter.id == null -> {
|
||||
if (viewType == VIEW_TYPE_ONLY_HISTORY && unreadChapterIsAlreadyInList) {
|
||||
it.chapter
|
||||
} else {
|
||||
val nextChapter = getNextChapter(it.manga)
|
||||
?: if (showRead && it.chapter.id != null) it.chapter else null
|
||||
if (viewType == VIEW_TYPE_ONLY_HISTORY && nextChapter != null) {
|
||||
val unreadChapterIsAlreadyInList =
|
||||
recentItems.any { item -> item.mch.manga.id == it.manga.id } ||
|
||||
mangaList.indexOfFirst { item ->
|
||||
item.manga.id == it.manga.id
|
||||
} > mangaList.indexOf(it)
|
||||
if (unreadChapterIsAlreadyInList) {
|
||||
return@result it.chapter
|
||||
}
|
||||
}
|
||||
if (viewType == VIEW_TYPE_ONLY_HISTORY && nextChapter?.id != null &&
|
||||
nextChapter.id != it.chapter.id
|
||||
) {
|
||||
|
@ -294,13 +293,13 @@ class RecentsPresenter(
|
|||
}
|
||||
nextChapter
|
||||
}
|
||||
it.history.id == null && viewType != VIEW_TYPE_ONLY_UPDATES -> {
|
||||
getFirstUpdatedChapter(it.manga, it.chapter)
|
||||
?: if ((showRead && it.chapter.id != null)) it.chapter else null
|
||||
}
|
||||
else -> {
|
||||
it.chapter
|
||||
}
|
||||
}
|
||||
it.history.id == null && viewType != VIEW_TYPE_ONLY_UPDATES -> {
|
||||
getFirstUpdatedChapter(it.manga, it.chapter)
|
||||
?: if ((showRead && it.chapter.id != null)) it.chapter else null
|
||||
}
|
||||
else -> {
|
||||
it.chapter
|
||||
}
|
||||
}
|
||||
if (chapter == null) if ((query.isNotEmpty() || viewType > VIEW_TYPE_UNGROUP_ALL) &&
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
android:paddingBottom="12dp"
|
||||
android:paddingStart="84dp"
|
||||
android:paddingEnd="2dp"
|
||||
android:gravity="center"
|
||||
app:layout_constraintHeight_min="48dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/download_button"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue