Dantotsu/app/src/main/java/ani/dantotsu/others/CustomBottomDialog.kt
Finnley Somdahl afa960c808 reformat
2023-12-01 01:22:15 -06:00

106 lines
No EOL
3.2 KiB
Kotlin

package ani.dantotsu.others
import android.graphics.Color
import android.os.Bundle
import android.util.TypedValue
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import ani.dantotsu.BottomSheetDialogFragment
import ani.dantotsu.databinding.BottomSheetCustomBinding
open class CustomBottomDialog : BottomSheetDialogFragment() {
private var _binding: BottomSheetCustomBinding? = null
private val binding get() = _binding!!
private val viewList = mutableListOf<View>()
fun addView(view: View) {
viewList.add(view)
}
var title: String? = null
fun setTitleText(string: String) {
title = string
}
private var checkText: String? = null
private var checkChecked: Boolean = false
private var checkCallback: ((Boolean) -> Unit)? = null
fun setCheck(text: String, checked: Boolean, callback: ((Boolean) -> Unit)) {
checkText = text
checkChecked = checked
checkCallback = callback
}
private var negativeText: String? = null
private var negativeCallback: (() -> Unit)? = null
fun setNegativeButton(text: String, callback: (() -> Unit)) {
negativeText = text
negativeCallback = callback
}
private var positiveText: String? = null
private var positiveCallback: (() -> Unit)? = null
fun setPositiveButton(text: String, callback: (() -> Unit)) {
positiveText = text
positiveCallback = callback
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = BottomSheetCustomBinding.inflate(inflater, container, false)
val window = dialog?.window
window?.statusBarColor = Color.TRANSPARENT
val typedValue = TypedValue()
val theme = requireContext().theme
theme.resolveAttribute(com.google.android.material.R.attr.colorSurface, typedValue, true)
window?.navigationBarColor = typedValue.data
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
binding.bottomSheerCustomTitle.text = title
viewList.forEach {
binding.bottomDialogCustomContainer.addView(it)
}
if (checkText != null) binding.bottomDialogCustomCheckBox.apply {
visibility = View.VISIBLE
text = checkText
isChecked = checkChecked
setOnCheckedChangeListener { _, checked ->
checkCallback?.invoke(checked)
}
}
if (negativeText != null) binding.bottomDialogCustomNegative.apply {
visibility = View.VISIBLE
text = negativeText
setOnClickListener {
negativeCallback?.invoke()
}
}
if (positiveText != null) binding.bottomDialogCustomPositive.apply {
visibility = View.VISIBLE
text = positiveText
setOnClickListener {
positiveCallback?.invoke()
}
}
}
override fun onDestroy() {
_binding = null
super.onDestroy()
}
companion object {
fun newInstance() = CustomBottomDialog()
}
}