diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/PageHolderDelegate.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/PageHolderDelegate.kt
index e5fa4d374..79ea844cb 100644
--- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/PageHolderDelegate.kt
+++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/PageHolderDelegate.kt
@@ -120,7 +120,9 @@ class PageHolderDelegate(
if (state >= State.LOADED) {
state = State.SHOWN
error = null
- callback.onImageShown()
+ callback.onImageShown(isPreview = false)
+ } else if (state == State.LOADING_WITH_PREVIEW) {
+ callback.onImageShown(isPreview = true)
}
}
@@ -185,9 +187,9 @@ class PageHolderDelegate(
state = State.LOADING
error = null
callback.onLoadingStarted()
- launch {
- val preview = loader.loadPreview(data) ?: return@launch
- if (state == State.LOADING) {
+ val previewJob = launch {
+ val preview = loader.loadPreview(data)
+ if (preview != null && state == State.LOADING) {
state = State.LOADING_WITH_PREVIEW
callback.onPreviewReady(preview)
}
@@ -199,6 +201,7 @@ class PageHolderDelegate(
val progressObserver = observeProgress(this, task.progressAsFlow())
val file = task.await()
progressObserver.cancelAndJoin()
+ previewJob.cancel()
uri = file
state = State.LOADED
cachedBounds = if (readerSettings.isPagesCropEnabled(isWebtoon)) {
@@ -251,7 +254,7 @@ class PageHolderDelegate(
fun onImageShowing(settings: ReaderSettings, isPreview: Boolean)
- fun onImageShown()
+ fun onImageShown(isPreview: Boolean)
fun onProgressChanged(progress: Int)
diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/standard/PageHolder.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/standard/PageHolder.kt
index 92dcbb13e..3e5a6c483 100644
--- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/standard/PageHolder.kt
+++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/standard/PageHolder.kt
@@ -16,6 +16,7 @@ import org.koitharu.kotatsu.core.ui.widgets.ZoomControl
import org.koitharu.kotatsu.core.util.ext.getDisplayMessage
import org.koitharu.kotatsu.core.util.ext.isLowRamDevice
import org.koitharu.kotatsu.core.util.ext.isSerializable
+import org.koitharu.kotatsu.core.util.ext.setTextAndVisible
import org.koitharu.kotatsu.databinding.ItemPageBinding
import org.koitharu.kotatsu.parsers.util.ifZero
import org.koitharu.kotatsu.reader.domain.PageLoader
@@ -78,14 +79,17 @@ open class PageHolder(
bindingInfo.layoutError.isVisible = false
bindingInfo.progressBar.show()
binding.ssiv.recycle()
+ bindingInfo.textViewStatus.setTextAndVisible(R.string.loading_)
}
override fun onProgressChanged(progress: Int) {
if (progress in 0..100) {
bindingInfo.progressBar.isIndeterminate = false
bindingInfo.progressBar.setProgressCompat(progress, true)
+ bindingInfo.textViewStatus.text = context.getString(R.string.percent_string_pattern, progress.toString())
} else {
bindingInfo.progressBar.isIndeterminate = true
+ bindingInfo.textViewStatus.setText(R.string.loading_)
}
}
@@ -137,8 +141,11 @@ open class PageHolder(
}
}
- override fun onImageShown() {
- bindingInfo.progressBar.hide()
+ override fun onImageShown(isPreview: Boolean) {
+ if (!isPreview) {
+ bindingInfo.progressBar.hide()
+ }
+ bindingInfo.textViewStatus.isVisible = false
}
override fun onTrimMemory() {
diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonHolder.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonHolder.kt
index cf0a12625..95d3953f4 100644
--- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonHolder.kt
+++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonHolder.kt
@@ -10,6 +10,7 @@ import org.koitharu.kotatsu.core.os.NetworkState
import org.koitharu.kotatsu.core.util.GoneOnInvisibleListener
import org.koitharu.kotatsu.core.util.ext.getDisplayMessage
import org.koitharu.kotatsu.core.util.ext.isSerializable
+import org.koitharu.kotatsu.core.util.ext.setTextAndVisible
import org.koitharu.kotatsu.databinding.ItemPageWebtoonBinding
import org.koitharu.kotatsu.parsers.util.ifZero
import org.koitharu.kotatsu.reader.domain.PageLoader
@@ -78,14 +79,17 @@ class WebtoonHolder(
bindingInfo.layoutError.isVisible = false
bindingInfo.progressBar.show()
binding.ssiv.recycle()
+ bindingInfo.textViewStatus.setTextAndVisible(R.string.loading_)
}
override fun onProgressChanged(progress: Int) {
if (progress in 0..100) {
bindingInfo.progressBar.isIndeterminate = false
bindingInfo.progressBar.setProgressCompat(progress, true)
+ bindingInfo.textViewStatus.text = context.getString(R.string.percent_string_pattern, progress.toString())
} else {
bindingInfo.progressBar.isIndeterminate = true
+ bindingInfo.textViewStatus.setText(R.string.loading_)
}
}
@@ -109,8 +113,9 @@ class WebtoonHolder(
}
}
- override fun onImageShown() {
+ override fun onImageShown(isPreview: Boolean) {
bindingInfo.progressBar.hide()
+ bindingInfo.textViewStatus.isVisible = false
}
override fun onTrimMemory() {
diff --git a/app/src/main/res/layout/layout_page_info.xml b/app/src/main/res/layout/layout_page_info.xml
index 01d04d46b..cf1393cdc 100644
--- a/app/src/main/res/layout/layout_page_info.xml
+++ b/app/src/main/res/layout/layout_page_info.xml
@@ -5,15 +5,26 @@
xmlns:tools="http://schemas.android.com/tools"
tools:parentTag="android.widget.FrameLayout">
-
+
+
+ android:layout_marginHorizontal="60dp"
+ android:gravity="center"
+ android:textAppearance="?textAppearanceBodyLarge"
+ tools:text="72%" />
+ tools:visibility="gone">