From 5b2fcbddd9ad8d13e1446577c59827b9847549c9 Mon Sep 17 00:00:00 2001 From: squallzhjch Date: Thu, 24 Aug 2023 10:14:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/navinfo/omqs/db/RealmOperateHelper.kt | 45 +-- .../omqs/ui/activity/map/MainActivity.kt | 1 + .../omqs/ui/fragment/tasklist/TaskAdapter.kt | 31 ++- .../omqs/ui/fragment/tasklist/TaskFragment.kt | 7 + .../ui/fragment/tasklist/TaskViewModel.kt | 261 +++++++++++------- .../com/navinfo/omqs/ui/widget/SignUtil.kt | 52 +++- .../java/com/navinfo/omqs/util/SpeakMode.kt | 26 +- .../res/color/selector_black_blue_color.xml | 2 +- .../res/color/selector_gray_blue_color.xml | 5 + .../baseline_edit_note_48_select_red.xml | 5 + app/src/main/res/layout/adapter_task.xml | 4 +- app/src/main/res/layout/adapter_task_list.xml | 6 +- vtm | 2 +- 13 files changed, 299 insertions(+), 148 deletions(-) create mode 100644 app/src/main/res/color/selector_gray_blue_color.xml create mode 100644 app/src/main/res/drawable-v24/baseline_edit_note_48_select_red.xml diff --git a/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt b/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt index 863510f1..90d2c841 100644 --- a/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt @@ -63,9 +63,12 @@ class RealmOperateHelper() { // 查询realm中对应tile号的数据 val realm = getRealmDefaultInstance() val realmList = - getRealmTools(RenderEntity::class.java,false).and().equalTo("table", "OMDB_RD_LINK") - .and() - .rawPredicate("tileX>=$xStart and tileX<=$xEnd and tileY>=$yStart and tileY<=$yEnd") + getRealmTools(RenderEntity::class.java, false) + .equalTo("table", "OMDB_RD_LINK") + .greaterThanOrEqualTo("tileX", xStart) + .lessThanOrEqualTo("tileX", xEnd) + .greaterThanOrEqualTo("tileY", yStart) + .lessThanOrEqualTo("tileY", yEnd) .findAll() // 将获取到的数据和查询的polygon做相交,只返回相交的数据 val dataList = realm.copyFromRealm(realmList) @@ -125,10 +128,12 @@ class RealmOperateHelper() { val yEnd = tileYSet.stream().max(Comparator.naturalOrder()).orElse(null) // 查询realm中对应tile号的数据 val realm = getRealmDefaultInstance() - val realmList = getRealmTools(RenderEntity::class.java, true).and() + val realmList = getRealmTools(RenderEntity::class.java, true) .equalTo("table", table) - .and() - .rawPredicate("tileX>=$xStart and tileX<=$xEnd and tileY>=$yStart and tileY<=$yEnd") + .greaterThanOrEqualTo("tileX", xStart) + .lessThanOrEqualTo("tileX", xEnd) + .greaterThanOrEqualTo("tileY", yStart) + .lessThanOrEqualTo("tileY", yEnd) .findAll() // 将获取到的数据和查询的polygon做相交,只返回相交的数据 val dataList = realm.copyFromRealm(realmList) @@ -187,8 +192,8 @@ class RealmOperateHelper() { var link: RenderEntity? = null val realm = getRealmDefaultInstance() val realmR = - getRealmTools(RenderEntity::class.java, true).and().equalTo("table", "OMDB_RD_LINK") - .and().equalTo("properties['${LinkTable.linkPid}']", linkPid).findFirst() + getRealmTools(RenderEntity::class.java, true).equalTo("table", "OMDB_RD_LINK") + .equalTo("properties['${LinkTable.linkPid}']", linkPid).findFirst() if (realmR != null) { link = realm.copyFromRealm(realmR) } @@ -202,8 +207,8 @@ class RealmOperateHelper() { suspend fun queryQcRecordBean(markId: String): QsRecordBean? { var qsRecordBean: QsRecordBean? = null val realm = getRealmDefaultInstance() - val realmR = getRealmTools(QsRecordBean::class.java, false).and() - .equalTo("table", "QsRecordBean").and().equalTo("id", markId).findFirst() + val realmR = getRealmTools(QsRecordBean::class.java, false) + .equalTo("table", "QsRecordBean").equalTo("id", markId).findFirst() if (realmR != null) { qsRecordBean = realm.copyFromRealm(realmR) } @@ -215,7 +220,7 @@ class RealmOperateHelper() { val realm = getRealmDefaultInstance() - val realmR = getRealmTools(RenderEntity::class.java, true).and() + val realmR = getRealmTools(RenderEntity::class.java, true) .equalTo("properties['${LinkTable.linkPid}']", linkPid).findAll() val dataList = realm.copyFromRealm(realmR) @@ -257,10 +262,12 @@ class RealmOperateHelper() { val yEnd = tileYSet.stream().max(Comparator.naturalOrder()).orElse(null) val realm = getRealmDefaultInstance() // 查询realm中对应tile号的数据 - val realmList = getRealmTools(RenderEntity::class.java, false).and() + val realmList = getRealmTools(RenderEntity::class.java, false) .notEqualTo("table", DataCodeEnum.OMDB_RD_LINK.name) - .and() - .rawPredicate("tileX>=$xStart and tileX<=$xEnd and tileY>=$yStart and tileY<=$yEnd") + .greaterThanOrEqualTo("tileX", xStart) + .lessThanOrEqualTo("tileX", xEnd) + .greaterThanOrEqualTo("tileY", yStart) + .lessThanOrEqualTo("tileY", yEnd) .findAll() // 将获取到的数据和查询的polygon做相交,只返回相交的数据 val queryResult = realmList?.stream()?.filter { @@ -287,10 +294,9 @@ class RealmOperateHelper() { suspend fun queryLinkByLinkPid(linkPid: String): MutableList { val result = mutableListOf() val realm = getRealmDefaultInstance() - val realmList = getRealmTools(RenderEntity::class.java, false).and() + val realmList = getRealmTools(RenderEntity::class.java, false) .notEqualTo("table", DataCodeEnum.OMDB_RD_LINK.name) - .and() - .equalTo("properties['${LinkTable.linkPid}']", linkPid).and() + .equalTo("properties['${LinkTable.linkPid}']", linkPid) .findAll() result.addAll(realm.copyFromRealm(realmList)) return result @@ -383,14 +389,15 @@ class RealmOperateHelper() { } fun getRealmDefaultInstance(): Realm { - if(isUpdate){ + if (isUpdate) { + Log.e("jingo", "数据库更新") Realm.getDefaultInstance().refresh() isUpdate = false; } return Realm.getDefaultInstance() } - fun updateRealmDefaultInstance(){ + fun updateRealmDefaultInstance() { isUpdate = true } } diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt index 527528b5..e8aa4950 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt @@ -533,6 +533,7 @@ class MainActivity : BaseActivity() { mapController.measureLayerHandler.measureValueLiveData.observe(this) { valueView.text = it.valueString unitView.text = it.unit + ClipboardUtils.copyText("${it.valueString}${it.unit}") } mapController.measureLayerHandler.tempMeasureValueLiveData.observe(this) { diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskAdapter.kt index 1c5d8efa..ca4401d9 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskAdapter.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskAdapter.kt @@ -13,6 +13,7 @@ import com.navinfo.omqs.ui.other.BaseViewHolder interface TaskAdapterCallback { fun itemOnClick(bean: HadLinkDvoBean) fun editOnClick(position: Int, bean: HadLinkDvoBean) + fun scrollPosition(position: Int) } /** @@ -38,10 +39,12 @@ class TaskAdapter( val binding: AdapterTaskBinding = holder.viewBinding as AdapterTaskBinding val bean = data[position] - if(bean.linkStatus==1){ - binding.taskHead.background = binding.root.context.getDrawable(R.drawable.selector_task_head) - }else{ - binding.taskHead.background = binding.root.context.getDrawable(R.drawable.selector_task_head_add_link) + if (bean.linkStatus == 1) { + binding.taskHead.background = + binding.root.context.getDrawable(R.drawable.selector_task_head) + } else { + binding.taskHead.background = + binding.root.context.getDrawable(R.drawable.selector_task_head_add_link) } binding.taskLinkPid.text = "PID:${bean.linkPid}" binding.taskMesh.text = "mesh:${bean.mesh}" @@ -58,6 +61,11 @@ class TaskAdapter( callback.itemOnClick(bean) } } + if (bean.reason != "") { + binding.taskEdit.setImageDrawable(binding.root.context.getDrawable(R.drawable.baseline_edit_note_48_select_red)) + } else { + binding.taskEdit.setImageDrawable(binding.root.context.getDrawable(R.drawable.selector_task_link_edit_icon)) + } binding.taskEdit.isSelected = bean.reason != "" binding.taskEdit.setOnClickListener { callback.editOnClick(position, bean) @@ -68,6 +76,21 @@ class TaskAdapter( fun resetSelect() { selectPosition = -1 } + + fun setSelectTag(tag: String) { + for (i in data.indices) { + if (data[i].linkPid == tag) { + if (selectPosition > -1) + notifyItemChanged(selectPosition) + selectPosition = i + notifyItemChanged(i) + if(callback != null){ + callback.scrollPosition(i) + } + break + } + } + } } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskFragment.kt index e053d264..3bac53cc 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskFragment.kt @@ -48,6 +48,10 @@ class TaskFragment : BaseFragment() { override fun editOnClick(position: Int, bean: HadLinkDvoBean) { showLinkEditDialog(position, bean) } + + override fun scrollPosition(position: Int) { + binding.taskRecyclerview.scrollToPosition(position) + } }) } @@ -120,6 +124,9 @@ class TaskFragment : BaseFragment() { } }) + viewModel.liveDataSelectLink.observe(viewLifecycleOwner){ + adapter.setSelectTag(it) + } } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt index 736b213e..1c21774b 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt @@ -5,6 +5,7 @@ import android.content.SharedPreferences import android.content.SharedPreferences.OnSharedPreferenceChangeListener import android.os.Build import android.view.View +import androidx.annotation.RequiresApi import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope @@ -66,6 +67,11 @@ class TaskViewModel @Inject constructor( */ val liveDataToastMessage = MutableLiveData() + /** + * 点击地图选中的link + */ + val liveDataSelectLink = MutableLiveData() + /** * 当前选中的任务 */ @@ -85,6 +91,79 @@ class TaskViewModel @Inject constructor( init { sharedPreferences.registerOnSharedPreferenceChangeListener(this) + mapController.mMapView.addOnNIMapClickListener(TAG, object : OnGeoPointClickListener { + @RequiresApi(Build.VERSION_CODES.N) + override fun onMapClick(tag: String, point: GeoPoint) { + if (tag == TAG) { + if (liveDataSelectNewLink.value == true) { + viewModelScope.launch(Dispatchers.Default) { + if (currentSelectTaskBean == null) { + liveDataToastMessage.postValue("还没有开启任何任务") + } else { + val links = realmOperateHelper.queryLink( + point = point, + ) + if (links.isNotEmpty()) { + val l = links[0] + for (link in currentSelectTaskBean!!.hadLinkDvoList) { + if (link.linkPid == l.properties["linkPid"]) { + return@launch + } + } + val hadLinkDvoBean = HadLinkDvoBean( + taskId = currentSelectTaskBean!!.id, + linkPid = l.properties["linkPid"]!!, + geometry = l.geometry, + linkStatus = 2 + ) + currentSelectTaskBean!!.hadLinkDvoList.add( + hadLinkDvoBean + ) + val realm = Realm.getDefaultInstance() + realm.executeTransaction { r -> + r.copyToRealmOrUpdate(hadLinkDvoBean) + r.copyToRealmOrUpdate(currentSelectTaskBean!!) + } + //根据Link数据查询对应数据上要素,对要素进行显示重置 + l.properties["linkPid"]?.let { + realmOperateHelper.queryLinkToMutableRenderEntityList(it) + ?.forEach { renderEntity -> + if (renderEntity.enable != 1) { + renderEntity.enable = 1 + realm.executeTransaction { r -> + r.copyToRealmOrUpdate(renderEntity) + } + } + } + } + liveDataTaskLinks.postValue(currentSelectTaskBean!!.hadLinkDvoList) + mapController.lineHandler.addTaskLink(hadLinkDvoBean) + mapController.layerManagerHandler.updateOMDBVectorTileLayer() + mapController.mMapView.vtmMap.updateMap(true) + } + } + } + }else { + viewModelScope.launch(Dispatchers.IO) { + val links = realmOperateHelper.queryLink( + point = point, + ) + if (links.isNotEmpty()) { + val l = links[0] + for (link in currentSelectTaskBean!!.hadLinkDvoList) { + if (link.linkPid == l.properties["linkPid"]) { + liveDataSelectLink.postValue(link.linkPid) + mapController.lineHandler.showLine(link.geometry) + break + } + } + } + } + } + } + } + }) + } /** @@ -106,10 +185,9 @@ class TaskViewModel @Inject constructor( val nowTime: Long = DateTimeUtil.getNowDate().time val beginNowTime: Long = nowTime - 90 * 3600 * 24 * 1000L val syncUpload: Int = FileManager.Companion.FileUploadStatus.DONE - val objects = - realm.where(TaskBean::class.java).notEqualTo("syncStatus", syncUpload).or() - .between("operationTime", beginNowTime, nowTime) - .equalTo("syncStatus", syncUpload).findAll().sort("id") + val objects = realm.where(TaskBean::class.java).notEqualTo("syncStatus", syncUpload).or() + .between("operationTime", beginNowTime, nowTime).equalTo("syncStatus", syncUpload) + .findAll().sort("id") val taskList = realm.copyFromRealm(objects) for (item in taskList) { FileManager.checkOMDBFileInfo(item) @@ -187,8 +265,7 @@ class TaskViewModel @Inject constructor( //重新加载轨迹 viewModelScope.launch(Dispatchers.IO) { val list: List? = TraceDataBase.getDatabase( - mapController.mMapView.context, - Constant.USER_DATA_PATH + mapController.mMapView.context, Constant.USER_DATA_PATH ).niLocationDao.findToTaskIdAll(taskBean.id.toString()) list!!.forEach { mapController.markerHandle.addNiLocationMarkerItem(it) @@ -216,6 +293,7 @@ class TaskViewModel @Inject constructor( } override fun onCleared() { + mapController.mMapView.removeOnNIMapClickListener(TAG) mapController.lineHandler.removeLine() sharedPreferences.unregisterOnSharedPreferenceChangeListener(this) super.onCleared() @@ -245,18 +323,12 @@ class TaskViewModel @Inject constructor( * 筛选任务列表 */ fun filterTaskList(key: String) { - if (filterTaskListJob != null) - filterTaskListJob!!.cancel() + if (filterTaskListJob != null) filterTaskListJob!!.cancel() filterTaskListJob = viewModelScope.launch(Dispatchers.IO) { delay(500) val realm = Realm.getDefaultInstance() - val list = realm.where(TaskBean::class.java) - .contains("evaluationTaskName", key) - .or() - .contains("dataVersion", key) - .or() - .contains("cityName", key) - .findAll() + val list = realm.where(TaskBean::class.java).contains("evaluationTaskName", key).or() + .contains("dataVersion", key).or().contains("cityName", key).findAll() liveDataTaskList.postValue(realm.copyFromRealm(list)) } } @@ -265,17 +337,14 @@ class TaskViewModel @Inject constructor( * 筛选link */ fun filterTask(pidKey: String) { - if (currentSelectTaskBean == null) - return + if (currentSelectTaskBean == null) return - if (filterTaskJob != null) - filterTaskJob!!.cancel() + if (filterTaskJob != null) filterTaskJob!!.cancel() filterTaskJob = viewModelScope.launch(Dispatchers.Default) { delay(500) val list = mutableListOf() for (item in currentSelectTaskBean!!.hadLinkDvoList) { - if (item.linkPid.contains(pidKey)) - list.add(item) + if (item.linkPid.contains(pidKey)) list.add(item) } liveDataTaskLinks.postValue(list) } @@ -295,8 +364,8 @@ class TaskViewModel @Inject constructor( viewModelScope.launch(Dispatchers.IO) { val realm = Realm.getDefaultInstance() realm.executeTransaction { - val objects = it.where(TaskBean::class.java) - .equalTo("id", taskBean.id).findFirst() + val objects = + it.where(TaskBean::class.java).equalTo("id", taskBean.id).findFirst() objects?.deleteFromRealm() } //遍历删除对应的数据 @@ -317,10 +386,10 @@ class TaskViewModel @Inject constructor( val nowTime: Long = DateTimeUtil.getNowDate().time val beginNowTime: Long = nowTime - 90 * 3600 * 24 * 1000L val syncUpload: Int = FileManager.Companion.FileUploadStatus.DONE - val objects = realm.where(TaskBean::class.java) - .notEqualTo("syncStatus", syncUpload).or() - .between("operationTime", beginNowTime, nowTime) - .equalTo("syncStatus", syncUpload).findAll() + val objects = + realm.where(TaskBean::class.java).notEqualTo("syncStatus", syncUpload).or() + .between("operationTime", beginNowTime, nowTime) + .equalTo("syncStatus", syncUpload).findAll() val taskList = realm.copyFromRealm(objects) for (item in taskList) { FileManager.checkOMDBFileInfo(item) @@ -342,9 +411,9 @@ class TaskViewModel @Inject constructor( viewModelScope.launch(Dispatchers.IO) { val realm = Realm.getDefaultInstance() taskBean.hadLinkDvoList.forEach { hadLinkDvoBean -> - val objects = realm.where(QsRecordBean::class.java) - .equalTo("linkId", hadLinkDvoBean.linkPid).and() - .equalTo("taskId", hadLinkDvoBean.taskId).findAll() + val objects = + realm.where(QsRecordBean::class.java).equalTo("linkId", hadLinkDvoBean.linkPid) + .and().equalTo("taskId", hadLinkDvoBean.taskId).findAll() val map: MutableMap = HashMap() if (objects.isEmpty() && hadLinkDvoBean.reason.isEmpty()) { withContext(Dispatchers.Main) { @@ -388,68 +457,67 @@ class TaskViewModel @Inject constructor( */ fun setSelectLink(selected: Boolean) { liveDataSelectNewLink.value = selected - //开始捕捉 - if (selected) { - mapController.mMapView.addOnNIMapClickListener(TAG, object : OnGeoPointClickListener { - override fun onMapClick(tag: String, point: GeoPoint) { - if (tag == TAG) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - viewModelScope.launch(Dispatchers.Default) { - if (currentSelectTaskBean == null) { - liveDataToastMessage.postValue("还没有开启任何任务") - } else { - val links = realmOperateHelper.queryLink( - point = point, - ) - if (links.isNotEmpty()) { - val l = links[0] - for (link in currentSelectTaskBean!!.hadLinkDvoList) { - if (link.linkPid == l.properties["linkPid"]) { - return@launch - } - } - val hadLinkDvoBean = HadLinkDvoBean( - taskId = currentSelectTaskBean!!.id, - linkPid = l.properties["linkPid"]!!, - geometry = l.geometry, - linkStatus = 2 - ) - currentSelectTaskBean!!.hadLinkDvoList.add( - hadLinkDvoBean - ) - val realm = Realm.getDefaultInstance() - realm.executeTransaction { r -> - r.copyToRealmOrUpdate(hadLinkDvoBean) - r.copyToRealmOrUpdate(currentSelectTaskBean!!) - } - //根据Link数据查询对应数据上要素,对要素进行显示重置 - l.properties["linkPid"]?.let { - realmOperateHelper.queryLinkToMutableRenderEntityList(it) - ?.forEach { renderEntity -> - if(renderEntity.enable!=1){ - renderEntity.enable = 1 - realm.executeTransaction { r -> - r.copyToRealmOrUpdate(renderEntity) - } - } - } - } - liveDataTaskLinks.postValue(currentSelectTaskBean!!.hadLinkDvoList) - mapController.lineHandler.addTaskLink(hadLinkDvoBean) - mapController.layerManagerHandler.updateOMDBVectorTileLayer() - mapController.mMapView.vtmMap.updateMap(true) - } - } - } - } - } - } - - }) - } else { - mapController.mMapView.removeOnNIMapClickListener(TAG) - mapController.lineHandler.removeLine() - } +// //开始捕捉 +// if (selected) { +// mapController.mMapView.addOnNIMapClickListener(TAG, object : OnGeoPointClickListener { +// override fun onMapClick(tag: String, point: GeoPoint) { +// if (tag == TAG) { +// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { +// viewModelScope.launch(Dispatchers.Default) { +// if (currentSelectTaskBean == null) { +// liveDataToastMessage.postValue("还没有开启任何任务") +// } else { +// val links = realmOperateHelper.queryLink( +// point = point, +// ) +// if (links.isNotEmpty()) { +// val l = links[0] +// for (link in currentSelectTaskBean!!.hadLinkDvoList) { +// if (link.linkPid == l.properties["linkPid"]) { +// return@launch +// } +// } +// val hadLinkDvoBean = HadLinkDvoBean( +// taskId = currentSelectTaskBean!!.id, +// linkPid = l.properties["linkPid"]!!, +// geometry = l.geometry, +// linkStatus = 2 +// ) +// currentSelectTaskBean!!.hadLinkDvoList.add( +// hadLinkDvoBean +// ) +// val realm = Realm.getDefaultInstance() +// realm.executeTransaction { r -> +// r.copyToRealmOrUpdate(hadLinkDvoBean) +// r.copyToRealmOrUpdate(currentSelectTaskBean!!) +// } +// //根据Link数据查询对应数据上要素,对要素进行显示重置 +// l.properties["linkPid"]?.let { +// realmOperateHelper.queryLinkToMutableRenderEntityList(it) +// ?.forEach { renderEntity -> +// if (renderEntity.enable != 1) { +// renderEntity.enable = 1 +// realm.executeTransaction { r -> +// r.copyToRealmOrUpdate(renderEntity) +// } +// } +// } +// } +// liveDataTaskLinks.postValue(currentSelectTaskBean!!.hadLinkDvoList) +// mapController.lineHandler.addTaskLink(hadLinkDvoBean) +// mapController.layerManagerHandler.updateOMDBVectorTileLayer() +// mapController.mMapView.vtmMap.updateMap(true) +// } +// } +// } +// } +// } +// } +// }) +// } else { +// mapController.mMapView.removeOnNIMapClickListener(TAG) +// mapController.lineHandler.removeLine() +// } } /** @@ -480,10 +548,10 @@ class TaskViewModel @Inject constructor( val realm = Realm.getDefaultInstance() //重置数据为隐藏 - if(hadLinkDvoBean.linkStatus==2){ + if (hadLinkDvoBean.linkStatus == 2) { realmOperateHelper.queryLinkToMutableRenderEntityList(hadLinkDvoBean.linkPid) ?.forEach { renderEntity -> - if(renderEntity.enable==1){ + if (renderEntity.enable == 1) { renderEntity.enable = 0 realm.executeTransaction { r -> r.copyToRealmOrUpdate(renderEntity) @@ -505,9 +573,8 @@ class TaskViewModel @Inject constructor( .equalTo("linkPid", hadLinkDvoBean.linkPid).findFirst() ?.deleteFromRealm() val markers = realm.where(QsRecordBean::class.java) - .equalTo("linkId", hadLinkDvoBean.linkPid) - .and().equalTo("taskId", hadLinkDvoBean.taskId) - .findAll() + .equalTo("linkId", hadLinkDvoBean.linkPid).and() + .equalTo("taskId", hadLinkDvoBean.taskId).findAll() if (markers != null) { for (marker in markers) { mapController.markerHandle.removeQsRecordMark(marker) diff --git a/app/src/main/java/com/navinfo/omqs/ui/widget/SignUtil.kt b/app/src/main/java/com/navinfo/omqs/ui/widget/SignUtil.kt index f6d4f88e..4db20a7a 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/widget/SignUtil.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/widget/SignUtil.kt @@ -832,11 +832,43 @@ class SignUtil { */ fun getElectronicEyeMoreInfo(renderEntity: RenderEntity): List { val list = mutableListOf() + + + val dir = when (renderEntity.properties["direct"]) { + "2" -> "顺方向" + "3" -> "逆方向" + else -> "" + } + if (dir != "") { + list.add( + TwoItemAdapterItem( + title = "作用方向", + text = dir + ) + ) + } + + val kindUp = when (renderEntity.properties["kindUp"]) { + "0" -> "未调查" + "1" -> "限速电子眼" + "4" -> "区间测速电子眼" + "5" -> "交通信号灯电子眼" + "6" -> "专用车道电子眼" + "7" -> "违章电子眼" + "11" -> "路况监控电子眼" + "19" -> "交通标线电子眼" + "20" -> "专用功能电子眼" + else -> "" + } + + list.add(TwoItemAdapterItem(title = "电子眼类型大分类", text = kindUp)) + val kindCode = renderEntity.properties["kind"]!!.toInt() - val kind = TwoItemAdapterItem( - title = "电子眼类型", text = getElectronicEyeKindType(kindCode) + list.add( + TwoItemAdapterItem( + title = "电子眼类型", text = getElectronicEyeKindType(kindCode) + ) ) - list.add(kind) when (kindCode) { 1, 2, 3, 4, 5, 6, 20, 21 -> { list.add( @@ -870,6 +902,9 @@ class SignUtil { ) ) } + list.add( TwoItemAdapterItem( + title = "照射角度", text = "${renderEntity.properties["angle"]}" + )) return list } @@ -1125,12 +1160,11 @@ class SignUtil { ) } DataCodeEnum.OMDB_LINK_SPEEDLIMIT.code -> { - val direction = data.properties["direction"] - var dir = "" - if (direction == "2") { - dir = "顺方向" - } else if (direction == "3") { - dir = "逆方向" + + val dir = when (data.properties["direction"]) { + "2" -> "顺方向" + "3" -> "逆方向" + else -> "" } if (dir != "") { list.add( diff --git a/app/src/main/java/com/navinfo/omqs/util/SpeakMode.kt b/app/src/main/java/com/navinfo/omqs/util/SpeakMode.kt index 9674b77d..0bb08846 100644 --- a/app/src/main/java/com/navinfo/omqs/util/SpeakMode.kt +++ b/app/src/main/java/com/navinfo/omqs/util/SpeakMode.kt @@ -55,20 +55,22 @@ class SpeakMode(private val context: Context) : TextToSpeech.OnInitListener { fun setData(json: String?) {} override fun onInit(status: Int) { this.status = status - val result = mTextToSpeech.setLanguage(Locale.CHINESE) - if (result == TextToSpeech.LANG_MISSING_DATA - || result == TextToSpeech.LANG_NOT_SUPPORTED - ) { - if (context != null) { - val firstDialog = FirstDialog(context) - firstDialog.setTitle("提示") - firstDialog.setMessage("设备不支持语音播报,请先下载语音助手。") - firstDialog.setConfirmListener { dialog, _ -> dialog.dismiss() } - firstDialog.setNegativeView(View.GONE) - firstDialog.show() + if(mTextToSpeech != null) { + val result = mTextToSpeech.setLanguage(Locale.CHINESE) + if (result == TextToSpeech.LANG_MISSING_DATA + || result == TextToSpeech.LANG_NOT_SUPPORTED + ) { + if (context != null) { + val firstDialog = FirstDialog(context) + firstDialog.setTitle("提示") + firstDialog.setMessage("设备不支持语音播报,请先下载语音助手。") + firstDialog.setConfirmListener { dialog, _ -> dialog.dismiss() } + firstDialog.setNegativeView(View.GONE) + firstDialog.show() + } } + Log.i("TextToSpeechDemo", status.toString()) } - Log.i("TextToSpeechDemo", status.toString()) } //读语音处理 diff --git a/app/src/main/res/color/selector_black_blue_color.xml b/app/src/main/res/color/selector_black_blue_color.xml index aa4e0cf4..2331e071 100644 --- a/app/src/main/res/color/selector_black_blue_color.xml +++ b/app/src/main/res/color/selector_black_blue_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/color/selector_gray_blue_color.xml b/app/src/main/res/color/selector_gray_blue_color.xml new file mode 100644 index 00000000..344e58c1 --- /dev/null +++ b/app/src/main/res/color/selector_gray_blue_color.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-v24/baseline_edit_note_48_select_red.xml b/app/src/main/res/drawable-v24/baseline_edit_note_48_select_red.xml new file mode 100644 index 00000000..4b4261dd --- /dev/null +++ b/app/src/main/res/drawable-v24/baseline_edit_note_48_select_red.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/adapter_task.xml b/app/src/main/res/layout/adapter_task.xml index 6b73fa64..e290cd74 100644 --- a/app/src/main/res/layout/adapter_task.xml +++ b/app/src/main/res/layout/adapter_task.xml @@ -27,7 +27,7 @@ android:layout_marginRight="30dp" android:layout_toRightOf="@id/task_head" android:text="linkPID" - android:textColor="#15141F" + android:textColor="@color/selector_black_blue_color" android:textSize="14sp" /> @@ -47,7 +47,7 @@ android:layout_marginTop="5dp" android:layout_marginBottom="5dp" android:text="版本号" - android:textColor="@color/gray_121" + android:textColor="@color/selector_gray_blue_color" android:textSize="13sp" />