package com.casic.smarttube.view import android.view.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.DialogManager import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter 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.extensions.show 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 dialogManager: DialogManager 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) dialogManager = DialogManager.obtainInstance(this) 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) { } }) } //TODO 描述 //TODO 图片 // if (orderDetail.firstStatePhotos.toString().isBlank()) { // imageGridView.visibility = View.GONE // } else { // imageGridView.visibility = View.VISIBLE // //处理图片地址 // val urls: ArrayList<String> = ArrayList() // val imageArray = orderDetail.firstStatePhotos.toString().split(",") // imageArray.forEach { path -> // if (path.isNotBlank()) { // urls.add(path.combineImagePath()) // } // } // val imageAdapter = ReadOnlyImageAdapter(this) // imageAdapter.setImageList(urls) // imageGridView.adapter = imageAdapter // imageGridView.setOnItemClickListener { _, _, position, _ -> // if (urls[position].isEmpty()) { // "图片加载失败,无法查看大图".show(this) // } else { // navigatePageTo<BigImageActivity>(position, urls) // } // } // } 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 -> dialogManager.showLoadingDialog("数据加载中...") else -> dialogManager.dismissLoadingDialog() } }) } override fun initEvent() { } }