package com.casic.endoscope.widgets import android.app.Dialog import android.content.Context import android.os.Bundle import android.view.View import com.casic.endoscope.R import com.casic.endoscope.databinding.DialogAddCameraPointBinding import com.pengxh.kt.lite.extensions.binding import com.pengxh.kt.lite.extensions.initDialogLayoutParams import com.pengxh.kt.lite.extensions.show class AddCameraPointDialog private constructor(builder: Builder) : Dialog( builder.context, R.style.UserDefinedDialogStyle ) { private val kTag = "AddCameraPointDialog" private val ctx = builder.context private var step = builder.step private val positiveBtn = builder.positiveBtn private val negativeBtn = builder.negativeBtn private val listener = builder.listener class Builder { lateinit var context: Context var step = 1 lateinit var positiveBtn: String lateinit var negativeBtn: String lateinit var listener: OnDialogButtonClickListener fun setContext(context: Context): Builder { this.context = context return this } fun setLastStep(step: Int): Builder { this.step = step return this } fun setPositiveButton(name: String): Builder { positiveBtn = name return this } fun setNegativeButton(name: String): Builder { negativeBtn = name return this } fun setOnDialogButtonClickListener(listener: OnDialogButtonClickListener): Builder { this.listener = listener return this } fun build(): AddCameraPointDialog { return AddCameraPointDialog(this) } } private val binding: DialogAddCameraPointBinding by binding() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) this.initDialogLayoutParams(0.3f) setContentView(R.layout.dialog_add_camera_point) setCanceledOnTouchOutside(false) initView() } private fun initView() { //默认继续排序 binding.continueStepView.isChecked = true binding.cancelButton.text = negativeBtn binding.cancelButton.setOnClickListener { listener.onCancelClick() dismiss() } binding.confirmButton.text = positiveBtn binding.confirmButton.setOnClickListener(View.OnClickListener { val hAngle: String = binding.hAngleView.text.toString().trim() if (hAngle.isBlank()) { "水平角度输入错误,请检查!".show(ctx) return@OnClickListener } val vAngle: String = binding.vAngleView.text.toString().trim() if (vAngle.isBlank()) { "垂直角度输入错误,请检查!".show(ctx) return@OnClickListener } if (binding.continueStepView.isChecked) { listener.onConfirmClick(++step, hAngle.toInt(), vAngle.toInt()) } else { listener.onConfirmClick(1, hAngle.toInt(), vAngle.toInt()) } dismiss() }) } interface OnDialogButtonClickListener { fun onConfirmClick(step: Int, hAngle: Int, vAngle: Int) fun onCancelClick() } }