package com.qidian.zhongkesmart.dialog import android.content.Context import android.content.Intent import android.graphics.Color import android.text.Editable import android.text.TextWatcher import android.view.View import android.widget.EditText import android.widget.ImageView import android.widget.LinearLayout import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.flyco.dialog.utils.CornerUtils import com.flyco.dialog.widget.base.BaseDialog import com.qidian.zhongkesmart.R import com.qidian.zhongkesmart.activity.HomeActivity import com.qidian.zhongkesmart.activity.SettingModeActivity import com.qidian.zhongkesmart.model.CommonMLocation import com.qidian.zhongkesmart.model.CommonMUse import com.qidian.zhongkesmart.utils.* import com.scwang.smartrefresh.layout.util.DensityUtil.dp2px import kotlinx.android.synthetic.main.layout_list.* import net.idik.lib.slimadapter.SlimAdapter import net.idik.lib.slimadapter.SlimInjector import net.idik.lib.slimadapter.viewinjector.IViewInjector import org.w3c.dom.Text import java.util.* import kotlin.collections.ArrayList /*发现新设备弹窗*/ class FindNewEquipmentDialog { private var callBack: PopupYearWindowCallBack? = null private var activity: Context? = null var dialog: CustomCommonDialog? = null var mChooseType = 0//默认显示设备信息 var mMac = "" var ll_setting_mode: LinearLayout? = null var tv_pop_sure: TextView? = null var tv_pop_relievebind: TextView? = null var tv_pop_cancel: TextView? = null var tv_connect_status:TextView? = null fun getShareDialog(context: Context?, mac: String, callBack: PopupYearWindowCallBack?) { activity = context this.callBack = callBack this.mMac = mac dialog = CustomCommonDialog(activity) dialog!!.widthScale(0.8f) dialog!!.show() dialog!!.setCanceledOnTouchOutside(false) } fun setDismiss() { if (dialog != null && dialog!!.isShowing) { dialog!!.dismiss() callBack!!.doDismiss() } } fun bindSuccess(){ if (dialog != null && dialog!!.isShowing) { // ll_setting_mode!!.visibility = View.VISIBLE tv_pop_relievebind!!.visibility = View.VISIBLE tv_pop_cancel!!.visibility = View.GONE tv_pop_sure!!.text = "下一步" } } fun connectSuccess(){ if (dialog != null && dialog!!.isShowing) { tv_connect_status!!.visibility = View.GONE } } fun connectFail(){ if (dialog != null && dialog!!.isShowing) { tv_connect_status!!.visibility = View.VISIBLE } } fun goSettingMode(){ setDismiss() activity!!.startActivity(Intent(activity, SettingModeActivity::class.java)) } interface PopupYearWindowCallBack { fun doWork(roomName: String?, type: String?) fun doChangeWork(roomName: String?, type: String?) fun doUnBindWork() fun doConnectTj() fun doDismiss() } inner class CustomCommonDialog(context: Context?) : BaseDialog(context) { var li_close: LinearLayout? = null var li_new_place: LinearLayout? = null var li_new_use: LinearLayout? = null var li_equipment: LinearLayout? = null var tv_pop_title: TextView? = null var tv_new_name: TextView? = null var tv_place_custom: TextView? = null var tv_place_worm: TextView? = null var tv_use_custom: TextView? = null var tv_use_worm: TextView? = null var imv_pic: ImageView? = null var tv_new_place: EditText? = null var tv_new_use: EditText? = null var recycle_options: RecyclerView? = null var mAdapter: SlimAdapter? = null var mData = ArrayList() override fun onCreateView(): View { val inflate = View.inflate(mContext, R.layout.pop_findnew, null) inflate.setBackgroundDrawable( CornerUtils.cornerDrawable(Color.parseColor("#ffffff"), dp2px(10f).toFloat()) ) li_close = inflate.findViewById(R.id.li_close) li_new_place = inflate.findViewById(R.id.li_new_place) li_new_use = inflate.findViewById(R.id.li_new_use) tv_pop_title = inflate.findViewById(R.id.tv_pop_title) tv_new_name = inflate.findViewById(R.id.tv_new_name) imv_pic = inflate.findViewById(R.id.imv_pic) tv_new_place = inflate.findViewById(R.id.tv_new_place) tv_place_custom = inflate.findViewById(R.id.tv_place_custom) tv_place_worm = inflate.findViewById(R.id.tv_place_worm) tv_new_use = inflate.findViewById(R.id.tv_new_use) tv_use_custom = inflate.findViewById(R.id.tv_use_custom) tv_use_worm = inflate.findViewById(R.id.tv_use_worm) recycle_options = inflate.findViewById(R.id.recycle_options) li_equipment = inflate.findViewById(R.id.li_equipment) //按钮 tv_pop_cancel = inflate.findViewById(R.id.tv_pop_cancel) tv_pop_relievebind = inflate.findViewById(R.id.tv_pop_relievebind) tv_pop_sure = inflate.findViewById(R.id.tv_pop_sure) ll_setting_mode = inflate.findViewById(R.id.ll_setting_mode) tv_connect_status = inflate.findViewById(R.id.tv_connect_status) //固定内容 tv_new_name!!.text = "低功耗节点Low Power" /*进入默认不能输入*/ setEdit(false, tv_new_place!!) setEdit(false, tv_new_use!!) aboutList() if (ToolUtil.isBind(activity!!, DataServer.mBindHistory, mMac)) { var model = ToolUtil.getBindBlueToothData(activity!!, DataServer.mBindHistory, mMac) tv_new_place!!.setText(model.name) tv_new_use!!.setText(model.type) } isBind() return inflate } /** * 是否绑定 */ fun isBind() { if (ToolUtil.isBind(activity!!, DataServer.mBindHistory, mMac)) { tv_pop_relievebind!!.visibility = View.VISIBLE tv_pop_cancel!!.visibility = View.GONE tv_pop_sure!!.text = "确定" tv_pop_title!!.text = "已绑定设备" } else { tv_pop_relievebind!!.visibility = View.GONE tv_pop_cancel!!.visibility = View.VISIBLE tv_pop_sure!!.text = "立即绑定" tv_pop_title!!.text = "发现新设备" } } /*设置是否可编辑*/ fun setEdit(isCan: Boolean, edittext: EditText) { edittext.isCursorVisible = isCan edittext.isFocusable = isCan edittext.setTextIsSelectable(isCan) } /*点击事件处理*/ override fun setUiBeforShow() { //选择位置 tv_new_place!!.setOnClickListener { mChooseType = 1 getTypeList() showChooseList(true) } tv_new_place!!.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged( s: CharSequence?, start: Int, count: Int, after: Int ) { } override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { } override fun afterTextChanged(s: Editable?) { if (s!!.isNotEmpty()) { InputLimitUtil.ShowEdittextStyle3( tv_new_place!!, li_new_place!!, tv_place_worm!!, "" ) } } }) //自定义 tv_place_custom!!.setOnClickListener { if (tv_place_custom!!.text.toString() == "自定义") { tv_place_custom!!.text = "选择" tv_new_place!!.hint = "请输入放置位置" setEdit(true, tv_new_place!!) } else { tv_place_custom!!.text = "自定义" setEdit(false, tv_new_place!!) tv_new_place!!.hint = "请选择放置位置" } } //选择用途 tv_new_use!!.setOnClickListener { mChooseType = 2 showChooseList(true) getLocationData(tv_new_place!!.text.toString()) } tv_new_use!!.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged( s: CharSequence?, start: Int, count: Int, after: Int ) { } override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { } override fun afterTextChanged(s: Editable?) { if (s!!.isNotEmpty()) { InputLimitUtil.ShowEdittextStyle3( tv_new_use!!, li_new_use!!, tv_use_worm!!, "" ) } } }) //自定义 tv_use_custom!!.setOnClickListener { if (tv_use_custom!!.text.toString() == "自定义") { tv_use_custom!!.text = "选择" setEdit(true, tv_new_use!!) tv_new_use!!.hint = "请输入设备用途" } else { tv_use_custom!!.text = "自定义" tv_new_use!!.isEnabled = false setEdit(false, tv_new_use!!) tv_new_use!!.hint = "请选择设备用途" } } //立即绑定+确定 tv_pop_sure!!.setOnClickListener { if (tv_pop_sure!!.text == "立即绑定") { if (tv_new_place!!.text!!.isEmpty() || tv_new_use!!.text!!.isEmpty()) { if (tv_new_place!!.text!!.isEmpty()) { InputLimitUtil.ShowEdittextStyle3( tv_new_place!!, li_new_place!!, tv_place_worm!!, "请选择放置位置" ) } if (tv_new_use!!.text!!.isEmpty()) { InputLimitUtil.ShowEdittextStyle3( tv_new_use!!, li_new_use!!, tv_use_worm!!, "请选择设备用途" ) } return@setOnClickListener } callBack!!.doWork(tv_new_place!!.text.toString(), tv_new_use!!.text.toString()) }else if(tv_pop_sure!!.text == "返回"){ callBack!!.doDismiss() dismiss() }else if(tv_pop_sure!!.text == "下一步"){ callBack!!.doConnectTj() } else {//确定 修改 if (tv_new_place!!.text!!.isEmpty() || tv_new_use!!.text!!.isEmpty()) { if (tv_new_place!!.text!!.isEmpty()) { InputLimitUtil.ShowEdittextStyle3( tv_new_place!!, li_new_place!!, tv_place_worm!!, "请选择放置位置" ) } if (tv_new_use!!.text!!.isEmpty()) { InputLimitUtil.ShowEdittextStyle3( tv_new_use!!, li_new_use!!, tv_use_worm!!, "请选择设备用途" ) } return@setOnClickListener } callBack!!.doChangeWork(tv_new_place!!.text.toString(), tv_new_use!!.text.toString()) // dismiss() } } li_close!!.setOnClickListener { if (mChooseType != 0) { showChooseList(false) } else { callBack!!.doDismiss() dismiss() } } //取消 tv_pop_cancel!!.setOnClickListener { if (mChooseType != 0) { showChooseList(false) } else { callBack!!.doDismiss() dismiss() } } //解除绑定 tv_pop_relievebind!!.setOnClickListener { callBack!!.doUnBindWork() } //配置模式 ll_setting_mode!!.setOnClickListener{ callBack!!.doConnectTj() } } /*选择位置+用途*/ fun aboutList() { LoadUtils.setLinearLayoutManager(activity, recycle_options, false) mAdapter = SlimAdapter.create() //位置 .register( R.layout.item_text, object : SlimInjector { override fun onInject( data: CommonMLocation, injector: IViewInjector> ) { injector.text(R.id.tv_text, data.name) injector.with(R.id.tv_text) { //选中变色效果暂未实现 if (data.check == 1) { it.setBackgroundColor(activity!!.resources.getColor(R.color.color_516AFC)) it.setTextColor(activity!!.resources.getColor(R.color.white)) } else { it.setBackgroundColor(activity!!.resources.getColor(R.color.white)) it.setTextColor(activity!!.resources.getColor(R.color.color_999999)) } } injector.clicked(R.id.li_text) { if (mChooseType == 1) { tv_new_place!!.setText(data.name) // tv_new_use!!.setText("") } else if (mChooseType == 2) { tv_new_use!!.setText(data.name) } showChooseList(false) } } }) .attachTo(recycle_options) } //位置数据 fun getTypeList() { mData.clear() DataServer.TJLocation.forEach { var bean = CommonMLocation(it, 0) mData.add(bean) } mAdapter!!.updateData(mData).notifyDataSetChanged() } //用途数据 fun getLocationData(type: String) { mData.clear() DataServer.TJUse.forEach { var bean = CommonMLocation(it, 0) mData.add(bean) } mAdapter!!.updateData(mData).notifyDataSetChanged() } fun getData(list: Array) { list.forEach { var bean = CommonMLocation(it, 0) mData.add(bean) } } /*显示界面按断*/ fun showChooseList(isShow: Boolean) { if (isShow) { //按钮 tv_pop_cancel!!.visibility = View.VISIBLE tv_pop_sure!!.visibility = View.VISIBLE tv_pop_sure!!.text = "确定" tv_pop_relievebind!!.visibility = View.GONE //布局样式 recycle_options!!.visibility = View.VISIBLE li_equipment!!.visibility = View.GONE } else { recycle_options!!.visibility = View.GONE li_equipment!!.visibility = View.VISIBLE //按钮--现在只考虑未绑定状态 isBind() /* tv_pop_cancel!!.visibility = View.GONE tv_pop_sure!!.visibility = View.VISIBLE tv_pop_sure!!.text = "立即绑定" tv_pop_relievebind!!.visibility = View.GONE*/ mChooseType = 0 } when (mChooseType) { 0 -> { tv_pop_title!!.text = "发现新设备" } 1 -> { tv_pop_title!!.text = "选择位置" } 2 -> { tv_pop_title!!.text = "选择用途" } } } } companion object { private var popupWindowPrivinceListUtils: FindNewEquipmentDialog? = null @get:Synchronized val instance: FindNewEquipmentDialog? get() { if (popupWindowPrivinceListUtils == null) { popupWindowPrivinceListUtils = FindNewEquipmentDialog() } return popupWindowPrivinceListUtils } } }