Newer
Older
SmartKitchen / app / src / main / java / com / casic / br / view / AllDeviceActivity.kt
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() {

    }
}