package com.casic.smarttube.view
import androidx.lifecycle.ViewModelProvider
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
import com.casic.smarttube.utils.DialogHelper
import com.casic.smarttube.vm.DeviceViewModel
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
import com.pengxh.kt.lite.vm.LoadState
import kotlinx.android.synthetic.main.activity_device_detail.*
import kotlinx.android.synthetic.main.include_base_title.*
class DeviceDetailActivity : KotlinBaseActivity() {
private lateinit var deviceViewModel: DeviceViewModel
private val geocoderSearch by lazy { GeocodeSearch(this) }
override fun initLayoutView(): Int = R.layout.activity_device_detail
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(false).init()
ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
titleView.text = "设备详情"
leftBackView.setOnClickListener { finish() }
}
override fun initData() {
val tubeId = intent.getStringExtra(Constant.INTENT_PARAM)!!
deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
deviceViewModel.obtainDeviceDetail(tubeId)
deviceViewModel.deviceDetailModel.observe(this, {
if (it.code == 200) {
val device = it.data
deviceCodeView.text = device.devcode
deviceNameView.text = device.deviceName
projectGroupView.text = String.format("项目${device.groupId}")
if (device.latGaode.isBlank() || device.lngGaode.isBlank()) {
locationView.text = "经纬度异常,无法查看具体位置"
} else {
val queryParam = RegeocodeQuery(
LatLonPoint(device.latGaode.toDouble(), device.lngGaode.toDouble()),
200f,
GeocodeSearch.AMAP
)
geocoderSearch.getFromLocationAsyn(queryParam)
geocoderSearch.setOnGeocodeSearchListener(object :
GeocodeSearch.OnGeocodeSearchListener {
override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
if (rCode == 1000) {
locationView.text = result?.regeocodeAddress?.formatAddress
}
}
override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
}
})
}
densityView.text = device.stregnth
lastDataView.text = device.uptime
deviceStateView.text = if (device.onlineState == "0") {
"离线"
} else {
"在线"
}
deviceRsrpView.text = device.rsrp
deviceBatteryView.text = device.cell
}
})
deviceViewModel.loadState.observe(this, {
when (it) {
LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中...")
else -> DialogHelper.dismissLoadingDialog()
}
})
}
override fun initEvent() {
}
}