Reader ui updates
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user