Do not retry loading pages

GIF support in non-vertical pagers
Fix cache being double-opened
This commit is contained in:
NerdNumber9 2018-07-18 22:17:46 -04:00
parent 2fd4204db8
commit 840e571917
6 changed files with 65 additions and 5 deletions

View File

@ -40,8 +40,8 @@ android {
minSdkVersion 16
targetSdkVersion 27
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
versionCode 7402
versionName "v7.4.2-EH"
versionCode 7404
versionName "v7.4.4-EH"
buildConfigField "String", "COMMIT_COUNT", "\"${getCommitCount()}\""
buildConfigField "String", "COMMIT_SHA", "\"${getGitSha()}\""

View File

@ -52,7 +52,7 @@ class ChapterCache(private val context: Context) {
// --> EH
private var diskCache = setupDiskCache(prefs.eh_cacheSize().getOrDefault().toLong())
init {
prefs.eh_cacheSize().asObservable().subscribe {
prefs.eh_cacheSize().asObservable().skip(1).subscribe {
// Save old cache for destruction later
val oldCache = diskCache
diskCache = setupDiskCache(it.toLong())

View File

@ -246,5 +246,5 @@ class PreferencesHelper(val context: Context) {
fun eh_utilAutoscrollInterval() = rxPrefs.getFloat(Keys.eh_utilAutoscrollInterval, 3f)
fun eh_cacheSize() = rxPrefs.getString(Keys.eh_utilAutoscrollInterval, "75")
fun eh_cacheSize() = rxPrefs.getString(Keys.eh_cacheSize, "75")
}

View File

@ -213,6 +213,9 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
var shouldQueuePage = false
if(page.status == Page.ERROR) {
shouldQueuePage = true
} else if(page.status == Page.LOAD_PAGE
|| page.status == Page.DOWNLOAD_IMAGE) {
// Do nothing
} else if (page.uri == null) {
shouldQueuePage = true
} else if (!UniFile.fromUri(this, page.uri).exists()) {

View File

@ -15,13 +15,16 @@ import eu.kanade.tachiyomi.ui.reader.ReaderActivity
import eu.kanade.tachiyomi.ui.reader.viewer.base.PageDecodeErrorLayout
import eu.kanade.tachiyomi.ui.reader.viewer.pager.horizontal.RightToLeftReader
import eu.kanade.tachiyomi.ui.reader.viewer.pager.vertical.VerticalReader
import eu.kanade.tachiyomi.util.gone
import eu.kanade.tachiyomi.util.inflate
import eu.kanade.tachiyomi.util.visible
import kotlinx.android.synthetic.main.reader_pager_item.view.*
import rx.Observable
import rx.Subscription
import rx.android.schedulers.AndroidSchedulers
import rx.subjects.PublishSubject
import rx.subjects.SerializedSubject
import java.net.URLConnection
import java.util.concurrent.TimeUnit
class PageView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null)
@ -59,6 +62,19 @@ class PageView @JvmOverloads constructor(context: Context, attrs: AttributeSet?
rotation = -180f
}
// --> EH
with(gif_view) {
setOnTouchListener { _, motionEvent -> reader.gestureDetector.onTouchEvent(motionEvent) }
setOnLongClickListener { reader.onLongClick(page) }
settings.loadWithOverviewMode = true
settings.useWideViewPort = true
settings.builtInZoomControls = true
settings.displayZoomControls = false
settings.setSupportZoom(true)
gone()
}
// <-- EH
with(image_view) {
setMaxTileSize((reader.activity as ReaderActivity).maxBitmapSize)
setDoubleTapZoomStyle(SubsamplingScaleImageView.ZOOM_FOCUS_FIXED)
@ -82,6 +98,9 @@ class PageView @JvmOverloads constructor(context: Context, attrs: AttributeSet?
onImageDecodeError(reader)
}
})
// --> EH
visible()
// <-- EH
}
retry_button.setOnTouchListener { _, event ->
@ -100,6 +119,9 @@ class PageView @JvmOverloads constructor(context: Context, attrs: AttributeSet?
unsubscribeStatus()
image_view.setOnTouchListener(null)
image_view.setOnImageEventListener(null)
// --> EH
gif_view.setOnTouchListener(null)
// <-- EH
super.onDetachedFromWindow()
}
@ -187,6 +209,9 @@ class PageView @JvmOverloads constructor(context: Context, attrs: AttributeSet?
progress_container.visibility = View.VISIBLE
progress_text.visibility = View.INVISIBLE
retry_button.visibility = View.GONE
// --> EH
gif_view.gone()
// <-- EH
decodeErrorLayout?.let {
removeView(it)
decodeErrorLayout = null
@ -200,6 +225,9 @@ class PageView @JvmOverloads constructor(context: Context, attrs: AttributeSet?
progress_container.visibility = View.VISIBLE
progress_text.visibility = View.VISIBLE
progress_text.setText(R.string.downloading)
// --> EH
gif_view.gone()
// <-- EH
}
/**
@ -208,6 +236,9 @@ class PageView @JvmOverloads constructor(context: Context, attrs: AttributeSet?
private fun setDownloading() {
progress_container.visibility = View.VISIBLE
progress_text.visibility = View.VISIBLE
// --> EH
gif_view.gone()
// <-- EH
}
/**
@ -226,8 +257,26 @@ class PageView @JvmOverloads constructor(context: Context, attrs: AttributeSet?
return
}
// --> EH
val guessedType = file.openInputStream().buffered().use {
URLConnection.guessContentTypeFromStream(it)
}
// <-- EH
progress_text.visibility = View.INVISIBLE
image_view.setImage(ImageSource.uri(file.uri))
// --> EH
if(guessedType == "image/gif") {
gif_view.loadUrl(uri.toString())
gif_view.visible()
progress_container.gone()
image_view.gone()
} else {
// <-- EH
image_view.setImage(ImageSource.uri(file.uri))
// --> EH
gif_view.gone()
}
// <-- EH
}
/**
@ -236,6 +285,9 @@ class PageView @JvmOverloads constructor(context: Context, attrs: AttributeSet?
private fun setError() {
progress_container.visibility = View.GONE
retry_button.visibility = View.VISIBLE
// --> EH
gif_view.gone()
// <-- EH
}
/**

View File

@ -34,6 +34,11 @@
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<WebView
android:id="@+id/gif_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"