Newer
Older
Endoscope / app / src / main / java / com / casic / endoscope / widgets / AddCameraPointDialog.kt
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()
    }
}