Fix merging artifacts attempt 2
This commit is contained in:
@@ -12,7 +12,6 @@ import androidx.core.view.OnApplyWindowInsetsListener
|
|||||||
import androidx.core.view.WindowInsetsCompat
|
import androidx.core.view.WindowInsetsCompat
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.core.view.updatePadding
|
import androidx.core.view.updatePadding
|
||||||
import androidx.lifecycle.flowWithLifecycle
|
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.transition.Slide
|
import androidx.transition.Slide
|
||||||
import androidx.transition.TransitionManager
|
import androidx.transition.TransitionManager
|
||||||
@@ -20,8 +19,6 @@ import androidx.transition.TransitionSet
|
|||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.flow.launchIn
|
|
||||||
import kotlinx.coroutines.flow.onEach
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.koin.android.ext.android.get
|
import org.koin.android.ext.android.get
|
||||||
@@ -44,7 +41,6 @@ import org.koitharu.kotatsu.reader.ui.thumbnails.OnPageSelectListener
|
|||||||
import org.koitharu.kotatsu.reader.ui.thumbnails.PagesThumbnailsSheet
|
import org.koitharu.kotatsu.reader.ui.thumbnails.PagesThumbnailsSheet
|
||||||
import org.koitharu.kotatsu.settings.SettingsActivity
|
import org.koitharu.kotatsu.settings.SettingsActivity
|
||||||
import org.koitharu.kotatsu.utils.GridTouchHelper
|
import org.koitharu.kotatsu.utils.GridTouchHelper
|
||||||
import org.koitharu.kotatsu.utils.ScreenOrientationHelper
|
|
||||||
import org.koitharu.kotatsu.utils.ShareHelper
|
import org.koitharu.kotatsu.utils.ShareHelper
|
||||||
import org.koitharu.kotatsu.utils.ext.*
|
import org.koitharu.kotatsu.utils.ext.*
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
@@ -68,7 +64,6 @@ class ReaderActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private lateinit var touchHelper: GridTouchHelper
|
private lateinit var touchHelper: GridTouchHelper
|
||||||
private lateinit var orientationHelper: ScreenOrientationHelper
|
|
||||||
private lateinit var controlDelegate: ReaderControlDelegate
|
private lateinit var controlDelegate: ReaderControlDelegate
|
||||||
private val savePageRequest = registerForActivityResult(PageSaveContract(), this)
|
private val savePageRequest = registerForActivityResult(PageSaveContract(), this)
|
||||||
private var gestureInsets: Insets = Insets.NONE
|
private var gestureInsets: Insets = Insets.NONE
|
||||||
@@ -81,18 +76,12 @@ class ReaderActivity :
|
|||||||
readerManager = ReaderManager(supportFragmentManager, R.id.container)
|
readerManager = ReaderManager(supportFragmentManager, R.id.container)
|
||||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||||
touchHelper = GridTouchHelper(this, this)
|
touchHelper = GridTouchHelper(this, this)
|
||||||
orientationHelper = ScreenOrientationHelper(this)
|
|
||||||
controlDelegate = ReaderControlDelegate(lifecycleScope, get(), this)
|
controlDelegate = ReaderControlDelegate(lifecycleScope, get(), this)
|
||||||
binding.toolbarBottom.inflateMenu(R.menu.opt_reader_bottom)
|
|
||||||
binding.toolbarBottom.setOnMenuItemClickListener(::onOptionsItemSelected)
|
binding.toolbarBottom.setOnMenuItemClickListener(::onOptionsItemSelected)
|
||||||
|
binding.slider.setLabelFormatter(PageLabelFormatter())
|
||||||
|
ReaderSliderListener(this, viewModel).attachToSlider(binding.slider)
|
||||||
insetsDelegate.interceptingWindowInsetsListener = this
|
insetsDelegate.interceptingWindowInsetsListener = this
|
||||||
|
|
||||||
orientationHelper.observeAutoOrientation()
|
|
||||||
.flowWithLifecycle(lifecycle)
|
|
||||||
.onEach {
|
|
||||||
binding.toolbarBottom.menu.findItem(R.id.action_screen_rotate).isVisible = !it
|
|
||||||
}.launchIn(lifecycleScope)
|
|
||||||
|
|
||||||
viewModel.onError.observe(this, this::onError)
|
viewModel.onError.observe(this, this::onError)
|
||||||
viewModel.readerMode.observe(this, this::onInitReader)
|
viewModel.readerMode.observe(this, this::onInitReader)
|
||||||
viewModel.onPageSaved.observe(this, this::onPageSaved)
|
viewModel.onPageSaved.observe(this, this::onPageSaved)
|
||||||
@@ -114,15 +103,6 @@ class ReaderActivity :
|
|||||||
if (readerManager.currentMode != mode) {
|
if (readerManager.currentMode != mode) {
|
||||||
readerManager.replace(mode)
|
readerManager.replace(mode)
|
||||||
}
|
}
|
||||||
val iconRes = when (mode) {
|
|
||||||
ReaderMode.WEBTOON -> R.drawable.ic_script
|
|
||||||
ReaderMode.REVERSED -> R.drawable.ic_read_reversed
|
|
||||||
ReaderMode.STANDARD -> R.drawable.ic_book_page
|
|
||||||
}
|
|
||||||
binding.toolbarBottom.menu.findItem(R.id.action_reader_mode).run {
|
|
||||||
setIcon(iconRes)
|
|
||||||
setVisible(true)
|
|
||||||
}
|
|
||||||
if (binding.appbarTop.isVisible) {
|
if (binding.appbarTop.isVisible) {
|
||||||
lifecycle.postDelayed(hideUiRunnable, TimeUnit.SECONDS.toMillis(1))
|
lifecycle.postDelayed(hideUiRunnable, TimeUnit.SECONDS.toMillis(1))
|
||||||
}
|
}
|
||||||
@@ -135,7 +115,7 @@ class ReaderActivity :
|
|||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
R.id.action_reader_mode -> {
|
R.id.action_menu -> {
|
||||||
val currentMode = readerManager.currentMode ?: return false
|
val currentMode = readerManager.currentMode ?: return false
|
||||||
ReaderConfigDialog.show(supportFragmentManager, currentMode)
|
ReaderConfigDialog.show(supportFragmentManager, currentMode)
|
||||||
}
|
}
|
||||||
@@ -149,9 +129,6 @@ class ReaderActivity :
|
|||||||
viewModel.getCurrentState()?.chapterId ?: 0L
|
viewModel.getCurrentState()?.chapterId ?: 0L
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
R.id.action_screen_rotate -> {
|
|
||||||
orientationHelper.toggleOrientation()
|
|
||||||
}
|
|
||||||
R.id.action_pages_thumbs -> {
|
R.id.action_pages_thumbs -> {
|
||||||
val pages = viewModel.getCurrentChapterPages()
|
val pages = viewModel.getCurrentChapterPages()
|
||||||
if (!pages.isNullOrEmpty()) {
|
if (!pages.isNullOrEmpty()) {
|
||||||
@@ -165,11 +142,6 @@ class ReaderActivity :
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
R.id.action_save_page -> {
|
|
||||||
viewModel.saveCurrentState(readerManager.currentReader?.getCurrentState())
|
|
||||||
val page = viewModel.getCurrentPage() ?: return false
|
|
||||||
viewModel.saveCurrentPage(page, savePageRequest)
|
|
||||||
}
|
|
||||||
R.id.action_bookmark -> {
|
R.id.action_bookmark -> {
|
||||||
if (viewModel.isBookmarkAdded.value == true) {
|
if (viewModel.isBookmarkAdded.value == true) {
|
||||||
viewModel.removeBookmark()
|
viewModel.removeBookmark()
|
||||||
@@ -197,7 +169,6 @@ class ReaderActivity :
|
|||||||
val menu = binding.toolbarBottom.menu
|
val menu = binding.toolbarBottom.menu
|
||||||
menu.findItem(R.id.action_bookmark).isVisible = hasPages
|
menu.findItem(R.id.action_bookmark).isVisible = hasPages
|
||||||
menu.findItem(R.id.action_pages_thumbs).isVisible = hasPages
|
menu.findItem(R.id.action_pages_thumbs).isVisible = hasPages
|
||||||
menu.findItem(R.id.action_save_page).isVisible = hasPages
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onError(e: Throwable) {
|
private fun onError(e: Throwable) {
|
||||||
@@ -347,16 +318,28 @@ class ReaderActivity :
|
|||||||
|
|
||||||
private fun onUiStateChanged(uiState: ReaderUiState?, previous: ReaderUiState?) {
|
private fun onUiStateChanged(uiState: ReaderUiState?, previous: ReaderUiState?) {
|
||||||
title = uiState?.chapterName ?: uiState?.mangaName ?: getString(R.string.loading_)
|
title = uiState?.chapterName ?: uiState?.mangaName ?: getString(R.string.loading_)
|
||||||
supportActionBar?.subtitle = if (uiState != null && uiState.chapterNumber in 1..uiState.chaptersTotal) {
|
if (uiState == null) {
|
||||||
|
supportActionBar?.subtitle = null
|
||||||
|
binding.slider.isVisible = false
|
||||||
|
return
|
||||||
|
}
|
||||||
|
supportActionBar?.subtitle = if (uiState.chapterNumber in 1..uiState.chaptersTotal) {
|
||||||
getString(R.string.chapter_d_of_d, uiState.chapterNumber, uiState.chaptersTotal)
|
getString(R.string.chapter_d_of_d, uiState.chapterNumber, uiState.chaptersTotal)
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
if (uiState != null && previous?.chapterName != null && uiState.chapterName != previous.chapterName) {
|
if (previous?.chapterName != null && uiState.chapterName != previous.chapterName) {
|
||||||
if (!uiState.chapterName.isNullOrEmpty()) {
|
if (!uiState.chapterName.isNullOrEmpty()) {
|
||||||
binding.toastView.showTemporary(uiState.chapterName, TOAST_DURATION)
|
binding.toastView.showTemporary(uiState.chapterName, TOAST_DURATION)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (uiState.totalPages > 0) {
|
||||||
|
binding.slider.value = uiState.currentPage.toFloat()
|
||||||
|
binding.slider.valueTo = uiState.totalPages.toFloat()
|
||||||
|
binding.slider.isVisible = true
|
||||||
|
} else {
|
||||||
|
binding.slider.isVisible = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private inner class ErrorDialogListener(
|
private inner class ErrorDialogListener(
|
||||||
|
|||||||
@@ -20,28 +20,9 @@
|
|||||||
app:showAsAction="always" />
|
app:showAsAction="always" />
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/action_screen_rotate"
|
android:id="@+id/action_menu"
|
||||||
android:icon="@drawable/ic_screen_rotation"
|
android:icon="@drawable/abc_ic_menu_overflow_material"
|
||||||
android:title="@string/rotate_screen"
|
android:title="@string/options"
|
||||||
android:visible="false"
|
|
||||||
app:showAsAction="always" />
|
app:showAsAction="always" />
|
||||||
|
|
||||||
<item
|
|
||||||
android:id="@+id/action_reader_mode"
|
|
||||||
android:icon="@drawable/ic_loading"
|
|
||||||
android:title="@string/read_mode"
|
|
||||||
android:visible="false"
|
|
||||||
app:showAsAction="always" />
|
|
||||||
|
|
||||||
<item
|
|
||||||
android:id="@+id/action_save_page"
|
|
||||||
android:title="@string/save_page"
|
|
||||||
android:visible="false"
|
|
||||||
app:showAsAction="never" />
|
|
||||||
|
|
||||||
<item
|
|
||||||
android:id="@+id/action_settings"
|
|
||||||
android:title="@string/settings"
|
|
||||||
app:showAsAction="never" />
|
|
||||||
|
|
||||||
</menu>
|
</menu>
|
||||||
|
|||||||
Reference in New Issue
Block a user