[状态栏]优化循迹/算路处理逻辑

This commit is contained in:
renwj
2022-09-06 18:07:27 +08:00
parent 52fa106101
commit e04d3b8d95
2 changed files with 88 additions and 9 deletions

View File

@@ -145,7 +145,25 @@ class CanStatus(var enabled: Boolean = false): Status() {
*/
class TracingStatus(var state: Tracing = UNKNOWN): Status() {
enum class Tracing(val code: String? = "") {
enum class Tracing(val code: String? = "", var extra: Map<String, String>? = null) {
/**
* 类型切换
*/
MAP_TRA_TYPE("IMAP_TRA_TYPE"),
/**
* 地图数据存在
*/
MAP_DATA_EXIST("IMAP_DATA_EXIST"),
/**
* 地图数据不存在
*/
MAP_DATA_NOT_EXIST("EMAP_DATA_NOT_EXIST"),
/**
* 寻迹-已找到轨迹文件
*/
@@ -213,13 +231,50 @@ class TracingStatus(var state: Tracing = UNKNOWN): Status() {
}
fun String.toState(): Tracing? {
return when(this) {
"IMAP_TRA_EXIST" -> TRACK_FINDED
"IMAP_TRA_LOADED" -> TRACK_LOADED
"EMAP_TRA_NOT_EXIST" -> TRACK_NOT_EXIST
"EMAP_TRA_LOAD_FAILED" -> TRACK_LOAD_FAIL
"IMAP_TRA_ROUTING" -> ROUTE_LOADED
val ss = split("|")
var code = ""
if (ss.isNotEmpty()) {
code = ss[0]
}
var extra: Map<String, String>? = null
if (ss.size > 1) {
val sb = StringBuilder()
for (i in 1 until ss.size) {
sb.append(ss[i])
sb.append(",")
}
if (sb.isNotEmpty()) {
sb.setLength(sb.length - 1)
}
extra = mutableMapOf("extra" to sb.toString())
}
return when(code) {
"IMAP_TRA_EXIST" -> TRACK_FINDED.apply {
this.extra = extra
}
"IMAP_TRA_LOADED" -> TRACK_LOADED.apply {
this.extra = extra
}
"EMAP_TRA_NOT_EXIST" -> TRACK_NOT_EXIST.apply {
this.extra = extra
}
"EMAP_TRA_LOAD_FAILED" -> TRACK_LOAD_FAIL.apply {
this.extra = extra
}
"IMAP_TRA_ROUTING" -> ROUTE_LOADED.apply {
this.extra = extra
}
"EMAP_HADMAP_ENGINE_NO_ROUTING_INFO" -> ROUTE_FAILED
"IMAP_TRA_TYPE" -> MAP_TRA_TYPE.apply {
this.extra = extra
}
"MAP_DATA_EXIST" -> MAP_DATA_EXIST.apply {
this.extra = extra
}
"MAP_DATA_NOT_EXIST" -> MAP_DATA_NOT_EXIST.apply {
this.extra = extra
}
else -> null
}
}

View File

@@ -6,6 +6,7 @@ import android.widget.*
import androidx.core.content.*
import androidx.recyclerview.widget.*
import com.mogo.eagle.core.utilcode.kotlin.*
import com.mogo.eagle.core.utilcode.mogo.logger.*
import com.mogo.eagle.core.utilcode.util.*
import com.zhjt.mogo_core_function_devatools.*
import com.zhjt.mogo_core_function_devatools.R
@@ -19,6 +20,10 @@ import kotlinx.coroutines.*
internal class StatusAdapter(val ctx: Context, var data: ArrayList<Status>): RecyclerView.Adapter<StatusViewHolder>() {
companion object {
const val TAG = "StatusAdapter"
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): StatusViewHolder =
StatusViewHolder(LayoutInflater.from(ctx).inflate(R.layout.layout_status_bar_item, parent, false))
@@ -69,7 +74,7 @@ internal class StatusAdapter(val ctx: Context, var data: ArrayList<Status>): Rec
}
is TracingStatus -> {
when(status.state) {
ROUTE_FAILED, TRACK_LOAD_FAIL, TRACK_NOT_EXIST, TRACK_FINDED, UNKNOWN -> {
MAP_DATA_NOT_EXIST, MAP_DATA_EXIST, MAP_TRA_TYPE, ROUTE_FAILED, TRACK_LOAD_FAIL, TRACK_NOT_EXIST, TRACK_FINDED, UNKNOWN -> {
iv.background = ContextCompat.getDrawable(itemView.context, drawable.icon_dev_status_trace_unkown)
}
TRACK_LOADED -> {
@@ -116,7 +121,26 @@ internal class StatusAdapter(val ctx: Context, var data: ArrayList<Status>): Rec
else ->
"定位异常"
}
is TracingStatus -> "轨迹类型:${ if (status.state == TRACK_LOADED) "循迹" else if (status.state == ROUTE_LOADED) "自主算路" else "暂无轨迹" }"
is TracingStatus -> {
val extra = status.state.extra
val extraDesc = if (extra != null && extra.isNotEmpty()) extra.values.joinToString(",") else ""
Logger.d(TAG, "traceing_state: $status -> extra: $extraDesc :: extra: $extra")
when(status.state) {
//"轨迹类型:${ if (status.state == TRACK_LOADED) "循迹" else if (status.state == ROUTE_LOADED) "自主算路" else "暂无轨迹" }"
MAP_TRA_TYPE -> {
"暂无轨迹"
}
MAP_DATA_EXIST -> "地图数据存在,正在加载${if (extraDesc.isEmpty()) "" else "[$extraDesc]" }"
MAP_DATA_NOT_EXIST -> "地图数据不存在${if (extraDesc.isEmpty()) "" else "[$extraDesc]"}"
TRACK_FINDED -> "轨迹类型:循迹[已找到轨迹$extraDesc]"
TRACK_LOADED -> "轨迹类型:循迹[加载成功$extraDesc]"
TRACK_NOT_EXIST -> "轨迹类型:循迹[不存在$extraDesc]"
TRACK_LOAD_FAIL -> "轨迹类型:循迹[加载失败$extraDesc]"
ROUTE_LOADED -> "轨迹类型:自主算路[加载成功$extraDesc]"
ROUTE_FAILED -> "轨迹类型:自主算路[加载失败$extraDesc]"
UNKNOWN -> "暂无轨迹"
}
}
}
}
}