diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt index 4b4f7906fe..f613a73661 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt @@ -5,6 +5,8 @@ import android.util.AttributeSet import android.view.LayoutInflater import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI import kotlinx.android.synthetic.main.view_bone_tab.view.carInfoTabView import kotlinx.android.synthetic.main.view_bone_tab.view.tabSwitchCarInfo import kotlinx.android.synthetic.main.view_bone_tab.view.tabSwitchMore @@ -18,6 +20,10 @@ class BoneTabLayout @JvmOverloads constructor( defStyleAttr: Int = 0 ) : ConstraintLayout(context, attrs, defStyleAttr) { + companion object{ + private const val TAG = "BoneTabLayout" + } + private enum class TabType { NONE, CAR_INFO, @@ -27,6 +33,7 @@ class BoneTabLayout @JvmOverloads constructor( } private var tabType by Delegates.observable(TabType.NONE) { _, oldValue, newValue -> + CallerLogger.i("$M_HMI$TAG", "tabType old:$oldValue , new:$newValue") if (oldValue != newValue) { updateTab(oldValue, false) updateTab(newValue, true) @@ -59,11 +66,12 @@ class BoneTabLayout @JvmOverloads constructor( tabType = if (tabType == changeType) { TabType.NONE } else { - TabType.CAR_INFO + changeType } } private fun updateTab(tabType: TabType, check: Boolean) { + CallerLogger.i("$M_HMI$TAG", "updateTab tabType:$tabType , check:$check") when (tabType) { TabType.CAR_INFO -> { tabSwitchCarInfo.switchTab(check) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/CarInfoTabView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/CarInfoTabView.kt index eadbfec4fb..fc13c32370 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/CarInfoTabView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/CarInfoTabView.kt @@ -6,10 +6,12 @@ import android.view.LayoutInflater import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.commons.storage.SharedPrefsMgr import com.mogo.eagle.core.data.app.AppConfigInfo +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarConfigListener import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener import com.mogo.eagle.core.function.api.hmi.autopilot.IMoGoCheckAutoPilotBtnListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager @@ -20,6 +22,7 @@ import com.mogo.eagle.core.function.hmi.ui.tools.OfflineMapDialog import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI import com.mogo.eagle.core.utilcode.util.AppUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler @@ -33,23 +36,32 @@ import kotlinx.android.synthetic.main.view_car_info_tab.view.tvHDMapUpdate import kotlinx.android.synthetic.main.view_car_info_tab.view.tvPADUpdate import kotlinx.android.synthetic.main.view_car_info_tab.view.tvPadVersion import kotlinx.android.synthetic.main.view_car_info_tab.view.tvSnInfo +import mogo.telematics.pad.MessagePad import system_master.SsmInfo import system_master.SystemStatusInfo +private fun String.parsePlateNo(): String { + return substring(0, 2) + " " + substring(2) +} + +private fun String.parsePhoneNo(): String { + return take(3) + "****" + takeLast(4) +} class CarInfoTabView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoCheckAutoPilotBtnListener, - IMoGoAutopilotStatusListener, IMoGoDevaToolsListener { + IMoGoAutopilotStatusListener, IMoGoDevaToolsListener, IMoGoAutopilotCarConfigListener { - companion object{ + companion object { private const val TAG = "CarInfoTabView" } private var loginOut: (() -> Unit)? = null + @Volatile private var isHDCached = false @@ -62,6 +74,7 @@ class CarInfoTabView @JvmOverloads constructor( super.onAttachedToWindow() CallerHmiListenerManager.addListener(TAG, this) CallerAutoPilotStatusListenerManager.addListener(TAG, this) + CallerAutopilotCarConfigListenerManager.addListener(TAG, this) CallerDevaToolsListenerManager.addListener(TAG, this) } @@ -78,9 +91,16 @@ class CarInfoTabView @JvmOverloads constructor( updateAdHdMapVersion() tvSnInfo.text = SharedPrefsMgr.getInstance().sn + + if (AppConfigInfo.plateNumber.isNotEmpty()) { + val plateNo = AppConfigInfo.plateNumber + tvCarNo.text = plateNo.parsePlateNo() + } + tvCarExit.setOnClickListener { loginOut?.invoke() } + //鹰眼版本 检查更新 tvPADUpdate.setOnClickListener { HmiActionLog.hmiAction( @@ -109,7 +129,8 @@ class CarInfoTabView @JvmOverloads constructor( ToastUtils.showShort(resources.getString(R.string.location_try_again)) } else { // 拿到了高精的经纬度 val dialog = OfflineMapDialog(context) - dialog.location = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84() + dialog.location = + CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84() dialog.show() } } else {// 拿到高德的cityCode @@ -117,6 +138,7 @@ class CarInfoTabView @JvmOverloads constructor( } } } + MogoData.mogoMapData.get()?.isCityDataCached { updateHDDataCacheStatus(it) } @@ -126,23 +148,37 @@ class CarInfoTabView @JvmOverloads constructor( tvPadVersion.text = tvPadVersion.text.toString() + AppUtils.getAppVersionName() } - fun setLoginInfo(loginNo: String) { if (loginNo.isNotEmpty()) { - tvCarLoginInfo.text = loginNo.take(3) + "****" + loginNo.takeLast(4) + tvCarLoginInfo.text = loginNo.parsePhoneNo() } else { tvCarLoginInfo.text = "" } } fun setCarNo(carNo: String) { - // todo emArrow 需要同时监听工控的车牌信息,防止调试跳过无车牌内容(链接先后顺序不一致也会导致数据显示异常) - if (carNo.isEmpty()) { + // 监听工控的车牌信息,防止调试跳过无车牌内容(链接先后顺序不一致也会导致数据显示异常) + if (carNo.isNotEmpty()) { + if (tvCarNo.text.isNotEmpty() && tvCarNo.text == carNo) { + CallerLogger.i("$M_HMI$TAG", "已存在车牌号") + return + } + tvCarNo.visibility = VISIBLE + tvCarNo.text = carNo.parsePlateNo() + } else { tvCarNo.visibility = GONE tvCarNo.text = "" - } else { + } + } + + override fun onAutopilotCarConfig(carConfigResp: MessagePad.CarConfigResp) { + super.onAutopilotCarConfig(carConfigResp) + carConfigResp.plateNumber?.let { + if (tvCarNo.text.isNotEmpty() && tvCarNo.text == it) { + return + } tvCarNo.visibility = VISIBLE - tvCarNo.text = carNo.substring(0, 2) + " " + carNo.substring(2); + tvCarNo.text = it.parsePlateNo() } } @@ -168,7 +204,7 @@ class CarInfoTabView @JvmOverloads constructor( } private fun updateAdHdMapVersion() { - if(AppConfigInfo.adHdMapVersion.isNotEmpty()){ + if (AppConfigInfo.adHdMapVersion.isNotEmpty()) { tvADMapVersion.text = tvADMapVersion.text.toString() + AppConfigInfo.adHdMapVersion } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_container.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_container.xml index ebf8963334..4ce289e26c 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_container.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_container.xml @@ -13,7 +13,6 @@ app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" android:layout_marginStart="@dimen/dp_19" - android:elevation="10dp" android:layout_height="wrap_content"/> @@ -31,7 +29,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="@dimen/dp_385" - android:elevation="20dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent"/> \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_tab.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_tab.xml index 2a1cd0bc83..948ba2316c 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_tab.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_tab.xml @@ -1,36 +1,33 @@ + app:layout_constraintTop_toTopOf="parent" /> @@ -41,10 +38,9 @@ android:layout_height="@dimen/dp_140" android:layout_marginStart="@dimen/dp_40" android:layout_marginTop="@dimen/dp_20" - android:elevation="10dp" - app:defaultRes="@drawable/icon_tab_car_info" - app:clickRes="@drawable/icon_tab_car_info_click" app:clickBgRes="@drawable/icon_tab_click_bg" + app:clickRes="@drawable/icon_tab_car_info_click" + app:defaultRes="@drawable/icon_tab_car_info" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -53,9 +49,9 @@ android:layout_width="@dimen/dp_220" android:layout_height="@dimen/dp_140" android:layout_marginTop="@dimen/dp_20" - app:defaultRes="@drawable/icon_tab_msg_box" - app:clickRes="@drawable/icon_tab_msg_box_click" app:clickBgRes="@drawable/icon_tab_click_bg" + app:clickRes="@drawable/icon_tab_msg_box_click" + app:defaultRes="@drawable/icon_tab_msg_box" app:layout_constraintLeft_toRightOf="@+id/tabSwitchCarInfo" app:layout_constraintTop_toTopOf="parent" /> @@ -64,9 +60,9 @@ android:layout_width="@dimen/dp_220" android:layout_height="@dimen/dp_140" android:layout_marginTop="@dimen/dp_20" - app:defaultRes="@drawable/icon_tab_report" - app:clickRes="@drawable/icon_tab_report_click" app:clickBgRes="@drawable/icon_tab_click_bg" + app:clickRes="@drawable/icon_tab_report_click" + app:defaultRes="@drawable/icon_tab_report" app:layout_constraintLeft_toRightOf="@+id/tabSwitchMsgBox" app:layout_constraintTop_toTopOf="parent" /> @@ -75,9 +71,9 @@ android:layout_width="@dimen/dp_220" android:layout_height="@dimen/dp_140" android:layout_marginTop="@dimen/dp_20" - app:defaultRes="@drawable/icon_tab_more" - app:clickRes="@drawable/icon_tab_more_click" app:clickBgRes="@drawable/icon_tab_click_bg" + app:clickRes="@drawable/icon_tab_more_click" + app:defaultRes="@drawable/icon_tab_more" app:layout_constraintLeft_toRightOf="@+id/tabSwitchReport" app:layout_constraintTop_toTopOf="parent" /> diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_car_info_tab.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_car_info_tab.xml index 71785f63ad..7f3d0718b3 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_car_info_tab.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_car_info_tab.xml @@ -6,40 +6,44 @@ android:layout_height="match_parent" android:background="@drawable/bg_tab_item"> + + + + + android:layout_height="@dimen/dp_700" + android:layout_marginTop="@dimen/dp_75" + app:layout_constraintTop_toBottomOf="@+id/topViewPos"> - - - - + android:layout_marginStart="@dimen/dp_40" + android:layout_marginEnd="@dimen/dp_40"> 车辆绑定 版本信息 设备SN - PAD: - AD: - HDMAP: - ADMAP: + PAD: + AD: + HDMAP: + ADMAP: 检查更新 最小化 diff --git a/core/mogo-core-res/src/main/res/values/dimens.xml b/core/mogo-core-res/src/main/res/values/dimens.xml index 20abdadda0..0eacc22ee8 100644 --- a/core/mogo-core-res/src/main/res/values/dimens.xml +++ b/core/mogo-core-res/src/main/res/values/dimens.xml @@ -1036,8 +1036,11 @@ 1114dp 1125dp 1128dp + 1137dp + 1158dp 1170dp 1200dp + 1241dp 1250dp 1261dp 1300dp