[6.10.0]数据落盘
This commit is contained in:
@@ -48,6 +48,9 @@ import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.function.hmi.bone.status.fsm.FSMStatusDetailWindowManager
|
||||
import com.mogo.eagle.core.function.hmi.bone.toolkit.ToolKitDataManager
|
||||
import com.mogo.eagle.core.function.hmi.ui.camera.RoadVideoDialog
|
||||
import com.mogo.eagle.core.function.hmi.ui.diskcopy.CopyBagSuccessDialog
|
||||
import com.mogo.eagle.core.function.hmi.ui.diskcopy.DiskCopyExceptionDialog
|
||||
import com.mogo.eagle.core.function.hmi.ui.diskcopy.TerminateCopyDataDialog
|
||||
import com.mogo.eagle.core.function.hmi.ui.lookaround.M1LookAroundView
|
||||
import com.mogo.eagle.core.function.hmi.ui.notice.DispatchDialogManager
|
||||
import com.mogo.eagle.core.function.hmi.ui.notice.NoticeCheckDialog
|
||||
@@ -733,4 +736,40 @@ class MoGoHmiProvider : IMoGoHmiProvider {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 展示数据落盘拷贝成功对话框
|
||||
*/
|
||||
override fun showCopyBagSuccessDialog() {
|
||||
ThreadUtils.runOnUiThread{
|
||||
context?.let{
|
||||
val copyBagSuccessDialog = CopyBagSuccessDialog(it)
|
||||
copyBagSuccessDialog.show()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 展示数据落盘辅助工具-异常情况及建议操作弹窗
|
||||
*/
|
||||
override fun showDiskCopyExceptionDialog() {
|
||||
ThreadUtils.runOnUiThread{
|
||||
context?.let{
|
||||
val diskCopyExceptionDialog = DiskCopyExceptionDialog(it)
|
||||
diskCopyExceptionDialog.show()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 展示数据落盘-终止数据拷贝确认弹窗
|
||||
*/
|
||||
override fun showTerminateCopyDataDialog() {
|
||||
ThreadUtils.runOnUiThread{
|
||||
context?.let{
|
||||
val terminateCopyDataDialog = TerminateCopyDataDialog(it)
|
||||
terminateCopyDataDialog.show()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.mogo.eagle.core.function.hmi.ui.diskcopy
|
||||
|
||||
import android.content.Context
|
||||
import androidx.lifecycle.LifecycleObserver
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
|
||||
import kotlinx.android.synthetic.main.dialog_copy_bag_success.tvCopyBagSuccessClose
|
||||
|
||||
/**
|
||||
* 数据落盘拷贝成功对话框
|
||||
*/
|
||||
class CopyBagSuccessDialog(context: Context) :
|
||||
BaseFloatDialog(context,TAG), LifecycleObserver {
|
||||
|
||||
companion object {
|
||||
private const val TAG = "CopyBagSuccessDialog"
|
||||
}
|
||||
|
||||
init{
|
||||
setContentView(R.layout.dialog_copy_bag_success)
|
||||
setCanceledOnTouchOutside(false)
|
||||
initView()
|
||||
}
|
||||
|
||||
private fun initView(){
|
||||
tvCopyBagSuccessClose.setOnClickListener {
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,22 +3,35 @@ package com.mogo.eagle.core.function.hmi.ui.diskcopy
|
||||
import android.content.Context
|
||||
import android.os.Build
|
||||
import android.util.AttributeSet
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import com.mogo.eagle.core.data.deva.diskcopy.CopyCalendarInfo
|
||||
import com.mogo.eagle.core.function.api.devatools.IDiskCopyListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDiskCopyManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.function.hmi.ui.diskcopy.adapter.DiskCopyCalendarAdapter
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import kotlinx.android.synthetic.main.view_disk_copy.view.groupDateSelect
|
||||
import kotlinx.android.synthetic.main.view_disk_copy.view.groupDiskCopy
|
||||
import kotlinx.android.synthetic.main.view_disk_copy.view.ivDiskUnplug
|
||||
import kotlinx.android.synthetic.main.view_disk_copy.view.pbDiskCopyProgress
|
||||
import kotlinx.android.synthetic.main.view_disk_copy.view.pbDiskUsedSpaces
|
||||
import kotlinx.android.synthetic.main.view_disk_copy.view.rvCalendar
|
||||
import kotlinx.android.synthetic.main.view_disk_copy.view.tvCopyStatus
|
||||
import kotlinx.android.synthetic.main.view_disk_copy.view.tvCurrentDate
|
||||
import kotlinx.android.synthetic.main.view_disk_copy.view.tvCurrentMonth
|
||||
import kotlinx.android.synthetic.main.view_disk_copy.view.tvCurrentWeek
|
||||
import kotlinx.android.synthetic.main.view_disk_copy.view.tvDiskFreeSpace
|
||||
import kotlinx.android.synthetic.main.view_disk_copy.view.tvDiskUsedPercent
|
||||
import kotlinx.android.synthetic.main.view_disk_copy.view.viewDiskCopyDate
|
||||
import packet_mytest_upload.CopyBag
|
||||
import java.time.DayOfWeek
|
||||
import java.time.LocalDate
|
||||
import java.time.Month
|
||||
@@ -31,7 +44,7 @@ class DiskCopyView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr){
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr), IDiskCopyListener {
|
||||
|
||||
companion object {
|
||||
const val TAG = "DiskCopyView"
|
||||
@@ -64,6 +77,15 @@ class DiskCopyView @JvmOverloads constructor(
|
||||
rvCalendar.adapter = diskCopyCalendarAdapter
|
||||
rvCalendar.layoutManager = gridLayoutManager
|
||||
|
||||
//拔出硬盘
|
||||
ivDiskUnplug.setOnClickListener {
|
||||
//TODO
|
||||
|
||||
//如果处于拷贝中,弹出终止数据拷贝确认提示窗
|
||||
CallerHmiManager.showTerminateCopyDataDialog()
|
||||
}
|
||||
|
||||
//数据日期
|
||||
viewDiskCopyDate.setOnClickListener {
|
||||
//隐藏当前视图
|
||||
pbDiskCopyProgress.visibility = View.GONE
|
||||
@@ -204,12 +226,91 @@ class DiskCopyView @JvmOverloads constructor(
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
|
||||
CallerDiskCopyManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
CallerDiskCopyManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据落盘拷贝信息回调
|
||||
*/
|
||||
override fun onCopyBag(diskCopy: CopyBag.DiskCopy) {
|
||||
super.onCopyBag(diskCopy)
|
||||
ThreadUtils.runOnUiThread {
|
||||
//挂载状态
|
||||
Logger.i(TAG,"diskCopy.status="+diskCopy.status)
|
||||
when(diskCopy.status){
|
||||
//挂载成功
|
||||
0->{
|
||||
//显示数据落盘辅助工具视图
|
||||
this@DiskCopyView.visibility = View.VISIBLE
|
||||
}
|
||||
//挂载异常
|
||||
1->{
|
||||
//TODO
|
||||
}
|
||||
//未挂载
|
||||
2->{
|
||||
//隐藏数据落盘辅助工具视图
|
||||
this@DiskCopyView.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
//挂载成功的信息集合
|
||||
Logger.i(TAG,"磁盘总空间="+diskCopy.mountSuccess.totalSize)
|
||||
Logger.i(TAG,"磁盘剩余空间="+diskCopy.mountSuccess.diskFree)
|
||||
//磁盘剩余空间显示
|
||||
tvDiskFreeSpace.text = String.format(resources.getString(R.string.disk_free_space),diskCopy.mountSuccess.diskFree)
|
||||
val diskUsedPercent = ((diskCopy.mountSuccess.totalSize-diskCopy.mountSuccess.diskFree)*100/diskCopy.mountSuccess.totalSize).toInt()
|
||||
//磁盘已用空间百分比文字显示
|
||||
tvDiskUsedPercent.text = String.format(resources.getString(R.string.disk_used_percent),diskUsedPercent)
|
||||
//磁盘已用空间百分比进度条
|
||||
pbDiskUsedSpaces.progress = diskUsedPercent
|
||||
Logger.i(TAG,"磁盘空间不足提示: 移动硬盘剩余空间不足,建议更换硬盘="+diskCopy.mountSuccess.tips)
|
||||
//TODO 需要确定字段具体示意
|
||||
|
||||
Logger.i(TAG,"可拷贝日期数量="+diskCopy.mountSuccess.datesCount)
|
||||
diskCopy.mountSuccess.datesList.forEach {
|
||||
Logger.i(TAG, "可拷贝日期=$it")
|
||||
}
|
||||
|
||||
//挂载异常: 移动硬盘挂载失败,请重插或更换硬盘
|
||||
Logger.i(TAG,"挂载异常="+diskCopy.mountError)
|
||||
|
||||
|
||||
//需要拷贝的文件总大小
|
||||
Logger.i(TAG,"需要拷贝的文件总大小="+diskCopy.copyTotalSize)
|
||||
//已拷贝大小
|
||||
Logger.i(TAG,"已拷贝大小="+diskCopy.copiedSize)
|
||||
if(diskCopy.copiedSize == 0L){
|
||||
//隐藏拷贝进度条
|
||||
pbDiskCopyProgress.visibility = View.GONE
|
||||
}else{
|
||||
//展示拷贝进度条,并且展示进度
|
||||
pbDiskCopyProgress.visibility = View.VISIBLE
|
||||
val copyProgress = (diskCopy.copiedSize*100/diskCopy.copyTotalSize).toInt()
|
||||
pbDiskCopyProgress.progress = copyProgress
|
||||
//拷贝状态控件显示当前拷贝进度
|
||||
tvCopyStatus.text = String.format(resources.getString(R.string.disk_copy_progress),copyProgress)
|
||||
}
|
||||
//拷贝剩余时间
|
||||
Logger.i(TAG,"拷贝剩余时间="+diskCopy.freeTime)
|
||||
//拷贝是否成功,是-True,否-False
|
||||
Logger.i(TAG,"拷贝是否成功,是-True,否-False="+diskCopy.copyStatus)
|
||||
//拷贝异常提示,如域控间连接超时拷贝失败,建议查看各域控是否在线,不在线请重启车辆再试
|
||||
Logger.i(TAG,"拷贝异常提示="+diskCopy.copyErr)
|
||||
|
||||
//即将中止数据拷贝并安全弹出硬盘,是否继续操作?
|
||||
Logger.i(TAG,"即将中止数据拷贝并安全弹出硬盘,是否继续操作?="+diskCopy.abortData)
|
||||
//硬盘是否已安全弹出,是-True,否-False
|
||||
Logger.i(TAG,"硬盘是否已安全弹出,是-True,否-False="+diskCopy.diskUnmount)
|
||||
//硬盘弹出失败提示:安全弹出失败,建议车辆下电后拔走硬盘
|
||||
Logger.i(TAG,"硬盘弹出失败提示="+diskCopy.unmountErr)
|
||||
//拷贝成功的信息提示,如当前车辆拷贝的各类型的包各有多少个
|
||||
Logger.i(TAG,"拷贝成功的信息提示="+diskCopy.successInfo)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package com.mogo.eagle.core.function.hmi.ui.diskcopy
|
||||
|
||||
import android.content.Context
|
||||
import androidx.lifecycle.LifecycleObserver
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
|
||||
import kotlinx.android.synthetic.main.dialog_terminate_copy_data.tvCopyTerminateCancel
|
||||
@@ -26,12 +27,11 @@ class TerminateCopyDataDialog(context: Context) :
|
||||
private fun initView(){
|
||||
//确认终止数据拷贝
|
||||
tvCopyTerminateConfirm.setOnClickListener {
|
||||
//TODO
|
||||
CallerAutoPilotControlManager.sendCopyBagAbortCopy()
|
||||
dismiss()
|
||||
}
|
||||
//取消终止数据拷贝
|
||||
tvCopyTerminateCancel.setOnClickListener {
|
||||
//TODO
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="@dimen/dp_900"
|
||||
android:layout_height="@dimen/dp_620"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:background="@drawable/bg_bone_dialog"
|
||||
app:roundLayoutRadius="@dimen/dp_50">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivCopyBagSuccess"
|
||||
android:layout_width="@dimen/dp_140"
|
||||
android:layout_height="@dimen/dp_140"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_87"
|
||||
android:src="@drawable/icon_ota_upgrade_success"
|
||||
android:contentDescription="@string/copy_bag_success_icon"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvCopyBagSuccessTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/ivCopyBagSuccess"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_45"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvCopyBagSuccessContent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvCopyBagSuccessTitle"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_36"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvCopyBagSuccessClose"
|
||||
android:layout_width="@dimen/dp_356"
|
||||
android:layout_height="@dimen/dp_120"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginBottom="@dimen/dp_62"
|
||||
android:gravity="center"
|
||||
android:text="@string/copy_bag_success_close"
|
||||
android:background="@drawable/bg_dialog_btn"
|
||||
android:textColor="@color/color_2EACFF"
|
||||
android:textSize="@dimen/dp_40"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -284,5 +284,10 @@
|
||||
<string name="disk_copy_terminate_cancel">取消</string>
|
||||
<string name="disk_copy_exception_icon">数据落盘异常图标</string>
|
||||
<string name="disk_copy_exception_close">关闭</string>
|
||||
<string name="copy_bag_success_icon">数据落盘成功图标</string>
|
||||
<string name="copy_bag_success_close">关闭</string>
|
||||
<string name="disk_free_space">%dG可用</string>
|
||||
<string name="disk_used_percent">%d%</string>
|
||||
<string name="disk_copy_progress">拷贝中…%d%</string>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -340,4 +340,19 @@ interface IMoGoHmiProvider :IProvider{
|
||||
* @param result true升级成功 false升级失败
|
||||
*/
|
||||
fun showOTAResultDialog(result: Boolean)
|
||||
|
||||
/**
|
||||
* 展示数据落盘拷贝成功对话框
|
||||
*/
|
||||
fun showCopyBagSuccessDialog()
|
||||
|
||||
/**
|
||||
* 展示数据落盘辅助工具-异常情况及建议操作弹窗
|
||||
*/
|
||||
fun showDiskCopyExceptionDialog()
|
||||
|
||||
/**
|
||||
* 展示数据落盘-终止数据拷贝确认弹窗
|
||||
*/
|
||||
fun showTerminateCopyDataDialog()
|
||||
}
|
||||
@@ -496,4 +496,25 @@ object CallerHmiManager {
|
||||
hmiProviderApi?.showOTAResultDialog(result)
|
||||
}
|
||||
|
||||
/**
|
||||
* 展示数据落盘拷贝成功对话框
|
||||
*/
|
||||
fun showCopyBagSuccessDialog(){
|
||||
hmiProviderApi?.showCopyBagSuccessDialog()
|
||||
}
|
||||
|
||||
/**
|
||||
* 展示数据落盘辅助工具-异常情况及建议操作弹窗
|
||||
*/
|
||||
fun showDiskCopyExceptionDialog(){
|
||||
hmiProviderApi?.showDiskCopyExceptionDialog()
|
||||
}
|
||||
|
||||
/**
|
||||
* 展示数据落盘-终止数据拷贝确认弹窗
|
||||
*/
|
||||
fun showTerminateCopyDataDialog(){
|
||||
hmiProviderApi?.showTerminateCopyDataDialog()
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user