Initial commit

This commit is contained in:
Finnley Somdahl 2023-10-17 18:42:43 -05:00
commit 21bfbfb139
520 changed files with 47819 additions and 0 deletions

View file

@ -0,0 +1,131 @@
package ani.dantotsu.others
import android.animation.ObjectAnimator
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.lifecycleScope
import ani.dantotsu.BottomSheetDialogFragment
import ani.dantotsu.FileUrl
import ani.dantotsu.R
import ani.dantotsu.databinding.BottomSheetImageBinding
import ani.dantotsu.media.manga.mangareader.BaseImageAdapter.Companion.loadBitmap
import ani.dantotsu.media.manga.mangareader.BaseImageAdapter.Companion.mergeBitmap
import ani.dantotsu.openLinkInBrowser
import ani.dantotsu.saveImageToDownloads
import ani.dantotsu.setSafeOnClickListener
import ani.dantotsu.shareImage
import ani.dantotsu.snackString
import ani.dantotsu.toast
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation
import com.davemorrissey.labs.subscaleview.ImageSource
import kotlinx.coroutines.launch
class ImageViewDialog : BottomSheetDialogFragment() {
private var _binding: BottomSheetImageBinding? = null
private val binding get() = _binding!!
private var reload = false
private var _title: String? = null
private var _image: FileUrl? = null
private var _image2: FileUrl? = null
var onReloadPressed: ((ImageViewDialog) -> Unit)? = null
var trans1: List<BitmapTransformation>? = null
var trans2: List<BitmapTransformation>? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
_title = it.getString("title")?.replace(Regex("[\\\\/:*?\"<>|]"), "")
reload = it.getBoolean("reload")
_image = it.getSerialized("image")!!
_image2 = it.getSerialized("image2")
}
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
_binding = BottomSheetImageBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val (title, image, image2) = Triple(_title, _image, _image2)
if (image == null || title == null) {
dismiss()
snackString(getString(R.string.error_getting_image_data))
return
}
if (reload) {
binding.bottomImageReload.visibility = View.VISIBLE
binding.bottomImageReload.setSafeOnClickListener {
onReloadPressed?.invoke(this)
}
}
binding.bottomImageTitle.text = title
binding.bottomImageReload.setOnLongClickListener {
openLinkInBrowser(image.url)
if (image2 != null) openLinkInBrowser(image2.url)
true
}
lifecycleScope.launch {
val binding = _binding ?: return@launch
var bitmap = requireContext().loadBitmap(image, trans1 ?: listOf())
val bitmap2 = if (image2 != null) requireContext().loadBitmap(image2, trans2 ?: listOf()) else null
bitmap = if (bitmap2 != null && bitmap != null) mergeBitmap(bitmap, bitmap2,) else bitmap
if (bitmap != null) {
binding.bottomImageShare.isEnabled = true
binding.bottomImageSave.isEnabled = true
binding.bottomImageSave.setOnClickListener {
saveImageToDownloads(title, bitmap, requireActivity())
}
binding.bottomImageShare.setOnClickListener {
shareImage(title, bitmap, requireContext())
}
binding.bottomImageView.setImage(ImageSource.cachedBitmap(bitmap))
ObjectAnimator.ofFloat(binding.bottomImageView, "alpha", 0f, 1f).setDuration(400L).start()
binding.bottomImageProgress.visibility = View.GONE
} else {
toast(context?.getString(R.string.loading_image_failed))
binding.bottomImageNo.visibility = View.VISIBLE
binding.bottomImageProgress.visibility = View.GONE
}
}
}
override fun onDestroy() {
_binding = null
super.onDestroy()
}
companion object {
fun newInstance(title: String, image: FileUrl, showReload: Boolean = false, image2: FileUrl?) = ImageViewDialog().apply {
arguments = Bundle().apply {
putString("title", title)
putBoolean("reload", showReload)
putSerializable("image", image)
putSerializable("image2", image2)
}
}
fun newInstance(activity: FragmentActivity, title: String?, image: String?): Boolean {
ImageViewDialog().apply {
arguments = Bundle().apply {
putString("title", title ?: return false)
putSerializable("image", FileUrl(image ?: return false))
}
show(activity.supportFragmentManager, "image")
}
return true
}
}
}