package com.casic.endoscope.widgets
import android.app.Dialog
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import com.bumptech.glide.Glide
import com.casic.endoscope.R
import com.casic.endoscope.databinding.DialogPreviewImageBinding
import com.pengxh.kt.lite.extensions.binding
import com.pengxh.kt.lite.extensions.getScreenHeight
import com.pengxh.kt.lite.extensions.getScreenWidth
class PreviewImageDialog private constructor(builder: Builder) : Dialog(
builder.context, R.style.UserDefinedDialogStyle
) {
private val imagePath = builder.imagePath
class Builder {
lateinit var context: Context
lateinit var imagePath: String
fun setContext(context: Context): Builder {
this.context = context
return this
}
fun setImagePath(imagePath: String): Builder {
this.imagePath = imagePath
return this
}
fun build(): PreviewImageDialog {
return PreviewImageDialog(this)
}
}
private val binding: DialogPreviewImageBinding by binding()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
this.initDialogLayoutParams()
setContentView(R.layout.dialog_preview_image)
setCancelable(true)
setCanceledOnTouchOutside(true)
if (imagePath.isBlank()) {
return
}
Glide.with(context).load(imagePath).into(binding.photoView)
}
private fun Dialog.initDialogLayoutParams() {
val window = this.window ?: return
window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
window.decorView.setBackgroundColor(Color.TRANSPARENT)
val params = window.attributes
params.width = ((context.getScreenWidth() * 0.65).toInt())
params.height = ((context.getScreenHeight() * 0.58).toInt())
window.attributes = params
}
}