Newer
Older
CasicSmartTube / app / src / main / java / com / casic / smarttube / view / DeviceDetailActivity.kt
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() {

    }
}