diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index e5d0272..642f7ed 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -1,5 +1,6 @@ package com.casic.br.fragment +import android.graphics.Color import android.graphics.Typeface import android.os.Handler import android.util.Log @@ -23,9 +24,11 @@ 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.* @@ -169,11 +172,43 @@ } override fun onButtonClick(position: Int) { - + if (DeserializeModel.isLogin()) { + moreOperate(position) + } else { + requireContext().navigatePageTo() + } } }) } } 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].deviceId) + .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() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index e5d0272..642f7ed 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -1,5 +1,6 @@ package com.casic.br.fragment +import android.graphics.Color import android.graphics.Typeface import android.os.Handler import android.util.Log @@ -23,9 +24,11 @@ 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.* @@ -169,11 +172,43 @@ } override fun onButtonClick(position: Int) { - + if (DeserializeModel.isLogin()) { + moreOperate(position) + } else { + requireContext().navigatePageTo() + } } }) } } 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].deviceId) + .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() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt index a94710e..10ed4be 100644 --- a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt +++ b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt @@ -1,20 +1,40 @@ 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.show +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() + private lateinit var addedDeviceAdapter: AddedDeviceAdapter + override fun initLayoutView(): Int = R.layout.activity_all_device override fun setupTopBarLayout() { @@ -26,37 +46,99 @@ } override fun initData() { - //TODO 模拟数据 - val deviceModels = ArrayList() - for (i in 0..9) { - val model = AddedDeviceModel() - model.deviceName = "*****热水器" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - - deviceModels.add(model) + val homeId = SaveKeyValues.getValue(LocaleConstant.HOME_ID, "") as String + if (homeId == "") { + Log.e(kTag, "homeId is null") + return } - val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels) - deviceRecyclerView.addItemDecoration( - DividerItemDecoration(this, DividerItemDecoration.VERTICAL) - ) - deviceRecyclerView.adapter = addedDeviceAdapter - addedDeviceAdapter.setOnItemClickListener(object : - AddedDeviceAdapter.OnItemClickListener { + TuyaHomeSdk.newHomeInstance(homeId.toLong()) + .getHomeDetail(object : ITuyaHomeResultCallback { + override fun onSuccess(bean: HomeBean) { + val deviceList: List = 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 onButtonClick(position: Int) { + override fun onItemClick(position: Int) { + val deviceModel = deviceModels[position] + when { + deviceModel.deviceName.contains("热水器") -> { + navigatePageTo(deviceModel.deviceId) + } + deviceModel.deviceName.contains("油烟机") -> { + navigatePageTo(deviceModel.deviceId) + } + deviceModel.deviceName.contains("壁挂炉") -> { + navigatePageTo(deviceModel.deviceId) + } + deviceModel.deviceName.contains("燃气灶") -> { + navigatePageTo(deviceModel.deviceId) + } + } + } - } + override fun onAddDeviceClick() { + navigatePageTo() + } + }) + } - override fun onItemClick(position: Int) { - //TODO 需要根据设备类型显示不同的页面 - val deviceModel = deviceModels[position] - deviceModel.deviceName.show(this@AllDeviceActivity) - } + override fun onError(errorCode: String?, errorMsg: String?) { - override fun onAddDeviceClick() { + } + }) + } - } - }) + 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() {