Reader ui updates

This commit is contained in:
Koitharu
2024-12-14 15:39:13 +02:00
parent 19f398d309
commit 76162a06e3
7 changed files with 14 additions and 75 deletions

View File

@@ -150,7 +150,7 @@ class ReaderActivity :
viewModel.content.observe(this) {
onLoadingStateChanged(viewModel.isLoading.value)
}
viewModel.isSliderVisible.observe(this, this::onSliderVisibilityChanged)
viewModel.isSliderVisible.observe(this) { updateSliderVisibility() }
viewModel.isKeepScreenOnEnabled.observe(this, this::setKeepScreenOn)
viewModel.isInfoBarEnabled.observe(this, ::onReaderBarChanged)
val bottomMenuInvalidator = MenuInvalidator(viewBinding.toolbarBottom)
@@ -164,8 +164,7 @@ class ReaderActivity :
viewModel.isZoomControlsEnabled.observe(this) {
viewBinding.zoomControl.isVisible = it
}
addMenuProvider(ReaderTopMenuProvider(this, viewModel))
viewBinding.toolbarBottom.addMenuProvider(ReaderBottomMenuProvider(this, readerManager, viewModel))
viewBinding.toolbarBottom.addMenuProvider(ReaderMenuProvider(this, readerManager, viewModel))
}
override fun getParentActivityIntent(): Intent? {
@@ -320,15 +319,11 @@ class ReaderActivity :
viewBinding.appbarBottom?.isVisible = isUiVisible
viewBinding.infoBar.isGone = isUiVisible || (!viewModel.isInfoBarEnabled.value)
viewBinding.infoBar.isTimeVisible = isFullscreen
viewBinding.floatingToolbar.isVisible = isUiVisible && viewModel.isSliderVisible.value
updateSliderVisibility()
systemUiController.setSystemUiVisible(isUiVisible || !isFullscreen)
}
}
private fun onSliderVisibilityChanged(isSliderVisible: Boolean) {
viewBinding.floatingToolbar.isVisible = isSliderVisible && viewBinding.appbarTop.isVisible
}
override fun onApplyWindowInsets(v: View, insets: WindowInsetsCompat): WindowInsetsCompat {
gestureInsets = insets.getInsets(WindowInsetsCompat.Type.systemGestures())
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
@@ -408,10 +403,14 @@ class ReaderActivity :
if (uiState.isSliderAvailable()) {
viewBinding.slider.valueTo = uiState.totalPages.toFloat() - 1
viewBinding.slider.setValueRounded(uiState.currentPage.toFloat())
viewBinding.slider.isVisible = true
} else {
viewBinding.slider.isVisible = false
}
updateSliderVisibility()
}
private fun updateSliderVisibility() {
viewBinding.floatingToolbar.isVisible = viewBinding.appbarTop.isVisible &&
viewModel.isSliderVisible.value &&
viewModel.uiState.value?.isSliderAvailable() == true
}
class IntentBuilder(context: Context) {

View File

@@ -9,14 +9,14 @@ import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.details.ui.pager.ChaptersPagesSheet
import org.koitharu.kotatsu.reader.ui.config.ReaderConfigSheet
class ReaderBottomMenuProvider(
class ReaderMenuProvider(
private val activity: FragmentActivity,
private val readerManager: ReaderManager,
private val viewModel: ReaderViewModel,
) : MenuProvider {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
menuInflater.inflate(R.menu.opt_reader_bottom, menu)
menuInflater.inflate(R.menu.opt_reader, menu)
onPrepareMenu(menu) // fix, not called in toolbar
}

View File

@@ -1,45 +0,0 @@
package org.koitharu.kotatsu.reader.ui
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import androidx.core.view.MenuProvider
import androidx.fragment.app.FragmentActivity
import org.koitharu.kotatsu.R
class ReaderTopMenuProvider(
private val activity: FragmentActivity,
private val viewModel: ReaderViewModel,
) : MenuProvider {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
menuInflater.inflate(R.menu.opt_reader_top, menu)
}
override fun onPrepareMenu(menu: Menu) {
menu.findItem(R.id.action_bookmark)?.let { bookmarkItem ->
val hasPages = viewModel.content.value.pages.isNotEmpty()
bookmarkItem.isEnabled = hasPages
if (hasPages) {
val hasBookmark = viewModel.isBookmarkAdded.value
bookmarkItem.setTitle(if (hasBookmark) R.string.bookmark_remove else R.string.bookmark_add)
bookmarkItem.setIcon(if (hasBookmark) R.drawable.ic_bookmark_added else R.drawable.ic_bookmark)
}
}
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
return when (menuItem.itemId) {
R.id.action_bookmark -> {
if (viewModel.isBookmarkAdded.value) {
viewModel.removeBookmark()
} else {
viewModel.addBookmark()
}
true
}
else -> false
}
}
}

View File

@@ -59,7 +59,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
tools:menu="@menu/opt_reader_bottom" />
tools:menu="@menu/opt_reader" />
</LinearLayout>

View File

@@ -66,7 +66,7 @@
android:id="@+id/toolbar_bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:menu="@menu/opt_reader_bottom" />
tools:menu="@menu/opt_reader" />
</com.google.android.material.card.MaterialCardView>

View File

@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="AlwaysShowAction">
<item
android:id="@+id/action_bookmark"
android:enabled="false"
android:icon="@drawable/ic_bookmark"
android:title="@string/bookmark_add"
app:showAsAction="always" />
</menu>