Merge branch 'master' of gitlab.navinfo.com:CollectVehicle/OneMapQS

This commit is contained in:
squallzhjch 2023-05-26 17:45:56 +08:00
commit e9735ee4d8
22 changed files with 266 additions and 63 deletions

2
.gitmodules vendored
View File

@ -1,3 +1,5 @@
[submodule "vtm"] [submodule "vtm"]
path = vtm path = vtm
url = git@github.com:xiaoyan159/vtm.git url = git@github.com:xiaoyan159/vtm.git
branch = master

View File

@ -12,7 +12,7 @@ data class EvaluationInfo(
val linkPid: String = "",//Link号 val linkPid: String = "",//Link号
@SerializedName("linkStatus") @SerializedName("linkStatus")
val linkStatus: String = "",//Link状态 val linkStatus: Int = 0,//Link状态
@SerializedName("markId") @SerializedName("markId")
val markId: String = "",//Link状态 val markId: String = "",//Link状态
@ -27,7 +27,7 @@ data class EvaluationInfo(
val featureName: String = "",//问题类型 val featureName: String = "",//问题类型
@SerializedName("problemType") @SerializedName("problemType")
val problemType: String = "",//问题现象 val problemType: String = "",//问题现象 0错误 1多余 2遗漏 服务字段定义为Integer使用包装类对应无值情况为空
@SerializedName("problemPhenomenon") @SerializedName("problemPhenomenon")
val problemPhenomenon: String = "",//问题现象 val problemPhenomenon: String = "",//问题现象
@ -48,6 +48,24 @@ data class EvaluationInfo(
val evaluationDate: String = "",//测评日期(yyyy-mm-dd) val evaluationDate: String = "",//测评日期(yyyy-mm-dd)
@SerializedName("evaluationWay") @SerializedName("evaluationWay")
val evaluationWay: String = "现场测评"//测评方式 val evaluationWay: String = "2",//测评方式 1生产测评 2现场测评 服务字段定义为Integer使用包装类对应无值情况为空
@SerializedName("roadClassfcation")
val roadClassfcation: String = "",//道路种别
@SerializedName("roadFunctionGrade")
val roadFunctionGrade: String = "",//道路功能等级
@SerializedName("noEvaluationreason")
val noEvaluationreason: String = "",//未测评原因
@SerializedName("linkLength")
val linkLength: Double = 0.0,//link长度(m 保留3位小数)
@SerializedName("dataLevel")
val dataLevel: String = "",//数据级别
@SerializedName("linstringLength")
val linstringLength: Double = 0.0,//错误要素长度m
) : Parcelable ) : Parcelable

View File

@ -1,6 +1,6 @@
package com.navinfo.omqs.bean package com.navinfo.omqs.bean
data class LoginUserBean( data class LoginUserBean(
var username: String = "", var userCode: String = "",
var password: String = "" var passWord: String = ""
) )

View File

@ -0,0 +1,8 @@
package com.navinfo.omqs.bean
data class SysUserBean(
var userName: String = "",
var passWord: String = "",
var userCode: String = "",
var roleId: Int = 0,
)

View File

@ -0,0 +1,7 @@
package com.navinfo.omqs.http
class DefaultUserResponse<T> {
var success: Boolean = false
var msg: String = ""
var obj: T? = null
}

View File

@ -31,8 +31,8 @@ package com.navinfo.omqs.http
sealed class NetResult<out R> { sealed class NetResult<out R> {
data class Success<out T>(val data: T?) : NetResult<T>() data class Success<out T>(val data: T?) : NetResult<T>()
data class Failure(val code: Int, val msg: String) : NetResult<Nothing>() data class Failure<T>(val code: Int, val msg: String) : NetResult<Nothing>()
data class Error(val exception: Exception) : NetResult<Nothing>() data class Error<T>(val exception: Exception) : NetResult<Nothing>()
object Loading : NetResult<Nothing>() object Loading : NetResult<Nothing>()
/** /**
@ -42,8 +42,8 @@ sealed class NetResult<out R> {
override fun toString(): String { override fun toString(): String {
return when (this) { return when (this) {
is Success<*> -> "网络访问成功返回正确结果Success[data=$data]" is Success<*> -> "网络访问成功返回正确结果Success[data=$data]"
is Failure -> "网络访问成功返回错误结果Failure[$msg]" is Failure<*> -> "网络访问成功返回错误结果Failure[$msg]"
is Error -> "网络访问出错 Error[exception=$exception]" is Error<*> -> "网络访问出错 Error[exception=$exception]"
is Loading -> "网络访问中 Loading" is Loading -> "网络访问中 Loading"
} }
} }

View File

@ -2,6 +2,10 @@ package com.navinfo.omqs.http
import com.navinfo.omqs.bean.OfflineMapCityBean import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.collect.library.data.entity.TaskBean import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.bean.LoginUserBean
import com.navinfo.omqs.bean.SysUserBean
import okhttp3.ResponseBody
import retrofit2.Response
/** /**
@ -16,4 +20,9 @@ interface NetworkService {
* 获取任务列表 * 获取任务列表
*/ */
suspend fun getTaskList(evaluatorNo:String): NetResult<DefaultTaskResponse<List<TaskBean>>> suspend fun getTaskList(evaluatorNo:String): NetResult<DefaultTaskResponse<List<TaskBean>>>
/**
* 登录接口
*/
suspend fun loginUser(loginUserBean: LoginUserBean): NetResult<DefaultUserResponse<SysUserBean>>
} }

View File

@ -2,8 +2,12 @@ package com.navinfo.omqs.http
import com.navinfo.omqs.bean.OfflineMapCityBean import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.collect.library.data.entity.TaskBean import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.bean.LoginUserBean
import com.navinfo.omqs.bean.SysUserBean
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import okhttp3.ResponseBody
import retrofit2.Response
import javax.inject.Inject import javax.inject.Inject
/** /**
@ -24,13 +28,13 @@ class NetworkServiceImpl @Inject constructor(
if (result.code() == 200) { if (result.code() == 200) {
NetResult.Success(result.body()) NetResult.Success(result.body())
} else { } else {
NetResult.Failure(result.code(), result.message()) NetResult.Failure<Any>(result.code(), result.message())
} }
} else { } else {
NetResult.Failure(result.code(), result.message()) NetResult.Failure<Any>(result.code(), result.message())
} }
} catch (e: Exception) { } catch (e: Exception) {
NetResult.Error(e) NetResult.Error<Any>(e)
} }
} }
@ -43,13 +47,32 @@ class NetworkServiceImpl @Inject constructor(
if (result.code() == 200) { if (result.code() == 200) {
NetResult.Success(result.body()) NetResult.Success(result.body())
} else { } else {
NetResult.Failure(result.code(), result.message()) NetResult.Failure<Any>(result.code(), result.message())
} }
} else { } else {
NetResult.Failure(result.code(), result.message()) NetResult.Failure<Any>(result.code(), result.message())
} }
} catch (e: Exception) { } catch (e: Exception) {
NetResult.Error(e) NetResult.Error<Any>(e)
}
}
override suspend fun loginUser(loginUserBean: LoginUserBean): NetResult<DefaultUserResponse<SysUserBean>> =
//在IO线程中运行
withContext(Dispatchers.IO) {
return@withContext try {
val result = netApi.retrofitLoginUser(loginUserBean)
if (result.isSuccessful) {
if (result.code() == 200) {
NetResult.Success(result.body())
} else {
NetResult.Failure<Any>(result.code(), result.message())
}
} else {
NetResult.Failure<Any>(result.code(), result.message())
}
} catch (e: Exception) {
NetResult.Error<Any>(e)
} }
} }
} }

View File

@ -3,6 +3,8 @@ package com.navinfo.omqs.http
import com.navinfo.omqs.bean.EvaluationInfo import com.navinfo.omqs.bean.EvaluationInfo
import com.navinfo.omqs.bean.OfflineMapCityBean import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.collect.library.data.entity.TaskBean import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.bean.LoginUserBean
import com.navinfo.omqs.bean.SysUserBean
import okhttp3.ResponseBody import okhttp3.ResponseBody
import retrofit2.Response import retrofit2.Response
import retrofit2.http.* import retrofit2.http.*
@ -40,6 +42,13 @@ interface RetrofitNetworkServiceAPI {
@GET("/drdc/MapDownload/maplist") @GET("/drdc/MapDownload/maplist")
suspend fun retrofitGetOfflineMapCityList(): Response<List<OfflineMapCityBean>> suspend fun retrofitGetOfflineMapCityList(): Response<List<OfflineMapCityBean>>
/**
* 登录接口
*/
@Headers("Content-Type: application/json")
@POST("/devcp/loginUser")
suspend fun retrofitLoginUser(@Body loginUserBean: LoginUserBean): Response<DefaultUserResponse<SysUserBean>>
/** /**
* 下载文件 * 下载文件
*/ */

View File

@ -121,26 +121,71 @@ class TaskUploadScope(
if (objects != null&&objects.size>0) { if (objects != null&&objects.size>0) {
val copyList = realm.copyFromRealm(objects) val copyList = realm.copyFromRealm(objects)
copyList.forEach { copyList.forEach {
var problemType = "0"
if(it.problemType=="错误"){
problemType = "0"
}else if(it.problemType=="多余"){
problemType = "1"
}else if(it.problemType=="遗漏"){
problemType = "2"
}
var evaluationWay = "2";
/* if(it.evaluationWay=="生产测评"){
evaluationWay = "1"
}else if(it.evaluationWay=="现场测评"){
evaluationWay = "2"
}*/
val evaluationInfo = EvaluationInfo( val evaluationInfo = EvaluationInfo(
evaluationTaskId = taskBean.id.toString(), evaluationTaskId = taskBean.id.toString(),
linkPid = hadLinkDvoBean.linkPid,//"84207223282277331" linkPid = hadLinkDvoBean.linkPid,//"84207223282277331"
linkStatus = "已测评", linkStatus = 1,
markId = hadLinkDvoBean.mesh,//"20065597" markId = hadLinkDvoBean.mesh,//"20065597"
trackPhotoNumber = "", trackPhotoNumber = "",
markGeometry = it.geometry, markGeometry = it.geometry,
featureName = it.classType, featureName = it.classType,
problemType = it.problemType, problemType = problemType,
problemPhenomenon = it.phenomenon, problemPhenomenon = it.phenomenon,
problemDesc = it.description, problemDesc = it.description,
problemLink = it.problemLink, problemLink = it.problemLink,
problemReason = it.cause, problemReason = it.cause,
evaluatorName = it.checkUserId, evaluatorName = it.checkUserId,
evaluationDate = it.checkTime, evaluationDate = it.checkTime,
evaluationWay = "现场测评" evaluationWay = evaluationWay,
roadClassfcation = "",
roadFunctionGrade = "",
noEvaluationreason = "",
linkLength = 0.0,
dataLevel = "",
linstringLength = 0.0,
) )
bodyList.add(evaluationInfo) bodyList.add(evaluationInfo)
} }
}else{
val evaluationInfo = EvaluationInfo(
evaluationTaskId = taskBean.id.toString(),
linkPid = hadLinkDvoBean.linkPid,//"84207223282277331"
linkStatus = 0,
markId = hadLinkDvoBean.mesh,//"20065597"
trackPhotoNumber = "",
markGeometry = "",
featureName = "",
problemType = "",
problemPhenomenon = "",
problemDesc = "",
problemLink = "",
problemReason = "",
evaluatorName = "",
evaluationDate = "",
evaluationWay = "",
roadClassfcation = "",
roadFunctionGrade = "",
noEvaluationreason = "",
linkLength = 0.0,
dataLevel = "",
linstringLength = 0.0,
)
bodyList.add(evaluationInfo)
} }
} }

View File

@ -10,8 +10,9 @@ import androidx.lifecycle.viewModelScope
import com.blankj.utilcode.util.ResourceUtils import com.blankj.utilcode.util.ResourceUtils
import com.navinfo.omqs.Constant import com.navinfo.omqs.Constant
import com.navinfo.omqs.bean.LoginUserBean import com.navinfo.omqs.bean.LoginUserBean
import com.navinfo.omqs.db.MyRealmModule import com.navinfo.omqs.bean.SysUserBean
import com.navinfo.omqs.db.RoomAppDatabase import com.navinfo.omqs.db.RoomAppDatabase
import com.navinfo.omqs.http.DefaultUserResponse
import com.navinfo.omqs.http.NetResult import com.navinfo.omqs.http.NetResult
import com.navinfo.omqs.http.NetworkService import com.navinfo.omqs.http.NetworkService
import com.navinfo.omqs.tools.FileManager import com.navinfo.omqs.tools.FileManager
@ -19,6 +20,7 @@ import dagger.hilt.android.lifecycle.HiltViewModel
import io.realm.Realm import io.realm.Realm
import io.realm.RealmConfiguration import io.realm.RealmConfiguration
import kotlinx.coroutines.* import kotlinx.coroutines.*
import retrofit2.Response
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
import javax.inject.Inject import javax.inject.Inject
@ -74,7 +76,7 @@ class LoginViewModel @Inject constructor(
var jobLogin: Job? = null; var jobLogin: Job? = null;
init { init {
loginUser.value = LoginUserBean(username = "admin", password = "123456") loginUser.value = LoginUserBean(userCode = "02911", passWord = "123456")
} }
@ -82,7 +84,7 @@ class LoginViewModel @Inject constructor(
* 处理注册按钮 * 处理注册按钮
*/ */
fun onClick(view: View) { fun onClick(view: View) {
loginUser.value!!.username = "admin2" loginUser.value!!.userCode = "admin2"
loginUser.value = loginUser.value loginUser.value = loginUser.value
} }
@ -111,12 +113,61 @@ class LoginViewModel @Inject constructor(
// withContext(Dispatchers.IO) { // withContext(Dispatchers.IO) {
//网络访问 //网络访问
loginStatus.postValue(LoginStatus.LOGIN_STATUS_NET_LOADING) loginStatus.postValue(LoginStatus.LOGIN_STATUS_NET_LOADING)
//假装网络访问等待2秒 var userCode = "99999";
delay(1000) //登录访问
when (val result = networkService.loginUser(LoginUserBean(userName,password))) {
is NetResult.Success<*> ->{
if (result.data!=null) {
try {
val defaultUserResponse = result.data as DefaultUserResponse<SysUserBean>
if(defaultUserResponse.success){
if(defaultUserResponse.obj==null|| defaultUserResponse.obj!!.userCode==null){
withContext(Dispatchers.Main) {
Toast.makeText(context, "服务返回用户Code信息错误", Toast.LENGTH_SHORT)
.show()
}
loginStatus.postValue(LoginStatus.LOGIN_STATUS_CANCEL)
return
}else{
userCode = defaultUserResponse.obj?.userCode.toString()
}
}else{
withContext(Dispatchers.Main) {
Toast.makeText(context, "${defaultUserResponse.msg}", Toast.LENGTH_SHORT)
.show()
}
loginStatus.postValue(LoginStatus.LOGIN_STATUS_CANCEL)
return
}
} catch (e: IOException) {
loginStatus.postValue(LoginStatus.LOGIN_STATUS_FOLDER_FAILURE)
}
}
}
is NetResult.Error<*> ->{
withContext(Dispatchers.Main) {
Toast.makeText(context, "${result.exception.message}", Toast.LENGTH_SHORT)
.show()
}
loginStatus.postValue(LoginStatus.LOGIN_STATUS_CANCEL)
return
}
is NetResult.Failure<*> ->{
withContext(Dispatchers.Main) {
Toast.makeText(context, "${result.code}:${result.msg}", Toast.LENGTH_SHORT)
.show()
}
loginStatus.postValue(LoginStatus.LOGIN_STATUS_CANCEL)
return
}
else -> {}
}
//文件夹初始化 //文件夹初始化
try { try {
loginStatus.postValue(LoginStatus.LOGIN_STATUS_FOLDER_INIT) loginStatus.postValue(LoginStatus.LOGIN_STATUS_FOLDER_INIT)
createUserFolder(context, "02911") createUserFolder(context, userCode)
} catch (e: IOException) { } catch (e: IOException) {
loginStatus.postValue(LoginStatus.LOGIN_STATUS_FOLDER_FAILURE) loginStatus.postValue(LoginStatus.LOGIN_STATUS_FOLDER_FAILURE)
} }
@ -134,13 +185,13 @@ class LoginViewModel @Inject constructor(
roomAppDatabase.getOfflineMapDao().insertOrUpdate(result.data) roomAppDatabase.getOfflineMapDao().insertOrUpdate(result.data)
} }
} }
is NetResult.Error -> { is NetResult.Error<*> -> {
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
Toast.makeText(context, "${result.exception.message}", Toast.LENGTH_SHORT) Toast.makeText(context, "${result.exception.message}", Toast.LENGTH_SHORT)
.show() .show()
} }
} }
is NetResult.Failure -> { is NetResult.Failure<*> -> {
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
Toast.makeText(context, "${result.code}:${result.msg}", Toast.LENGTH_SHORT) Toast.makeText(context, "${result.code}:${result.msg}", Toast.LENGTH_SHORT)
.show() .show()

View File

@ -1,5 +1,6 @@
package com.navinfo.omqs.ui.fragment.evaluationresult package com.navinfo.omqs.ui.fragment.evaluationresult
import android.app.Dialog
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
@ -19,6 +20,7 @@ import com.navinfo.omqs.ui.fragment.BaseFragment
import com.navinfo.omqs.ui.other.shareViewModels import com.navinfo.omqs.ui.other.shareViewModels
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import androidx.navigation.findNavController import androidx.navigation.findNavController
import com.navinfo.omqs.ui.dialog.FirstDialog
@AndroidEntryPoint @AndroidEntryPoint
class EvaluationResultFragment : BaseFragment(), View.OnClickListener { class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
@ -65,7 +67,17 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
} }
//返回按钮点击 //返回按钮点击
binding.evaluationBar.setOnClickListener() { binding.evaluationBar.setOnClickListener() {
onBackPressed() val mDialog = FirstDialog(context)
mDialog.setTitle("提示?")
mDialog.setMessage("是否退出,请确认!")
mDialog.setPositiveButton("确定", object : FirstDialog.OnClickListener {
override fun onClick(dialog: Dialog?, which: Int) {
mDialog.dismiss()
onBackPressed()
}
})
mDialog.setNegativeButton("取消", null)
mDialog.show()
} }
//保存事件 //保存事件
@ -76,7 +88,7 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
//删除事件 //删除事件
binding.evaluationBarDelete.setOnClickListener() { binding.evaluationBarDelete.setOnClickListener() {
viewModel.deleteData() viewModel.deleteData(requireContext())
} }

View File

@ -1,6 +1,7 @@
package com.navinfo.omqs.ui.fragment.evaluationresult package com.navinfo.omqs.ui.fragment.evaluationresult
import android.app.Activity import android.app.Activity
import android.app.Dialog
import android.content.Context import android.content.Context
import android.graphics.drawable.AnimationDrawable import android.graphics.drawable.AnimationDrawable
import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.BitmapDrawable
@ -22,12 +23,13 @@ import com.navinfo.collect.library.data.entity.QsRecordBean
import com.navinfo.collect.library.data.entity.RenderEntity.Companion.LinkTable import com.navinfo.collect.library.data.entity.RenderEntity.Companion.LinkTable
import com.navinfo.collect.library.map.NIMapController import com.navinfo.collect.library.map.NIMapController
import com.navinfo.collect.library.utils.GeometryTools import com.navinfo.collect.library.utils.GeometryTools
import com.navinfo.omqs.bean.SignBean
import com.navinfo.omqs.Constant import com.navinfo.omqs.Constant
import com.navinfo.omqs.R import com.navinfo.omqs.R
import com.navinfo.omqs.bean.ChatMsgEntity import com.navinfo.omqs.bean.ChatMsgEntity
import com.navinfo.omqs.bean.SignBean
import com.navinfo.omqs.db.RealmOperateHelper import com.navinfo.omqs.db.RealmOperateHelper
import com.navinfo.omqs.db.RoomAppDatabase import com.navinfo.omqs.db.RoomAppDatabase
import com.navinfo.omqs.ui.dialog.FirstDialog
import com.navinfo.omqs.util.DateTimeUtil import com.navinfo.omqs.util.DateTimeUtil
import com.navinfo.omqs.util.SoundMeter import com.navinfo.omqs.util.SoundMeter
import com.navinfo.omqs.util.SpeakMode import com.navinfo.omqs.util.SpeakMode
@ -326,22 +328,29 @@ class EvaluationResultViewModel @Inject constructor(
} }
} }
fun deleteData() { fun deleteData(context: Context) {
viewModelScope.launch(Dispatchers.IO) { val mDialog = FirstDialog(context)
mDialog.setTitle("提示?")
val realm = Realm.getDefaultInstance() mDialog.setMessage("是否删除Mark请确认")
Log.e("jingo", "realm hashCOde ${realm.hashCode()}") mDialog.setPositiveButton("确定", object : FirstDialog.OnClickListener {
realm.executeTransaction { override fun onClick(dialog: Dialog?, which: Int) {
val objects = mDialog.dismiss()
it.where(QsRecordBean::class.java).equalTo("id", liveDataQsRecordBean.value?.id) viewModelScope.launch(Dispatchers.IO) {
.findFirst() val realm = Realm.getDefaultInstance()
objects?.deleteFromRealm() Log.e("jingo", "realm hashCOde ${realm.hashCode()}")
realm.executeTransaction {
val objects = it.where(QsRecordBean::class.java)
.equalTo("id", liveDataQsRecordBean.value?.id).findFirst()
objects?.deleteFromRealm()
}
mapController.markerHandle.removeQsRecordMark(liveDataQsRecordBean.value!!)
mapController.mMapView.vtmMap.updateMap(true)
liveDataFinish.postValue(true)
}
} }
// realm.close() })
mapController.markerHandle.removeQsRecordMark(liveDataQsRecordBean.value!!) mDialog.setNegativeButton("取消", null)
mapController.mMapView.vtmMap.updateMap(true) mDialog.show()
liveDataFinish.postValue(true)
}
} }
/** /**

View File

@ -91,13 +91,13 @@ class TaskViewModel @Inject constructor(
} }
} }
} }
is NetResult.Error -> { is NetResult.Error<*> -> {
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
Toast.makeText(context, "${result.exception.message}", Toast.LENGTH_SHORT) Toast.makeText(context, "${result.exception.message}", Toast.LENGTH_SHORT)
.show() .show()
} }
} }
is NetResult.Failure -> { is NetResult.Failure<*> -> {
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
Toast.makeText(context, "${result.code}:${result.msg}", Toast.LENGTH_SHORT) Toast.makeText(context, "${result.code}:${result.msg}", Toast.LENGTH_SHORT)
.show() .show()

View File

@ -92,7 +92,7 @@
android:hint="@string/input_user_name" android:hint="@string/input_user_name"
android:lines="1" android:lines="1"
android:background="@drawable/shape_login_inputlayout_bg" android:background="@drawable/shape_login_inputlayout_bg"
android:text="@{loginUserModel.loginUser.username}" android:text="@{loginUserModel.loginUser.userCode}"
tools:ignore="TouchTargetSizeCheck" /> tools:ignore="TouchTargetSizeCheck" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -113,7 +113,7 @@
android:lines="1" android:lines="1"
android:inputType="textPassword" android:inputType="textPassword"
android:background="@drawable/shape_login_inputlayout_bg" android:background="@drawable/shape_login_inputlayout_bg"
android:text="@{loginUserModel.loginUser.password}" android:text="@{loginUserModel.loginUser.passWord}"
tools:ignore="TouchTargetSizeCheck" /> tools:ignore="TouchTargetSizeCheck" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>

View File

@ -58,7 +58,7 @@
style="?android:attr/progressBarStyleHorizontal" style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="16dp" android:layout_height="16dp"
android:layout_below="@id/offline_map_download_btn" android:layout_below="@id/offline_map_city_size"
android:paddingTop="10dp" android:paddingTop="10dp"
android:progressDrawable="@drawable/progress_bg" android:progressDrawable="@drawable/progress_bg"
android:visibility="invisible" /> android:visibility="invisible" />

View File

@ -72,7 +72,8 @@
style="@style/btn_default_stroke_horizontal_round" style="@style/btn_default_stroke_horizontal_round"
android:layout_width="72dp" android:layout_width="72dp"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:layout_alignParentBottom="true" android:layout_below="@id/task_data_version"
android:layout_marginTop="5dp"
android:gravity="center" android:gravity="center"
android:text="下载" android:text="下载"
android:textSize="@dimen/card_title_font_2size" /> android:textSize="@dimen/card_title_font_2size" />
@ -108,7 +109,7 @@
style="?android:attr/progressBarStyleHorizontal" style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="16dp" android:layout_height="16dp"
android:layout_below="@id/task_color" android:layout_below="@id/task_download_btn"
android:paddingTop="10dp" android:paddingTop="10dp"
android:progressDrawable="@drawable/progress_bg" android:progressDrawable="@drawable/progress_bg"
android:visibility="invisible" /> android:visibility="invisible" />

View File

@ -24,6 +24,7 @@
android:id="@+id/evaluation_bar" android:id="@+id/evaluation_bar"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:drawableLeft="@drawable/selector_btn_back_xml"
android:layout_marginLeft="12dp" android:layout_marginLeft="12dp"
android:layout_marginTop="14dp" android:layout_marginTop="14dp"
android:text="Mark" android:text="Mark"
@ -48,6 +49,7 @@
android:id="@+id/evaluation_bar_cancel" android:id="@+id/evaluation_bar_cancel"
android:layout_width="40dp" android:layout_width="40dp"
android:layout_height="40dp" android:layout_height="40dp"
android:visibility="gone"
android:layout_marginRight="10dp" android:layout_marginRight="10dp"
android:background="@color/transparent" android:background="@color/transparent"
android:src="@drawable/icon_fragment_close" android:src="@drawable/icon_fragment_close"

View File

@ -13,6 +13,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
style="@style/left_pannel_title_layout"> style="@style/left_pannel_title_layout">
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/offline_map_back" android:id="@+id/offline_map_back"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -24,7 +25,9 @@
android:background="@drawable/selector_bg_round_button" android:background="@drawable/selector_bg_round_button"
android:foreground="@drawable/ripple_btn_press" android:foreground="@drawable/ripple_btn_press"
style="@style/btn_round" style="@style/btn_round"
android:src="@drawable/ic_baseline_keyboard_arrow_left_24"></androidx.appcompat.widget.AppCompatImageView> android:src="@drawable/ic_baseline_keyboard_arrow_left_24">
</androidx.appcompat.widget.AppCompatImageView>
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title" android:id="@+id/tv_title"
@ -36,19 +39,24 @@
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"></androidx.appcompat.widget.AppCompatTextView> app:layout_constraintBottom_toBottomOf="parent">
</androidx.appcompat.widget.AppCompatTextView>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@id/title_layout" app:layout_constraintTop_toBottomOf="@id/title_layout"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
style="@style/default_card_view"> style="@style/default_card_view">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<com.google.android.material.tabs.TabLayout <com.google.android.material.tabs.TabLayout
android:id="@+id/offline_map_tab_layout" android:id="@+id/offline_map_tab_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -60,22 +68,22 @@
app:tabPadding="0dp" app:tabPadding="0dp"
app:tabIndicator="@null" app:tabIndicator="@null"
app:tabMode="scrollable" app:tabMode="scrollable"
app:tabMinWidth="120dp"
app:tabIndicatorHeight="0dp" app:tabIndicatorHeight="0dp"
app:tabSelectedTextColor="@color/white" app:tabSelectedTextColor="@color/white"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/title_layout"> app:layout_constraintTop_toBottomOf="@id/title_layout">
<com.google.android.material.tabs.TabItem <com.google.android.material.tabs.TabItem
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/default_widget_padding"
android:text="下载管理" /> android:text="下载管理" />
<com.google.android.material.tabs.TabItem <com.google.android.material.tabs.TabItem
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/default_widget_padding"
android:text="城市列表" /> android:text="城市列表" />
</com.google.android.material.tabs.TabLayout> </com.google.android.material.tabs.TabLayout>

View File

@ -10,12 +10,11 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="4dp" android:layout_margin="4dp"
android:drawableLeft="@drawable/selector_text_drawable_left_white_blue"
android:drawablePadding="10dp"
android:gravity="center" android:gravity="center"
android:padding="4dp" android:padding="4dp"
android:drawablePadding="10dp"
android:drawableLeft="@drawable/selector_text_drawable_left_white_blue"
android:textColor="@color/selector_black_blue_color" android:textColor="@color/selector_black_blue_color"
android:textSize="14sp"/> android:textSize="14sp" />
</RelativeLayout>
</RelativeLayout>

View File

@ -1878,6 +1878,7 @@
<!-- <line stroke="#14582c" width="0.1"/>--> <!-- <line stroke="#14582c" width="0.1"/>-->
<!-- <caption k="angle" fill="#000000" priority="0" size="14" stroke="#ffffff"--> <!-- <caption k="angle" fill="#000000" priority="0" size="14" stroke="#ffffff"-->
<!-- stroke-width="1.0"></caption>--> <!-- stroke-width="1.0"></caption>-->
</m> </m>
</m> </m>
</rendertheme> </rendertheme>

1
vtm

@ -1 +0,0 @@
Subproject commit 1ee201a41f78f169873848209a3f3bdac36f185a