package com.casic.br.fragment import android.graphics.Color import android.graphics.Typeface import android.os.Handler import android.util.Log import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.extensions.selectCategory import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.view.AddDeviceActivity import com.casic.br.view.AllDeviceActivity import com.casic.br.view.device.* import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.tuya.smart.home.sdk.TuyaHomeSdk import com.tuya.smart.home.sdk.bean.HomeBean import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback import com.tuya.smart.sdk.api.IResultCallback import com.tuya.smart.sdk.bean.DeviceBean import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* class DevicePageFragment : KotlinBaseFragment() { private val kTag = "DevicePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var addedDeviceAdapter: AddedDeviceAdapter private var dataBeans: MutableList<DeviceBean> = ArrayList() private var isRefresh = false override fun initLayoutView(): Int = R.layout.fragment_device override fun setupTopBarLayout() { requireContext().initLayoutImmersionBar(rootView) leftTitleView.text = "设备" leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD) } override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) //TODO 热门推荐 val imageArray = arrayOf( "https://img.alicdn.com/imgextra/i1/810471546/O1CN01zwi8SS1NI76hAXxOh_!!810471546.jpg", "https://img.alicdn.com/imgextra/i1/810471546/O1CN01dBqH051NI76dqVg8e_!!810471546.jpg", "https://img.alicdn.com/imgextra/i4/810471546/O1CN01NJ4Xh81NI76ZuU7lh_!!810471546.jpg" ) val recommendModels = ArrayList<RecommendModel>() for (i in 0..2) { val model = RecommendModel() model.imageLink = imageArray[i] recommendModels.add(model) } val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) recommendRecyclerView.adapter = recommendAdapter recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { override fun onItemClick(position: Int) { } }) } override fun observeRequestState() { } override fun initEvent() { showAllDeviceButton.setOnClickListener { requireContext().navigatePageTo<AllDeviceActivity>() } } override fun onResume() { super.onResume() TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId()) .getHomeDetail(object : ITuyaHomeResultCallback { override fun onSuccess(bean: HomeBean) { val deviceModels = bean.deviceList when { isRefresh -> { dataBeans.clear() dataBeans = deviceModels isRefresh = false } else -> { dataBeans = deviceModels } } weakReferenceHandler.sendEmptyMessage(2022091901) } override fun onError(errorCode: String, errorMsg: String) { Log.d(kTag, "onError: $errorMsg") } }) } private val callback = Handler.Callback { if (it.what == 2022091901) { if (isRefresh) { addedDeviceAdapter.notifyDataSetChanged() } else { addedDeviceAdapter = AddedDeviceAdapter(requireContext(), dataBeans) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : AddedDeviceAdapter.OnItemClickListener { override fun onAddDeviceClick() { requireContext().navigatePageTo<AddDeviceActivity>() } override fun onItemClick(position: Int) { // 需要根据设备类型显示不同的页面 val deviceModel = dataBeans[position] val selectedCategory = deviceModel.selectCategory() Log.d(kTag, "设备类型: $selectedCategory") when (selectedCategory) { "rs" -> { //热水器 requireContext().navigatePageTo<WaterHeaterActivity>(deviceModel.devId) } "yyj" -> { //油烟机 requireContext().navigatePageTo<RangeHoodActivity>(deviceModel.devId) } "bgl" -> { //壁挂炉 requireContext().navigatePageTo<FireplaceActivity>(deviceModel.devId) } "rq" -> { //燃气灶 requireContext().navigatePageTo<CookerActivity>(deviceModel.devId) } "pc" -> { //排插 requireContext().navigatePageTo<PowerStripActivity>(deviceModel.devId) } "cz" -> { //插座 requireContext().navigatePageTo<SingleStripActivity>(deviceModel.devId) } "wg2" -> { //网关 requireContext().navigatePageTo<SmartGatewayActivity>( deviceModel.devId ) } //TODO 人体传感器设备类型待确认 "0204" -> { //人体传感器 requireContext().navigatePageTo<MotionSensorActivity>() } "wsdcg" -> { //温湿度传感器 requireContext().navigatePageTo<TAndHSensorActivity>() } "ywbj" -> { //火灾报警器 requireContext().navigatePageTo<FireSensorActivity>() } "rqbj" -> { //燃气报警器 requireContext().navigatePageTo<GasSensorActivity>() } "cobj" -> { //一氧化碳报警器 requireContext().navigatePageTo<CoSensorActivity>() } "yinsj" -> { //即热式台式饮水机 requireContext().navigatePageTo<WaterDispenserActivity>(deviceModel.devId) } "kj" -> { //空气净化器 requireContext().navigatePageTo<AirCleanerActivity>(deviceModel.devId) } } } override fun onButtonClick(position: Int) { moreOperate(position) } }) } } true } private fun moreOperate(clickPosition: Int) { BottomActionSheet.Builder() .setContext(requireContext()) .setActionItemTitle(arrayListOf("删除设备")) .setItemTextColor(Color.BLUE) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { 0 -> TuyaHomeSdk.newDeviceInstance(dataBeans[clickPosition].devId) .removeDevice(object : IResultCallback { override fun onError(code: String?, error: String?) { Log.d(kTag, "onError: $error") } override fun onSuccess() { dataBeans.removeAt(clickPosition) addedDeviceAdapter.notifyItemRemoved(clickPosition) addedDeviceAdapter.notifyItemRangeChanged( clickPosition, dataBeans.size - clickPosition ) } }) } } }).build().show() } }