package com.casic.br.view import android.graphics.Color import android.util.Log import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter import com.casic.br.extensions.diffDate import com.casic.br.model.AddedDeviceModel import com.casic.br.utils.LocaleConstant 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.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues 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_base_title.* import java.util.* class AllDeviceActivity : KotlinBaseActivity() { private val kTag = "AllDeviceActivity" private val context = this@AllDeviceActivity private val deviceModels = ArrayList<AddedDeviceModel>() private lateinit var addedDeviceAdapter: AddedDeviceAdapter override fun initLayoutView(): Int = R.layout.activity_all_device override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) leftBackView.setOnClickListener { finish() } titleView.text = "全部设备" } override fun initData() { 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 deviceList: List<DeviceBean> = bean.deviceList deviceList.forEach { val model = AddedDeviceModel() model.deviceId = it.devId val deviceName = when (it.deviceCategory) { "yyj" -> "万家乐油烟机" "rs" -> "万家乐热水器" "bgl" -> "万家乐壁挂炉" else -> "万家乐燃气灶" } model.deviceName = deviceName model.isOnline = it.isOnline model.deviceImage = it.iconUrl model.deviceModel = it.name model.deviceType = it.deviceCategory model.deviceUsedTime = "已使用${it.time.toString().diffDate()}天" deviceModels.add(model) } addedDeviceAdapter = AddedDeviceAdapter(context, deviceModels) deviceRecyclerView.addItemDecoration( DividerItemDecoration(context, DividerItemDecoration.VERTICAL) ) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : AddedDeviceAdapter.OnItemClickListener { override fun onButtonClick(position: Int) { moreOperate(position) } override fun onItemClick(position: Int) { val deviceModel = deviceModels[position] when { deviceModel.deviceName.contains("热水器") -> { navigatePageTo<WaterHeaterActivity>(deviceModel.deviceId) } deviceModel.deviceName.contains("油烟机") -> { navigatePageTo<RangeHoodActivity>(deviceModel.deviceId) } deviceModel.deviceName.contains("壁挂炉") -> { navigatePageTo<FireplaceActivity>(deviceModel.deviceId) } deviceModel.deviceName.contains("燃气灶") -> { navigatePageTo<CookerActivity>(deviceModel.deviceId) } } } override fun onAddDeviceClick() { navigatePageTo<AddDeviceActivity>() } }) } override fun onError(errorCode: String?, errorMsg: String?) { } }) } private fun moreOperate(clickPosition: Int) { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("删除设备")) .setItemTextColor(Color.BLUE) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { 0 -> TuyaHomeSdk.newDeviceInstance(deviceModels[clickPosition].deviceId) .removeDevice(object : IResultCallback { override fun onError(code: String?, error: String?) { Log.d(kTag, "onError: $error") } override fun onSuccess() { deviceModels.removeAt(clickPosition) addedDeviceAdapter.notifyItemRemoved(clickPosition) addedDeviceAdapter.notifyItemRangeChanged( clickPosition, deviceModels.size - clickPosition ) } }) } } }).build().show() } override fun observeRequestState() { } override fun initEvent() { } }