|
|
|
@ -5,32 +5,40 @@ import android.content.Intent
|
|
|
|
import android.graphics.drawable.Drawable
|
|
|
|
import android.graphics.drawable.Drawable
|
|
|
|
import android.net.Uri
|
|
|
|
import android.net.Uri
|
|
|
|
import android.os.Bundle
|
|
|
|
import android.os.Bundle
|
|
|
|
|
|
|
|
import android.view.View
|
|
|
|
import android.view.ViewGroup
|
|
|
|
import android.view.ViewGroup
|
|
|
|
import androidx.core.graphics.Insets
|
|
|
|
import androidx.core.graphics.Insets
|
|
|
|
import androidx.core.graphics.drawable.toBitmap
|
|
|
|
import androidx.core.graphics.drawable.toBitmap
|
|
|
|
|
|
|
|
import androidx.core.view.isVisible
|
|
|
|
import androidx.core.view.updateLayoutParams
|
|
|
|
import androidx.core.view.updateLayoutParams
|
|
|
|
import androidx.core.view.updatePadding
|
|
|
|
import androidx.core.view.updatePadding
|
|
|
|
import coil.ImageLoader
|
|
|
|
import coil.ImageLoader
|
|
|
|
import coil.request.CachePolicy
|
|
|
|
import coil.request.CachePolicy
|
|
|
|
|
|
|
|
import coil.request.ErrorResult
|
|
|
|
import coil.request.ImageRequest
|
|
|
|
import coil.request.ImageRequest
|
|
|
|
|
|
|
|
import coil.request.SuccessResult
|
|
|
|
import coil.target.ViewTarget
|
|
|
|
import coil.target.ViewTarget
|
|
|
|
import com.davemorrissey.labs.subscaleview.ImageSource
|
|
|
|
import com.davemorrissey.labs.subscaleview.ImageSource
|
|
|
|
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
|
|
|
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
|
|
|
import dagger.hilt.android.AndroidEntryPoint
|
|
|
|
import dagger.hilt.android.AndroidEntryPoint
|
|
|
|
import org.koitharu.kotatsu.core.ui.BaseActivity
|
|
|
|
import org.koitharu.kotatsu.core.ui.BaseActivity
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.enqueueWith
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.enqueueWith
|
|
|
|
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.getDisplayIcon
|
|
|
|
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.getDisplayMessage
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.getSerializableExtraCompat
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.getSerializableExtraCompat
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.indicator
|
|
|
|
|
|
|
|
import org.koitharu.kotatsu.databinding.ActivityImageBinding
|
|
|
|
import org.koitharu.kotatsu.databinding.ActivityImageBinding
|
|
|
|
|
|
|
|
import org.koitharu.kotatsu.databinding.ItemErrorStateBinding
|
|
|
|
import org.koitharu.kotatsu.parsers.model.MangaSource
|
|
|
|
import org.koitharu.kotatsu.parsers.model.MangaSource
|
|
|
|
import javax.inject.Inject
|
|
|
|
import javax.inject.Inject
|
|
|
|
|
|
|
|
|
|
|
|
@AndroidEntryPoint
|
|
|
|
@AndroidEntryPoint
|
|
|
|
class ImageActivity : BaseActivity<ActivityImageBinding>() {
|
|
|
|
class ImageActivity : BaseActivity<ActivityImageBinding>(), ImageRequest.Listener, View.OnClickListener {
|
|
|
|
|
|
|
|
|
|
|
|
@Inject
|
|
|
|
@Inject
|
|
|
|
lateinit var coil: ImageLoader
|
|
|
|
lateinit var coil: ImageLoader
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private var errorBinding: ItemErrorStateBinding? = null
|
|
|
|
|
|
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
|
super.onCreate(savedInstanceState)
|
|
|
|
super.onCreate(savedInstanceState)
|
|
|
|
setContentView(ActivityImageBinding.inflate(layoutInflater))
|
|
|
|
setContentView(ActivityImageBinding.inflate(layoutInflater))
|
|
|
|
@ -53,14 +61,40 @@ class ImageActivity : BaseActivity<ActivityImageBinding>() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun onClick(v: View?) {
|
|
|
|
|
|
|
|
loadImage(intent.data)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun onError(request: ImageRequest, result: ErrorResult) {
|
|
|
|
|
|
|
|
viewBinding.progressBar.hide()
|
|
|
|
|
|
|
|
with(errorBinding ?: ItemErrorStateBinding.bind(viewBinding.stubError.inflate())) {
|
|
|
|
|
|
|
|
errorBinding = this
|
|
|
|
|
|
|
|
root.isVisible = true
|
|
|
|
|
|
|
|
textViewError.text = result.throwable.getDisplayMessage(resources)
|
|
|
|
|
|
|
|
textViewError.setCompoundDrawablesWithIntrinsicBounds(0, result.throwable.getDisplayIcon(), 0, 0)
|
|
|
|
|
|
|
|
buttonRetry.isVisible = true
|
|
|
|
|
|
|
|
buttonRetry.setOnClickListener(this@ImageActivity)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun onStart(request: ImageRequest) {
|
|
|
|
|
|
|
|
viewBinding.progressBar.show()
|
|
|
|
|
|
|
|
(errorBinding?.root ?: viewBinding.stubError).isVisible = false
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun onSuccess(request: ImageRequest, result: SuccessResult) {
|
|
|
|
|
|
|
|
viewBinding.progressBar.hide()
|
|
|
|
|
|
|
|
(errorBinding?.root ?: viewBinding.stubError).isVisible = false
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private fun loadImage(url: Uri?) {
|
|
|
|
private fun loadImage(url: Uri?) {
|
|
|
|
ImageRequest.Builder(this)
|
|
|
|
ImageRequest.Builder(this)
|
|
|
|
.data(url)
|
|
|
|
.data(url)
|
|
|
|
.memoryCachePolicy(CachePolicy.DISABLED)
|
|
|
|
.memoryCachePolicy(CachePolicy.DISABLED)
|
|
|
|
.lifecycle(this)
|
|
|
|
.lifecycle(this)
|
|
|
|
|
|
|
|
.listener(this)
|
|
|
|
.tag(intent.getSerializableExtraCompat<MangaSource>(EXTRA_SOURCE))
|
|
|
|
.tag(intent.getSerializableExtraCompat<MangaSource>(EXTRA_SOURCE))
|
|
|
|
.target(SsivTarget(viewBinding.ssiv))
|
|
|
|
.target(SsivTarget(viewBinding.ssiv))
|
|
|
|
.indicator(viewBinding.progressBar)
|
|
|
|
|
|
|
|
.enqueueWith(coil)
|
|
|
|
.enqueueWith(coil)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|