diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt index 98bccb250..a14154ec0 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt @@ -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) { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderBottomMenuProvider.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderMenuProvider.kt similarity index 96% rename from app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderBottomMenuProvider.kt rename to app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderMenuProvider.kt index d02125ede..610b517db 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderBottomMenuProvider.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderMenuProvider.kt @@ -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 } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderTopMenuProvider.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderTopMenuProvider.kt deleted file mode 100644 index e2fa85e0a..000000000 --- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/ReaderTopMenuProvider.kt +++ /dev/null @@ -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 - } - } -} diff --git a/app/src/main/res/layout-w600dp-land/activity_reader.xml b/app/src/main/res/layout-w600dp-land/activity_reader.xml index 92ec14325..d7971c32e 100644 --- a/app/src/main/res/layout-w600dp-land/activity_reader.xml +++ b/app/src/main/res/layout-w600dp-land/activity_reader.xml @@ -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" /> diff --git a/app/src/main/res/layout/activity_reader.xml b/app/src/main/res/layout/activity_reader.xml index 649f9c247..7e112fb7f 100644 --- a/app/src/main/res/layout/activity_reader.xml +++ b/app/src/main/res/layout/activity_reader.xml @@ -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" /> diff --git a/app/src/main/res/menu/opt_reader_bottom.xml b/app/src/main/res/menu/opt_reader.xml similarity index 100% rename from app/src/main/res/menu/opt_reader_bottom.xml rename to app/src/main/res/menu/opt_reader.xml diff --git a/app/src/main/res/menu/opt_reader_top.xml b/app/src/main/res/menu/opt_reader_top.xml deleted file mode 100644 index 6d7c73374..000000000 --- a/app/src/main/res/menu/opt_reader_top.xml +++ /dev/null @@ -1,15 +0,0 @@ - -