mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
Show when chapter was read by long press in details
This commit is contained in:
parent
121df1fdee
commit
211068d79a
4 changed files with 49 additions and 12 deletions
|
@ -33,6 +33,7 @@ class MaterialMenuSheet(
|
||||||
selectedId: Int? = null,
|
selectedId: Int? = null,
|
||||||
maxHeight: Int? = null,
|
maxHeight: Int? = null,
|
||||||
showDivider: Boolean = false,
|
showDivider: Boolean = false,
|
||||||
|
subtitle: String? = null,
|
||||||
onMenuItemClicked: (MaterialMenuSheet, Int) -> Boolean,
|
onMenuItemClicked: (MaterialMenuSheet, Int) -> Boolean,
|
||||||
) : E2EBottomSheetDialog<BottomMenuSheetBinding>(activity) {
|
) : E2EBottomSheetDialog<BottomMenuSheetBinding>(activity) {
|
||||||
|
|
||||||
|
@ -76,8 +77,11 @@ class MaterialMenuSheet(
|
||||||
sheetBehavior.skipCollapsed = true
|
sheetBehavior.skipCollapsed = true
|
||||||
|
|
||||||
binding.menuSheetRecycler.setOnApplyWindowInsetsListener(RecyclerWindowInsetsListener)
|
binding.menuSheetRecycler.setOnApplyWindowInsetsListener(RecyclerWindowInsetsListener)
|
||||||
binding.titleLayout.isVisible = title != null
|
binding.titleLayout.isVisible = title != null || subtitle != null
|
||||||
|
binding.toolbarTitle.isVisible = title != null
|
||||||
binding.toolbarTitle.text = title
|
binding.toolbarTitle.text = title
|
||||||
|
binding.toolbarSubtitle.isVisible = subtitle != null
|
||||||
|
binding.toolbarSubtitle.text = subtitle
|
||||||
|
|
||||||
if (selectedId != null) {
|
if (selectedId != null) {
|
||||||
val pos = max(items.indexOfFirst { it.id == selectedId }, 0)
|
val pos = max(items.indexOfFirst { it.id == selectedId }, 0)
|
||||||
|
|
|
@ -106,6 +106,7 @@ import eu.kanade.tachiyomi.util.system.launchUI
|
||||||
import eu.kanade.tachiyomi.util.system.materialAlertDialog
|
import eu.kanade.tachiyomi.util.system.materialAlertDialog
|
||||||
import eu.kanade.tachiyomi.util.system.rootWindowInsetsCompat
|
import eu.kanade.tachiyomi.util.system.rootWindowInsetsCompat
|
||||||
import eu.kanade.tachiyomi.util.system.setCustomTitleAndMessage
|
import eu.kanade.tachiyomi.util.system.setCustomTitleAndMessage
|
||||||
|
import eu.kanade.tachiyomi.util.system.timeSpanFromNow
|
||||||
import eu.kanade.tachiyomi.util.system.toast
|
import eu.kanade.tachiyomi.util.system.toast
|
||||||
import eu.kanade.tachiyomi.util.view.activityBinding
|
import eu.kanade.tachiyomi.util.view.activityBinding
|
||||||
import eu.kanade.tachiyomi.util.view.findChild
|
import eu.kanade.tachiyomi.util.view.findChild
|
||||||
|
@ -869,7 +870,7 @@ class MangaDetailsController :
|
||||||
val adapter = adapter ?: return
|
val adapter = adapter ?: return
|
||||||
val item = (adapter.getItem(position) as? ChapterItem) ?: return
|
val item = (adapter.getItem(position) as? ChapterItem) ?: return
|
||||||
val descending = presenter.sortDescending()
|
val descending = presenter.sortDescending()
|
||||||
var items = mutableListOf(
|
val items = mutableListOf(
|
||||||
MaterialMenuSheet.MenuSheetItem(
|
MaterialMenuSheet.MenuSheetItem(
|
||||||
0,
|
0,
|
||||||
if (descending) R.drawable.ic_eye_down_24dp else R.drawable.ic_eye_up_24dp,
|
if (descending) R.drawable.ic_eye_down_24dp else R.drawable.ic_eye_up_24dp,
|
||||||
|
@ -901,16 +902,20 @@ class MangaDetailsController :
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
val menuSheet = MaterialMenuSheet(activity!!, items, item.name) { _, itemPos ->
|
val lastRead = presenter.allHistory.find { it.chapter_id == item.id }?.let {
|
||||||
when (itemPos) {
|
activity?.timeSpanFromNow(R.string.read_, it.last_read) + "\n"
|
||||||
0 -> markPreviousAs(item, true)
|
|
||||||
1 -> markPreviousAs(item, false)
|
|
||||||
2 -> startReadRange(position, RangeMode.Read)
|
|
||||||
3 -> startReadRange(position, RangeMode.Unread)
|
|
||||||
4 -> openChapterInWebView(item)
|
|
||||||
}
|
|
||||||
true
|
|
||||||
}
|
}
|
||||||
|
val menuSheet =
|
||||||
|
MaterialMenuSheet(activity!!, items, item.name, subtitle = lastRead) { _, itemPos ->
|
||||||
|
when (itemPos) {
|
||||||
|
0 -> markPreviousAs(item, true)
|
||||||
|
1 -> markPreviousAs(item, false)
|
||||||
|
2 -> startReadRange(position, RangeMode.Read)
|
||||||
|
3 -> startReadRange(position, RangeMode.Unread)
|
||||||
|
4 -> openChapterInWebView(item)
|
||||||
|
}
|
||||||
|
true
|
||||||
|
}
|
||||||
menuSheet.show()
|
menuSheet.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ import eu.kanade.tachiyomi.data.cache.CoverCache
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
import eu.kanade.tachiyomi.data.database.models.Category
|
import eu.kanade.tachiyomi.data.database.models.Category
|
||||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||||
|
import eu.kanade.tachiyomi.data.database.models.History
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
import eu.kanade.tachiyomi.data.database.models.Track
|
import eu.kanade.tachiyomi.data.database.models.Track
|
||||||
import eu.kanade.tachiyomi.data.download.DownloadManager
|
import eu.kanade.tachiyomi.data.download.DownloadManager
|
||||||
|
@ -105,6 +106,9 @@ class MangaDetailsPresenter(
|
||||||
var allChapters: List<ChapterItem> = emptyList()
|
var allChapters: List<ChapterItem> = emptyList()
|
||||||
private set
|
private set
|
||||||
|
|
||||||
|
var allHistory: List<History> = emptyList()
|
||||||
|
private set
|
||||||
|
|
||||||
val headerItem by lazy { MangaHeaderItem(manga, view?.fromCatalogue == true) }
|
val headerItem by lazy { MangaHeaderItem(manga, view?.fromCatalogue == true) }
|
||||||
var tabletChapterHeaderItem: MangaHeaderItem? = null
|
var tabletChapterHeaderItem: MangaHeaderItem? = null
|
||||||
var allChapterScanlators: Set<String> = emptySet()
|
var allChapterScanlators: Set<String> = emptySet()
|
||||||
|
@ -166,6 +170,9 @@ class MangaDetailsPresenter(
|
||||||
// Store the last emission
|
// Store the last emission
|
||||||
allChapters = chapters
|
allChapters = chapters
|
||||||
this.chapters = applyChapterFilters(chapters)
|
this.chapters = applyChapterFilters(chapters)
|
||||||
|
presenterScope.launchIO {
|
||||||
|
allHistory = manga.id?.let { db.getHistoryByMangaId(it).executeOnIO() }.orEmpty()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -47,12 +47,33 @@
|
||||||
android:textAppearance="?textAppearanceHeadlineMedium"
|
android:textAppearance="?textAppearanceHeadlineMedium"
|
||||||
android:textColor="?actionBarTintColor"
|
android:textColor="?actionBarTintColor"
|
||||||
android:textSize="17sp"
|
android:textSize="17sp"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toTopOf="@id/toolbar_subtitle"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintVertical_chainStyle="packed"
|
||||||
tools:text="Title Text" />
|
tools:text="Title Text" />
|
||||||
|
|
||||||
|
<com.google.android.material.textview.MaterialTextView
|
||||||
|
android:id="@+id/toolbar_subtitle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textStyle="italic"
|
||||||
|
android:textAppearance="?textAppearanceCaption"
|
||||||
|
android:textColor="?actionBarTintColor"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:visibility="visible"
|
||||||
|
android:alpha="0.75"
|
||||||
|
android:textSize="13sp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/toolbar_title"
|
||||||
|
tools:text="subtitle text" />
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:id="@+id/divider"
|
android:id="@+id/divider"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue