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.utils.LocaleConstant import com.casic.br.view.AddDeviceActivity import com.casic.br.view.AllDeviceActivity import com.casic.br.view.LoginActivity import com.casic.br.view.device.CookerActivity import com.casic.br.view.device.FireplaceActivity import com.casic.br.view.device.RangeHoodActivity import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues 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 recommendModels = ArrayList<RecommendModel>() for (i in 0..2) { val model = RecommendModel() model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" 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() val homeId = SaveKeyValues.getValue(LocaleConstant.HOME_ID, "") as String if (homeId == "") { Log.e(kTag, "homeId is null") return } TuyaHomeSdk.newHomeInstance(homeId.toLong()) .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() { if (DeserializeModel.isLogin()) { requireContext().navigatePageTo<AddDeviceActivity>() } else { requireContext().navigatePageTo<LoginActivity>() } } override fun onItemClick(position: Int) { // 需要根据设备类型显示不同的页面 if (DeserializeModel.isLogin()) { val deviceModel = dataBeans[position] when { deviceModel.selectCategory().contains("rs") -> { requireContext().navigatePageTo<WaterHeaterActivity>(deviceModel.devId) } deviceModel.selectCategory().contains("yyj") -> { requireContext().navigatePageTo<RangeHoodActivity>(deviceModel.devId) } deviceModel.selectCategory().contains("bgl") -> { requireContext().navigatePageTo<FireplaceActivity>(deviceModel.devId) } deviceModel.selectCategory().contains("rqz") -> { requireContext().navigatePageTo<CookerActivity>(deviceModel.devId) } deviceModel.selectCategory().contains("wg2") -> { } } } else { requireContext().navigatePageTo<LoginActivity>() } } override fun onButtonClick(position: Int) { if (DeserializeModel.isLogin()) { moreOperate(position) } else { requireContext().navigatePageTo<LoginActivity>() } } }) } } 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() } }