Conflicts:
	app/src/main/java/com/navinfo/omqs/Constant.kt
	app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt
This commit is contained in:
qiji4215
2023-06-26 14:18:48 +08:00
41 changed files with 516 additions and 460 deletions

View File

@@ -20,6 +20,19 @@
"code": 2010,
"name": "道路方向"
},
"2011": {
"table": "OMDB_LINK_NAME",
"code": 2011,
"name": "道路名",
"transformer": [
{
"k": "geometry",
"v": "~",
"klib": "geometry",
"vlib": "generateRoadName()"
}
]
},
"2013": {
"table": "OMDB_LANE_MARK_BOUNDARYTYPE",
"code": 2013,
@@ -83,6 +96,14 @@
"code": 2202,
"name": "隧道"
},
"4001": {
"table": "OMDB_INTERSECTION",
"code": 4001,
"name": "路口",
"transformer": [
]
},
"4002": {
"table": "OMDB_SPEEDLIMIT",
"code": 4002,
@@ -153,6 +174,14 @@
}
]
},
"4010":{
"table": "OMDB_ELECTRONICEYE",
"code": 4010,
"name": "电子眼",
"transformer": [
]
},
"4022": {
"table": "OMDB_TRAFFICLIGHT",
"code": 4022,
@@ -166,10 +195,23 @@
}
]
},
"4601":{
"table": "OMDB_LANEINFO",
"code": 4601,
"name": "车信",
"transformer": [
]
},
"5001":{
"table": "OMDB_LANE_LINK_LG",
"code": 5001,
"name": "车道中心线"
}
},
"5002":{
"table": "OMDB_AREA",
"code": 5002,
"name": "面测试"
}
}
}

View File

@@ -1,5 +1,7 @@
package com.navinfo.omqs
import com.navinfo.omqs.bean.ImportConfig
class Constant {
companion object {
/**
@@ -45,6 +47,11 @@ class Constant {
*/
lateinit var DOWNLOAD_PATH: String
/**
* 图层管理对应的配置
* */
var LAYER_CONFIG_LIST: List<ImportConfig>? = null
/**
* 室内整理工具IP
*/

View File

@@ -119,14 +119,28 @@ class ImportPreProcess {
* 解析车道边线数据二级属性
* */
fun unpackingLaneBoundary(renderEntity: RenderEntity) {
var shape:JSONObject = JSONObject(mapOf(
"lateralOffset" to 0,
"markType" to 1,
"markColor" to 0,
"markMaterial" to 1,
"markSeqNum" to 1,
"markWidth" to 10,
"markingCount" to 1
))
if (renderEntity.code == 2013&&!renderEntity.properties["shapeList"].isNullOrEmpty()&&renderEntity.properties["shapeList"]!="null") {
// 解析shapeList将数组中的属性放会properties
val shapeList = JSONArray(renderEntity.properties["shapeList"])
val shape = shapeList.getJSONObject(0)
for (key in shape.keys()) {
renderEntity.properties[key] = shape[key].toString()
for (i in 0 until shapeList.length()) {
shape = shapeList.getJSONObject(i)
if (shape.optInt("lateralOffset", 0) == 0) {
break
}
}
}
for (key in shape.keys()) {
renderEntity.properties[key] = shape[key].toString()
}
}
/**
@@ -176,4 +190,31 @@ class ImportPreProcess {
angleReference.properties["type"] = "angle"
Realm.getDefaultInstance().insert(angleReference)
}
fun generateRoadName(renderEntity: RenderEntity) {
// LinkName的真正名称数据是保存在properties的shapeList中的因此需要解析shapeList数据
var shape :JSONObject? = null
if (renderEntity.properties.containsKey("shapeList")) {
val shapeListJsonArray: JSONArray = JSONArray(renderEntity.properties["shapeList"])
for (i in 0 until shapeListJsonArray.length()) {
val shapeJSONObject = shapeListJsonArray.getJSONObject(i)
if (shapeJSONObject["nameClass"]==1) {
if (shape == null) {
shape = shapeJSONObject
}
// 获取第一官方名
//("名称分类"NAME_CLASS =“1 官方名”且名称序号SEQ_NUM 最小者)
if (shapeJSONObject["seqNum"].toString().toInt()< shape!!["seqNum"].toString().toInt()) {
shape = shapeJSONObject
}
}
}
}
// 获取最小的shape值将其记录增加记录在properties的name属性下
if(shape!=null) {
renderEntity.properties["name"] = shape["name"].toString()
} else {
renderEntity.properties["name"] = ""
}
}
}

View File

@@ -149,11 +149,9 @@ class OfflineMapDownloadScope(
}
}
Log.e("jingo", "文件下载完成 ${cityBean.currentSize} == ${cityBean.fileSize}")
if (cityBean.currentSize == cityBean.fileSize) {
val res =
fileTemp.renameTo(File("${Constant.OFFLINE_MAP_PATH}${cityBean.fileName}"))
Log.e("jingo", "文件下载完成 修改文件 $res")
change(FileDownloadStatus.DONE)
withContext(Dispatchers.Main) {
downloadManager.mapController.layerManagerHandler.loadBaseMap()

View File

@@ -188,7 +188,6 @@ class TaskDownloadScope(
responseBody ?: throw IOException("jingo ResponseBody is null")
if (startPosition == 0L) {
taskBean.fileSize = responseBody.contentLength()
Log.e("jingo", "当前文件大小 ${taskBean.fileSize}")
}
change(FileDownloadStatus.LOADING)
//写入文件

View File

@@ -15,16 +15,20 @@ class LayerConfigUtils {
private val gson = Gson()
fun getLayerConfigList(): List<ImportConfig> {
// 首先读取Shared文件如果存在则直接返回否则读取config文件
return SPStaticUtils.getString(Constant.EVENT_LAYER_MANAGER_CHANGE, null).let {
if (it != null) {
val result: List<ImportConfig> =
gson.fromJson(it, object : TypeToken<List<ImportConfig>>() {}.type)
result
} else {
LayerConfigUtils.getLayerConfigListFromAssetsFile()
}
// 首先读取全局变量的数据如果存在则直接返回否则读取config文件
if (Constant.LAYER_CONFIG_LIST == null) {
Constant.LAYER_CONFIG_LIST = getLayerConfigListFromAssetsFile()
}
return Constant.LAYER_CONFIG_LIST!!
// return SPStaticUtils.getString(Constant.EVENT_LAYER_MANAGER_CHANGE, null).let {
// if (it != null) {
// val result: List<ImportConfig> =
// gson.fromJson(it, object : TypeToken<List<ImportConfig>>() {}.type)
// result
// } else {
// LayerConfigUtils.getLayerConfigListFromAssetsFile()
// }
// }
}
private fun getLayerConfigListFromAssetsFile(): List<ImportConfig> {

View File

@@ -23,6 +23,7 @@ import com.navinfo.collect.library.map.NIMapController
import com.navinfo.omqs.Constant
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.ImportConfig
import com.navinfo.omqs.bean.SignBean
import com.navinfo.omqs.databinding.ActivityMainBinding
import com.navinfo.omqs.http.offlinemapdownload.OfflineMapDownloadManager
import com.navinfo.omqs.tools.LayerConfigUtils
@@ -67,9 +68,7 @@ class MainActivity : BaseActivity() {
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
val data: Intent? = result.data
Log.e("jingo", "MainActivity someActivityResultLauncher RESULT_OK")
} else {
Log.e("jingo", "MainActivity someActivityResultLauncher ${result.resultCode}")
}
}
@@ -88,16 +87,44 @@ class MainActivity : BaseActivity() {
* 提前显示要素看板
*/
private val signAdapter by lazy {
SignAdapter { _, autoSave, signBean ->
rightController.currentDestination?.let {
if (it.id == R.id.RightEmptyFragment) {
val bundle = Bundle()
bundle.putParcelable("SignBean", signBean)
bundle.putBoolean("AutoSave", autoSave)
rightController.navigate(R.id.EvaluationResultFragment, bundle)
SignAdapter(object : OnSignAdapterClickListener {
override fun onItemClick(signBean: SignBean) {
rightController.currentDestination?.let {
if (it.id == R.id.RightEmptyFragment) {
val bundle = Bundle()
bundle.putParcelable("SignBean", signBean)
bundle.putBoolean("AutoSave", false)
rightController.navigate(R.id.EvaluationResultFragment, bundle)
}
}
}
}
override fun onMoreInfoClick(selectTag: String, tag: String, signBean: SignBean) {
if (binding.mainActivitySignMoreInfoGroup.visibility != View.VISIBLE || selectTag != tag) {
binding.mainActivitySignMoreInfoGroup.visibility = View.VISIBLE
binding.mainActivitySignMoreInfoTitle.text = signBean.name
binding.mainActivitySignMoreInfoText1.text = signBean.bottomRightText
binding.mainActivitySignMoreInfoText2.text = signBean.moreText
} else {
binding.mainActivitySignMoreInfoGroup.visibility = View.GONE
}
}
override fun onErrorClick(signBean: SignBean) {
rightController.currentDestination?.let {
if (it.id == R.id.RightEmptyFragment) {
val bundle = Bundle()
bundle.putParcelable("SignBean", signBean)
bundle.putBoolean("AutoSave", true)
rightController.navigate(R.id.EvaluationResultFragment, bundle)
}
}
}
override fun onHideMoreInfoView() {
binding.mainActivitySignMoreInfoGroup.visibility = View.GONE
}
})
}
/**
@@ -148,11 +175,9 @@ class MainActivity : BaseActivity() {
when (event?.action) {
MotionEvent.ACTION_DOWN -> {
voiceOnTouchStart()//Do Something
Log.e("qj", "voiceOnTouchStart")
}
MotionEvent.ACTION_UP -> {
voiceOnTouchStop()//Do Something
Log.e("qj", "voiceOnTouchStop")
}
}
v?.onTouchEvent(event) ?: true
@@ -203,9 +228,9 @@ class MainActivity : BaseActivity() {
}
//监听地图中点变化
viewModel.liveDataCenterPoint.observe(this) {
Log.e("qj","${it.longitude}")
try{
if(it!=null&&it.longitude!=null&&it.latitude!=null){
Log.e("qj", "${it.longitude}")
try {
if (it != null && it.longitude != null && it.latitude != null) {
binding.mainActivityGeometry.text = "经纬度:${
BigDecimal(it.longitude).setScale(
7,
@@ -213,8 +238,8 @@ class MainActivity : BaseActivity() {
)
},${BigDecimal(it.latitude).setScale(7, RoundingMode.HALF_UP)}"
}
}catch (e:Exception){
Log.e("qj","异常")
} catch (e: Exception) {
Log.e("qj", "异常 $e")
}
}
@@ -246,7 +271,7 @@ class MainActivity : BaseActivity() {
val view = this.layoutInflater.inflate(R.layout.dialog_view_edittext, null)
val inputDialog = MaterialAlertDialogBuilder(
this
).setTitle("标记原因").setView(view)
).setTitle("坐标定位").setView(view)
var editText = view.findViewById<EditText>(R.id.dialog_edittext)
editText.hint = "请输入经纬度例如:\n116.1234567,39.1234567\n116.1234567 39.1234567"
inputDialog.setNegativeButton("取消") { dialog, _ ->
@@ -258,7 +283,7 @@ class MainActivity : BaseActivity() {
val parts = editText.text.toString().split("[,\\s]".toRegex())
if (parts.size == 2) {
val x = parts[0].toDouble()
val y = parts[0].toDouble()
val y = parts[1].toDouble()
mapController.animationHandler.animationByLatLon(y, x)
} else {
Toast.makeText(this, "输入格式不正确", Toast.LENGTH_SHORT).show()
@@ -413,6 +438,12 @@ class MainActivity : BaseActivity() {
*/
fun onSwitchSheet() {
if (binding.mainActivityBottomSheetGroup.visibility == View.VISIBLE) {
leftFragment?.let {
supportFragmentManager.beginTransaction().remove(it).commit()
leftFragment = null
binding.mainActivityLeftFragment.visibility = View.GONE
}
binding.mainActivityBottomSheetGroup.visibility = View.GONE
} else {
binding.mainActivityBottomSheetGroup.visibility = View.VISIBLE
@@ -472,10 +503,18 @@ class MainActivity : BaseActivity() {
.replace(R.id.main_activity_left_fragment, leftFragment!!).commit()
}
}
/**
* 路径规划
*/
fun onClickRouteFragment() {
Toast.makeText(this, "功能开发中", Toast.LENGTH_SHORT).show()
}
/**
* 打开离线地图
*/
fun onClickOfflineMapFragment(){
fun onClickOfflineMapFragment() {
if (leftFragment !is OfflineMapFragment) {
if (leftFragment == null) {
binding.mainActivityBottomSheetGroup.visibility = View.VISIBLE

View File

@@ -183,11 +183,10 @@ class MainViewModel @Inject constructor(
location.tiley = y
}
}
Log.e("jingo", "定位点插入 ${location.longitude}")
location.groupId = uuid
try {
location.timeStamp = DateTimeUtil.getTime(location.time).toString()
}catch (e: Exception){
} catch (e: Exception) {
}
traceDataBase.niLocationDao.insert(location)
@@ -244,7 +243,8 @@ class MainViewModel @Inject constructor(
geometry = element.geometry,
name = SignUtil.getSignNameText(element),
bottomRightText = SignUtil.getSignBottomRightText(element),
elementCode = element.code
elementCode = element.code,
moreText = SignUtil.getMoreInfoText(element)
)
when (element.code) {
@@ -292,9 +292,8 @@ class MainViewModel @Inject constructor(
speakMode?.speakText(speechText)
}
linkIdCache = linkId ?: ""
Log.e("jingo", "自动捕捉数据 共${signList.size}")
}
}else{
} else {
mapController.lineHandler.removeLine()
linkIdCache = ""
}

View File

@@ -1,6 +1,7 @@
package com.navinfo.omqs.ui.activity.map
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.SignBean
@@ -8,8 +9,19 @@ import com.navinfo.omqs.databinding.AdapterSignBinding
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
import com.navinfo.omqs.ui.other.BaseViewHolder
class SignAdapter(private var itemListener: ((Int, Boolean, SignBean) -> Unit?)? = null) :
interface OnSignAdapterClickListener {
fun onItemClick(signBean: SignBean)
fun onMoreInfoClick(selectTag: String, tag: String, signBean: SignBean)
fun onErrorClick(signBean: SignBean)
fun onHideMoreInfoView()
}
class SignAdapter(private var listener: OnSignAdapterClickListener?) :
BaseRecyclerViewAdapter<SignBean>() {
/**
* 选中的详细信息按钮的tag标签
*/
private var selectMoreInfoTag: String = ""
override fun getItemViewRes(position: Int): Int {
return R.layout.adapter_sign
}
@@ -22,17 +34,40 @@ class SignAdapter(private var itemListener: ((Int, Boolean, SignBean) -> Unit?)?
override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
val bd = holder.viewBinding as AdapterSignBinding
val item = data[position]
if (item.iconId != 0)
bd.signMainIconBg.setImageResource(item.iconId)
if (item.iconId != 0) bd.signMainIconBg.setImageResource(item.iconId)
bd.signMainIcon.text = item.iconText
bd.signBottomText.text = item.name
bd.signMainFastError.setOnClickListener{
itemListener?.invoke(position, true,item)
holder.tag = item.name + position
//点击错误按钮
bd.signMainFastError.setOnClickListener {
listener?.onErrorClick(item)
}
bd.signBottomRightText.text = item.bottomRightText
bd.root.setOnClickListener {
itemListener?.invoke(position, false,item)
listener?.onItemClick(item)
}
if (item.moreText.isNotEmpty()) {
bd.signMainInfo.visibility = View.VISIBLE
//点击更多信息按钮
bd.signMainInfo.setOnClickListener {
listener?.onMoreInfoClick(selectMoreInfoTag, holder.tag, item)
selectMoreInfoTag = holder.tag
}
} else bd.signMainInfo.visibility = View.GONE
}
override fun refreshData(newData: List<SignBean>) {
super.refreshData(newData)
for (i in newData.indices) {
if (selectMoreInfoTag == newData[i].name + i) {
return
}
}
listener?.onHideMoreInfoView()
}
}

View File

@@ -6,6 +6,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.View.OnClickListener
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.transition.AutoTransition
import androidx.transition.Scene
@@ -64,14 +65,12 @@ class ConsoleFragment : BaseFragment(), OnClickListener {
override fun onTransitionStart(transition: androidx.transition.Transition) {
sceneFlag = true
if (mFragment != null) {
Log.e("jingo", "动画开始B mFragment 不为null")
childFragmentManager.beginTransaction().remove(mFragment!!).commit()
mFragment = null
}
}
override fun onTransitionEnd(transition: androidx.transition.Transition) {
Log.e("jingo", "动画A结束")
initOnClickListener()
}
@@ -89,7 +88,6 @@ class ConsoleFragment : BaseFragment(), OnClickListener {
override fun onTransitionStart(transition: androidx.transition.Transition) {
sceneFlag = false
if (mFragment != null) {
Log.e("jingo", "动画开始A mFragment 不为null")
childFragmentManager.beginTransaction().replace(fragmentId, mFragment!!)
.commit()
}
@@ -156,6 +154,11 @@ class ConsoleFragment : BaseFragment(), OnClickListener {
*/
binding.consoleRoot.findViewById<View>(R.id.console_task_bg)?.setOnClickListener(this)
binding.consoleRoot.findViewById<View>(R.id.console_task_icon_bg)?.setOnClickListener(this)
/**
* 路径规划
*/
binding.consoleRoot.findViewById<View>(R.id.console_route_bg)?.setOnClickListener(this)
binding.consoleRoot.findViewById<View>(R.id.console_route_icon_bg)?.setOnClickListener(this)
}
override fun onDestroy() {
@@ -235,6 +238,9 @@ class ConsoleFragment : BaseFragment(), OnClickListener {
(a as MainActivity).onClickResFragment()
}
}
/**
* 任务列表
*/
R.id.console_task_icon_bg, R.id.console_task_bg -> {
activity?.let { a ->
a.supportFragmentManager.beginTransaction().remove(this).commit()
@@ -242,6 +248,12 @@ class ConsoleFragment : BaseFragment(), OnClickListener {
}
}
/**
* 路径规划
*/
R.id.console_route_bg, R.id.console_route_icon_bg -> {
Toast.makeText(requireContext(), "功能开发中", Toast.LENGTH_SHORT).show()
}
else -> {}
}
}

View File

@@ -98,17 +98,14 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
when (event?.action) {
MotionEvent.ACTION_DOWN -> {
voiceOnTouchStart()//Do Something
Log.e("qj", "voiceOnTouchStart")
}
MotionEvent.ACTION_UP -> {
voiceOnTouchStop()//Do Something
Log.e("qj", "ACTION_UP")
}
MotionEvent.ACTION_CANCEL -> {
voiceOnTouchStop()//Do Something
Log.e("qj", "ACTION_CANCEL")
}
}
true

View File

@@ -97,7 +97,6 @@ class EvaluationResultViewModel @Inject constructor(
init {
liveDataQsRecordBean.value = QsRecordBean(id = UUID.randomUUID().toString())
Log.e("jingo", "EvaluationResultViewModel 创建了 ${hashCode()}")
viewModelScope.launch {
mapController.onMapClickFlow.collect {
liveDataQsRecordBean.value!!.geometry = GeometryTools.createGeometry(it).toText()
@@ -111,7 +110,6 @@ class EvaluationResultViewModel @Inject constructor(
override fun onCleared() {
super.onCleared()
Log.e("jingo", "EvaluationResultViewModel 销毁了 ${hashCode()}")
mapController.markerHandle.removeMarker(markerTitle)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
mapController.lineHandler.removeLine()
@@ -223,7 +221,6 @@ class EvaluationResultViewModel @Inject constructor(
* 获取问题环节列表和初步问题
*/
fun getProblemLinkList() {
Log.e("jingo", "getProblemLinkList S")
viewModelScope.launch(Dispatchers.IO) {
val list = roomAppDatabase.getScRootCauseAnalysisDao().findAllData()
list?.let { tl ->
@@ -242,11 +239,9 @@ class EvaluationResultViewModel @Inject constructor(
}
if (liveDataQsRecordBean.value!!.problemLink.isEmpty()) {
liveDataQsRecordBean.value!!.problemLink = middleList[0]
Log.e("jingo", "getProblemLinkList ${middleList[0]}")
}
if (liveDataQsRecordBean.value!!.cause.isEmpty()) {
liveDataQsRecordBean.value!!.cause = rightList[0].text
Log.e("jingo", "getProblemLinkList ${rightList[0].text}")
}
liveDataQsRecordBean.postValue(liveDataQsRecordBean.value)
// liveDataMiddleTypeList.postValue(middleList)
@@ -254,14 +249,12 @@ class EvaluationResultViewModel @Inject constructor(
}
}
}
Log.e("jingo", "getProblemLinkList E")
}
/**
* 获取问题类型列表和问题现象
*/
private suspend fun getProblemList(classType: String) {
Log.e("jingo", "getProblemList S")
val typeList = roomAppDatabase.getScProblemTypeDao().findProblemTypeList(classType)
typeList?.let { tl ->
if (tl.isNotEmpty()) {
@@ -279,18 +272,15 @@ class EvaluationResultViewModel @Inject constructor(
}
if (liveDataQsRecordBean.value!!.problemType.isEmpty()) {
liveDataQsRecordBean.value!!.problemType = typeTitleList[0]
Log.e("jingo", "getProblemList ${typeTitleList[0]}")
}
// liveDataMiddleTypeList.postValue(typeTitleList)
if (liveDataQsRecordBean.value!!.phenomenon.isEmpty()) {
liveDataQsRecordBean.value!!.phenomenon = phenomenonRightList[0].text
Log.e("jingo", "getProblemList ${phenomenonRightList[0].text}")
}
liveDataQsRecordBean.postValue(liveDataQsRecordBean.value)
liveDataRightTypeList.postValue(phenomenonRightList)
}
}
Log.e("jingo", "getProblemList E")
}
/**
@@ -341,7 +331,6 @@ class EvaluationResultViewModel @Inject constructor(
mDialog.dismiss()
viewModelScope.launch(Dispatchers.IO) {
val realm = Realm.getDefaultInstance()
Log.e("jingo", "realm hashCOde ${realm.hashCode()}")
realm.executeTransaction {
val objects = it.where(QsRecordBean::class.java)
.equalTo("id", liveDataQsRecordBean.value?.id).findFirst()

View File

@@ -34,7 +34,6 @@ class PhenomenonFragment :
savedInstanceState: Bundle?
): View {
_binding = FragmentPhenomenonBinding.inflate(inflater, container, false)
Log.e("jingo", "PhenomenonFragment onCreateView ${hashCode()}")
return binding.root
}

View File

@@ -23,7 +23,7 @@ class LayerManagerViewModel() : ViewModel() {
}
fun saveLayerConfigList(context: Context, listData: List<ImportConfig>) {
SPStaticUtils.put(Constant.EVENT_LAYER_MANAGER_CHANGE, gson.toJson(listData))
Constant.LAYER_CONFIG_LIST = listData
// 发送新的配置数据
viewModelScope.launch {
FlowEventBus.post(Constant.EVENT_LAYER_MANAGER_CHANGE, listData)

View File

@@ -34,15 +34,12 @@ class OfflineMapCityListAdapter(
val cityBean = data[it.tag as Int]
when (cityBean.status) {
FileDownloadStatus.NONE, FileDownloadStatus.UPDATE, FileDownloadStatus.PAUSE, FileDownloadStatus.ERROR -> {
Log.e("jingo", "开始下载 ${cityBean.status}")
downloadManager.start(cityBean.id)
}
FileDownloadStatus.LOADING, FileDownloadStatus.WAITING -> {
Log.e("jingo", "暂停 ${cityBean.status}")
downloadManager.pause(cityBean.id)
}
else -> {
Log.e("jingo", "暂停 ${cityBean.status}")
}
}
}
@@ -85,7 +82,6 @@ class OfflineMapCityListAdapter(
if (id == holder.tag) {
val binding: AdapterOfflineMapCityBinding =
holder.viewBinding as AdapterOfflineMapCityBinding
Log.e("jingo", "进度条更新 $id ${bean.id} ${holder.tag} ")
changeViews(binding, bean)
}
}
@@ -95,7 +91,6 @@ class OfflineMapCityListAdapter(
private fun changeViews(binding: AdapterOfflineMapCityBinding, cityBean: OfflineMapCityBean) {
Log.e("jingo", "changeViews ${cityBean.status}")
binding.offlineMapProgress.progress =
(cityBean.currentSize * 100 / cityBean.fileSize).toInt()
when (cityBean.status) {

View File

@@ -115,11 +115,17 @@ class PersonalCenterFragment(private var backListener: (() -> Unit?)? = null) :
viewModel.readRealmData()
// 定位到指定位置
niMapController.mMapView.vtmMap.animator()
.animateTo(GeoPoint(40.031657799200346, 116.32207834810715))
}
R.id.personal_center_menu_task_list -> {
findNavController().navigate(R.id.TaskManagerFragment)
.animateTo(GeoPoint( 39.80392140200183, 116.51446703352337 ))
}
// R.id.personal_center_menu_task_list -> {
// findNavController().navigate(R.id.TaskManagerFragment)
// }
// R.id.personal_center_menu_qs_record_list -> {
// findNavController().navigate(R.id.QsRecordListFragment)
// }
// R.id.personal_center_menu_layer_manager -> { // 图层管理
// findNavController().navigate(R.id.QsLayerManagerFragment)
// }
R.id.personal_center_menu_qs_record_list -> {
findNavController().navigate(R.id.QsRecordListFragment)
}

View File

@@ -26,7 +26,6 @@ class QsRecordListViewModel @Inject constructor(
fun getList(context: Context) {
viewModelScope.launch(Dispatchers.IO) {
val realm = Realm.getDefaultInstance()
Log.e("jingo","realm hashCOde ${realm.hashCode()}")
val objects = realm.where(QsRecordBean::class.java).findAll()
liveDataQSList.postValue(realm.copyFromRealm(objects))
}

View File

@@ -39,17 +39,14 @@ class TaskListAdapter(
if (taskBean.hadLinkDvoList.isNotEmpty()) {
when (taskBean.status) {
FileDownloadStatus.NONE, FileDownloadStatus.UPDATE, FileDownloadStatus.PAUSE, FileDownloadStatus.IMPORT, FileDownloadStatus.ERROR -> {
Log.e("jingo", "开始下载 ${taskBean.status}")
downloadManager.start(taskBean.id)
}
FileDownloadStatus.LOADING, FileDownloadStatus.WAITING -> {
Log.e("jingo", "暂停 ${taskBean.status}")
downloadManager.pause(taskBean.id)
}
else -> {
Log.e("jingo", "暂停 ${taskBean.status}")
}
}
} else {
@@ -61,7 +58,6 @@ class TaskListAdapter(
private val uploadBtnClick = View.OnClickListener() {
if (it.tag != null) {
val taskBean = data[it.tag as Int]
Log.e("jingo", "开始上传 ${taskBean.syncStatus}")
if (taskBean.hadLinkDvoList.isNotEmpty()) {
when (taskBean.syncStatus) {
FileUploadStatus.NONE, FileUploadStatus.UPLOADING, FileUploadStatus.ERROR, FileUploadStatus.WAITING -> {

View File

@@ -87,12 +87,30 @@ class SignUtil {
*/
fun getSignBottomRightText(data: RenderEntity): String {
return when (data.code) {
//点限速
//条件点限速
4003 -> getConditionLimitText(data)
else -> ""
}
}
/**
* 更多信息展示文字
*/
fun getMoreInfoText(data: RenderEntity): String {
return when (data.code) {
//条件点限速
4003 -> getConditionLimitMoreInfoText(data)
else -> ""
}
}
/**
* 条件点限速更多信息
*/
private fun getConditionLimitMoreInfoText(data: RenderEntity): String {
return data.properties["validPeriod"].toString()
}
/**
* 条件点限速文字
*/
@@ -170,7 +188,7 @@ class SignUtil {
private fun getSpeedLimitIcon(data: RenderEntity): Int {
try {
//限速标志 0 限速开始 1 限速解除
return when (data.properties["speed_flag"]) {
return when (data.properties["speedFlag"]) {
"1" -> return R.drawable.icon_speed_limit_off
else -> return R.drawable.icon_speed_limit
}
@@ -186,7 +204,7 @@ class SignUtil {
private fun getConditionalSpeedLimitIcon(data: RenderEntity): Int {
try {
//限速标志 0 限速开始 1 限速解除
return when (data.properties["speed_flag"]) {
return when (data.properties["speedFlag"]) {
"1" -> return R.drawable.icon_conditional_speed_limit_off
else -> return R.drawable.icon_conditional_speed_limit
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -3,10 +3,10 @@
android:shape="rectangle">
<corners
android:bottomLeftRadius="4dp"
android:bottomRightRadius="4dp"
android:topLeftRadius="4dp"
android:topRightRadius="4dp" />
android:bottomLeftRadius="8dp"
android:bottomRightRadius="8dp"
android:topLeftRadius="8dp"
android:topRightRadius="8dp" />
<solid android:color="#C42E303B" />

View File

@@ -63,6 +63,61 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/main_activity_sign_more_info_bg"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:layout_marginLeft="260dp"
android:layout_marginTop="40dp"
android:background="@drawable/main_sign_moreinfo_bg"
android:minHeight="140dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/main_activity_top_sign_recyclerview" />
<TextView
android:id="@+id/main_activity_sign_more_info_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:drawableLeft="@drawable/icon_main_moreinfo_text_left"
android:drawablePadding="4dp"
android:text="条件点限速"
android:textColor="@color/orange"
app:layout_constraintLeft_toLeftOf="@id/main_activity_sign_more_info_bg"
app:layout_constraintTop_toTopOf="@id/main_activity_sign_more_info_bg" />
<TextView
android:id="@+id/main_activity_sign_more_info_text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:text="条件点限速"
android:textColor="@color/white"
app:layout_constraintRight_toRightOf="@id/main_activity_sign_more_info_bg"
app:layout_constraintTop_toBottomOf="@id/main_activity_sign_more_info_title" />
<TextView
android:id="@+id/main_activity_sign_more_info_text2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_marginRight="10dp"
android:singleLine="false"
android:text="条件点限速"
android:textColor="@color/white"
app:layout_constraintLeft_toLeftOf="@id/main_activity_sign_more_info_bg"
app:layout_constraintRight_toRightOf="@id/main_activity_sign_more_info_bg"
app:layout_constraintTop_toBottomOf="@id/main_activity_sign_more_info_text1" />
<androidx.constraintlayout.widget.Group
android:id="@+id/main_activity_sign_more_info_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:constraint_referenced_ids="main_activity_sign_more_info_bg,main_activity_sign_more_info_text2,main_activity_sign_more_info_text1,main_activity_sign_more_info_title" />
<androidx.constraintlayout.helper.widget.Flow
android:id="@+id/main_activity_flow"
android:layout_width="0dp"
@@ -408,8 +463,8 @@
<ImageView
android:id="@+id/main_bottom_offline_map"
style="@style/main_activity_bottom_sheet_icon"
android:onClick="@{()->mainActivity.onClickOfflineMapFragment()}"
android:background="@drawable/icon_main_bottom_offline_map"
android:onClick="@{()->mainActivity.onClickOfflineMapFragment()}"
app:layout_constraintBottom_toTopOf="@id/main_bottom_offline_map_text"
app:layout_constraintLeft_toRightOf="@id/main_bottom_home"
app:layout_constraintRight_toLeftOf="@id/main_bottom_route"
@@ -420,10 +475,10 @@
android:id="@+id/main_bottom_offline_map_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{()->mainActivity.onClickOfflineMapFragment()}"
android:text="离线地图"
android:textColor="@color/blue"
android:textSize="10sp"
android:onClick="@{()->mainActivity.onClickOfflineMapFragment()}"
app:layout_constraintBottom_toBottomOf="@id/main_activity_bottom_sheet_bg"
app:layout_constraintLeft_toLeftOf="@id/main_bottom_offline_map"
app:layout_constraintRight_toRightOf="@id/main_bottom_offline_map"
@@ -435,6 +490,7 @@
android:background="@drawable/icon_main_bottom_route"
app:layout_constraintBottom_toTopOf="@id/main_bottom_route_text"
app:layout_constraintLeft_toRightOf="@id/main_bottom_offline_map"
android:onClick="@{()->mainActivity.onClickRouteFragment()}"
app:layout_constraintRight_toRightOf="@id/main_activity_bottom_sheet_bg"
app:layout_constraintTop_toTopOf="@id/main_bottom_task"
app:layout_constraintVertical_chainStyle="packed" />
@@ -446,6 +502,7 @@
android:text="路径规划"
android:textColor="@color/blue"
android:textSize="10sp"
android:onClick="@{()->mainActivity.onClickRouteFragment()}"
app:layout_constraintBottom_toBottomOf="@id/main_activity_bottom_sheet_bg"
app:layout_constraintLeft_toLeftOf="@id/main_bottom_route"
app:layout_constraintRight_toRightOf="@id/main_bottom_route"
@@ -455,7 +512,7 @@
android:id="@+id/main_activity_bottom_sheet_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible"
android:visibility="gone"
app:constraint_referenced_ids="
main_bottom_route_text,
main_bottom_offline_map_text,
@@ -476,5 +533,4 @@
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -46,10 +46,10 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/sign_bottom_text"
android:layout_alignParentRight="true"
android:layout_marginRight="15dp"
android:gravity="center"
android:text="其他信息"
android:layout_alignRight="@id/sign_main_bg"
android:textColor="@color/white"
android:textSize="14sp" />

View File

@@ -97,7 +97,6 @@
<TextView
android:id="@+id/task_progress_text"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/task_download_btn"

View File

@@ -5,7 +5,6 @@
android:id="@+id/console_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/console_bg"
tools:context=".ui.fragment.console.ConsoleFragment">
<androidx.constraintlayout.widget.Guideline

View File

@@ -128,12 +128,16 @@
android:src="@drawable/icon_console_task"
app:layout_constraintBottom_toBottomOf="@id/console_task_bg"
app:layout_constraintLeft_toLeftOf="@id/console_task_bg"
app:layout_constraintTop_toTopOf="@id/console_task_bg" />
app:layout_constraintRight_toLeftOf="@id/console_task_icon_text"
app:layout_constraintTop_toTopOf="@id/console_task_bg"
app:layout_constraintVertical_chainStyle="packed" />
<TextView
android:id="@+id/console_task_icon_text"
style="@style/console_on_left_bottom_text"
android:text="测评任务"
app:layout_constraintBottom_toBottomOf="@id/console_task_bg"
app:layout_constraintLeft_toRightOf="@id/console_task_icon"
app:layout_constraintRight_toRightOf="@id/console_task_bg"
app:layout_constraintTop_toTopOf="@id/console_task_bg" />
@@ -154,12 +158,16 @@
android:src="@drawable/icon_console_evaluation"
app:layout_constraintBottom_toBottomOf="@id/console_evaluation_bg"
app:layout_constraintLeft_toLeftOf="@id/console_evaluation_bg"
app:layout_constraintTop_toTopOf="@id/console_evaluation_bg" />
app:layout_constraintRight_toLeftOf="@id/console_evaluation_icon_text"
app:layout_constraintTop_toTopOf="@id/console_evaluation_bg"
app:layout_constraintVertical_chainStyle="packed" />
<TextView
android:id="@+id/console_evaluation_icon_text"
style="@style/console_on_left_bottom_text"
android:text="测评结果"
app:layout_constraintBottom_toBottomOf="@id/console_evaluation_bg"
app:layout_constraintLeft_toRightOf="@id/console_evaluation_icon"
app:layout_constraintRight_toRightOf="@id/console_evaluation_bg"
app:layout_constraintTop_toTopOf="@id/console_evaluation_bg" />
@@ -180,12 +188,16 @@
android:src="@drawable/icon_console_offline_map"
app:layout_constraintBottom_toBottomOf="@id/console_offline_map_bg"
app:layout_constraintLeft_toLeftOf="@id/console_offline_map_bg"
app:layout_constraintTop_toTopOf="@id/console_offline_map_bg" />
app:layout_constraintRight_toLeftOf="@id/console_offline_map_icon_text"
app:layout_constraintTop_toTopOf="@id/console_offline_map_bg"
app:layout_constraintVertical_chainStyle="packed" />
<TextView
android:id="@+id/console_offline_map_icon_text"
style="@style/console_on_left_bottom_text"
android:text="离线地图"
app:layout_constraintBottom_toBottomOf="@id/console_offline_map_bg"
app:layout_constraintLeft_toRightOf="@id/console_offline_map_icon"
app:layout_constraintRight_toRightOf="@id/console_offline_map_bg"
app:layout_constraintTop_toTopOf="@id/console_offline_map_bg" />
@@ -205,12 +217,16 @@
android:src="@drawable/icon_console_route"
app:layout_constraintBottom_toBottomOf="@id/console_route_bg"
app:layout_constraintLeft_toLeftOf="@id/console_route_bg"
app:layout_constraintTop_toTopOf="@id/console_route_bg" />
app:layout_constraintRight_toLeftOf="@id/console_route_icon_text"
app:layout_constraintTop_toTopOf="@id/console_route_bg"
app:layout_constraintVertical_chainStyle="packed" />
<TextView
android:id="@+id/console_route_icon_text"
style="@style/console_on_left_bottom_text"
android:text="路径规划"
app:layout_constraintBottom_toBottomOf="@id/console_route_bg"
app:layout_constraintLeft_toRightOf="@id/console_route_icon"
app:layout_constraintRight_toRightOf="@id/console_route_bg"
app:layout_constraintTop_toTopOf="@id/console_route_bg" />
@@ -232,12 +248,16 @@
android:src="@drawable/icon_console_layer_setting"
app:layout_constraintBottom_toBottomOf="@id/console_layer_setting_bg"
app:layout_constraintLeft_toLeftOf="@id/console_layer_setting_bg"
app:layout_constraintTop_toTopOf="@id/console_layer_setting_bg" />
app:layout_constraintRight_toLeftOf="@id/console_layer_setting_icon_text"
app:layout_constraintTop_toTopOf="@id/console_layer_setting_bg"
app:layout_constraintVertical_chainStyle="packed" />
<TextView
android:id="@+id/console_layer_setting_icon_text"
style="@style/console_on_left_bottom_text"
android:text="图层设置"
app:layout_constraintBottom_toBottomOf="@id/console_layer_setting_bg"
app:layout_constraintLeft_toRightOf="@id/console_layer_setting_icon"
app:layout_constraintRight_toRightOf="@id/console_layer_setting_bg"
app:layout_constraintTop_toTopOf="@id/console_layer_setting_bg" />
@@ -257,12 +277,16 @@
android:src="@drawable/icon_console_personal_center"
app:layout_constraintBottom_toBottomOf="@id/console_personal_center_bg"
app:layout_constraintLeft_toLeftOf="@id/console_personal_center_bg"
app:layout_constraintTop_toTopOf="@id/console_personal_center_bg" />
app:layout_constraintRight_toLeftOf="@id/console_personal_center_icon_text"
app:layout_constraintTop_toTopOf="@id/console_personal_center_bg"
app:layout_constraintVertical_chainStyle="packed" />
<TextView
android:id="@+id/console_personal_center_icon_text"
style="@style/console_on_left_bottom_text"
android:text="个人中心"
app:layout_constraintBottom_toBottomOf="@id/console_personal_center_bg"
app:layout_constraintLeft_toRightOf="@id/console_personal_center_icon"
app:layout_constraintRight_toRightOf="@id/console_personal_center_bg"
app:layout_constraintTop_toTopOf="@id/console_personal_center_bg" />
@@ -469,7 +493,7 @@
app:layout_constraintLeft_toLeftOf="@id/console_track_bg"
app:layout_constraintRight_toLeftOf="@id/console_track_text"
app:layout_constraintTop_toTopOf="@id/console_track_bg"
app:layout_constraintVertical_chainStyle="spread" />
app:layout_constraintVertical_chainStyle="packed" />
<ImageView
android:id="@+id/console_track_icon"

View File

@@ -46,8 +46,8 @@
app:tabGravity="center"
app:tabIndicator="@null"
app:tabIndicatorHeight="0dp"
app:tabMaxWidth="150dp"
app:tabMinWidth="150dp"
app:tabMaxWidth="110dp"
app:tabMinWidth="110dp"
app:tabMode="scrollable"
app:tabPaddingEnd="6dp"
app:tabPaddingStart="6dp"

View File

@@ -45,8 +45,8 @@
app:tabGravity="center"
app:tabIndicator="@null"
app:tabIndicatorHeight="0dp"
app:tabMaxWidth="150dp"
app:tabMinWidth="150dp"
app:tabMaxWidth="110dp"
app:tabMinWidth="110dp"
app:tabMode="scrollable"
app:tabPaddingEnd="6dp"
app:tabPaddingStart="6dp"

View File

@@ -33,18 +33,18 @@
<group android:checkableBehavior="single">
<item android:title="小标题">
<menu>
<item
android:id="@+id/personal_center_menu_task_list"
android:icon="@drawable/ic_baseline_format_list_bulleted_24"
android:title="任务列表" />
<item
android:id="@+id/personal_center_menu_qs_record_list"
android:icon="@drawable/ic_baseline_playlist_add_check_24"
android:title="测评结果" />
<item
android:id="@+id/personal_center_menu_layer_manager"
android:icon="@drawable/ic_baseline_layers_24"
android:title="图层管理" />
<!-- <item-->
<!-- android:id="@+id/personal_center_menu_task_list"-->
<!-- android:icon="@drawable/ic_baseline_format_list_bulleted_24"-->
<!-- android:title="任务列表" />-->
<!-- <item-->
<!-- android:id="@+id/personal_center_menu_qs_record_list"-->
<!-- android:icon="@drawable/ic_baseline_playlist_add_check_24"-->
<!-- android:title="测评结果" />-->
<!-- <item-->
<!-- android:id="@+id/personal_center_menu_layer_manager"-->
<!-- android:icon="@drawable/ic_baseline_layers_24"-->
<!-- android:title="图层管理" />-->
<item
android:id="@+id/personal_center_menu_test"

View File

@@ -40,7 +40,7 @@
<!--金色 -->
<!--粉红色 -->
<!--亮粉红色 -->
<color name="orange">#FFA500</color> <!--橙色 -->
<color name="orange">#FFBC6E</color> <!--橙色 -->
<!--亮肉色 -->
<!--暗桔黄色 -->
<!--珊瑚色 -->

View File

@@ -24,7 +24,7 @@
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">@color/white</item>
<item name="android:textSize">18sp</item>
<item name="android:layout_margin">5dp</item>
</style>
<style name="title_default_style" comment="默认顶标题样式">