diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt index d77d232eb4..ba66a8430a 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt @@ -739,10 +739,10 @@ class MoGoHmiProvider : IMoGoHmiProvider { /** * 展示数据落盘拷贝成功对话框 */ - override fun showCopyBagSuccessDialog() { + override fun showCopyBagSuccessDialog(title: String,content: String) { ThreadUtils.runOnUiThread{ context?.let{ - val copyBagSuccessDialog = CopyBagSuccessDialog(it) + val copyBagSuccessDialog = CopyBagSuccessDialog(it,title, content) copyBagSuccessDialog.show() } } @@ -751,10 +751,10 @@ class MoGoHmiProvider : IMoGoHmiProvider { /** * 展示数据落盘辅助工具-异常情况及建议操作弹窗 */ - override fun showDiskCopyExceptionDialog() { + override fun showDiskCopyExceptionDialog(title: String,content: String) { ThreadUtils.runOnUiThread{ context?.let{ - val diskCopyExceptionDialog = DiskCopyExceptionDialog(it) + val diskCopyExceptionDialog = DiskCopyExceptionDialog(it, title, content) diskCopyExceptionDialog.show() } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/diskcopy/CopyBagSuccessDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/diskcopy/CopyBagSuccessDialog.kt index 070cbd7d90..da2277a672 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/diskcopy/CopyBagSuccessDialog.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/diskcopy/CopyBagSuccessDialog.kt @@ -5,11 +5,13 @@ 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 +import kotlinx.android.synthetic.main.dialog_copy_bag_success.tvCopyBagSuccessContent +import kotlinx.android.synthetic.main.dialog_copy_bag_success.tvCopyBagSuccessTitle /** * 数据落盘拷贝成功对话框 */ -class CopyBagSuccessDialog(context: Context) : +class CopyBagSuccessDialog(context: Context,private val title: String,private val content: String) : BaseFloatDialog(context,TAG), LifecycleObserver { companion object { @@ -23,6 +25,8 @@ class CopyBagSuccessDialog(context: Context) : } private fun initView(){ + tvCopyBagSuccessTitle.text = title + tvCopyBagSuccessContent.text = content tvCopyBagSuccessClose.setOnClickListener { dismiss() } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/diskcopy/DiskCopyExceptionDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/diskcopy/DiskCopyExceptionDialog.kt index cbbf9bbd02..0771cf5be0 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/diskcopy/DiskCopyExceptionDialog.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/diskcopy/DiskCopyExceptionDialog.kt @@ -5,11 +5,13 @@ 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_disk_copy_exception.tvCopyExceptionClose +import kotlinx.android.synthetic.main.dialog_disk_copy_exception.tvCopyExceptionContent +import kotlinx.android.synthetic.main.dialog_disk_copy_exception.tvCopyExceptionTitle /** * 数据落盘辅助工具-异常情况及建议操作弹窗 */ -class DiskCopyExceptionDialog(context: Context) : +class DiskCopyExceptionDialog(context: Context,private var title: String,private var content: String) : BaseFloatDialog(context,TAG), LifecycleObserver { companion object { @@ -23,7 +25,8 @@ class DiskCopyExceptionDialog(context: Context) : } private fun initView(){ - + tvCopyExceptionTitle.text = title + tvCopyExceptionContent.text = content //关闭异常弹窗 tvCopyExceptionClose.setOnClickListener { dismiss() diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/diskcopy/DiskCopyView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/diskcopy/DiskCopyView.kt index ac04c9f65a..da6298a66f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/diskcopy/DiskCopyView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/diskcopy/DiskCopyView.kt @@ -5,6 +5,7 @@ import android.util.AttributeSet import android.view.LayoutInflater import android.view.View import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.content.ContextCompat import androidx.recyclerview.widget.GridLayoutManager import com.mogo.eagle.core.data.deva.diskcopy.CopyCalendarInfo import com.mogo.eagle.core.function.api.devatools.IDiskCopyListener @@ -76,15 +77,13 @@ class DiskCopyView @JvmOverloads constructor( tvCurrentWeek.text = parseWeekDescribe(info.currentDayOfWeek) if(info.canCopy){ //开始拷贝数据 - tvCopyStatus.text = resources.getString(R.string.copy_bag_start) - tvCopyStatus.setTextColor(context.getColor(R.color.color_copy_bag_start)) copyStatus = 1 currentCopyDate = info.ipcDateFormat.toInt() + notifyCopyStatusDisplay(copyStatus) }else{ //所选日期无法拷贝 - tvCopyStatus.text = resources.getString(R.string.date_cannot_copy) - tvCopyStatus.setTextColor(context.getColor(R.color.color_date_cannot_copy)) copyStatus = 5 + notifyCopyStatusDisplay(copyStatus) } } }) @@ -92,21 +91,32 @@ class DiskCopyView @JvmOverloads constructor( rvCalendar.layoutManager = gridLayoutManager //拷贝状态 tvCopyStatus.setOnClickListener { - if(copyStatus == 1){ - //开始拷贝数据 - CallerAutoPilotControlManager.sendCopyBagCopyDate(currentCopyDate) - }else if(copyStatus == 2){ - //拷贝中 - ToastUtils.showShort("正在拷贝中...") - }else if(copyStatus == 3){ - //拷贝成功 - ToastUtils.showShort("当前日期数据已拷贝成功") - }else if(copyStatus == 4){ - //剩余空间不足 - ToastUtils.showShort("当前硬盘剩余空间不足") - }else if(copyStatus == 5){ - //所选日期无法拷贝 - ToastUtils.showShort("所选日期无法拷贝") + when (copyStatus) { + 1 -> { + //开始拷贝数据 + val result = CallerAutoPilotControlManager.sendCopyBagCopyDate(currentCopyDate) + if(result){ + //将当前拷贝状态置为拷贝中 + copyStatus = 2 + notifyCopyStatusDisplay(copyStatus) + } + } + 2 -> { + //拷贝中 + ToastUtils.showShort("正在拷贝中...") + } + 3 -> { + //拷贝成功 + ToastUtils.showShort("当前日期数据已拷贝成功") + } + 4 -> { + //剩余空间不足 + ToastUtils.showShort("当前硬盘剩余空间不足") + } + 5 -> { + //所选日期无法拷贝 + ToastUtils.showShort("所选日期无法拷贝") + } } } //拔出硬盘 @@ -122,11 +132,16 @@ class DiskCopyView @JvmOverloads constructor( //数据日期 viewDiskCopyDate.setOnClickListener { - //隐藏当前视图 - pbDiskCopyProgress.visibility = View.GONE - groupDiskCopy.visibility = View.GONE - //展示日历 - groupDateSelect.visibility = View.VISIBLE + if(copyStatus == 2){ + //数据拷贝中,不可再选择日期 + ToastUtils.showShort("数据拷贝中,不可再次选择日期,请耐心等待") + }else{ + //隐藏当前视图 + pbDiskCopyProgress.visibility = View.GONE + groupDiskCopy.visibility = View.GONE + //展示日历 + groupDateSelect.visibility = View.VISIBLE + } } } @@ -275,7 +290,7 @@ class DiskCopyView @JvmOverloads constructor( calendarList.add(CopyCalendarInfo(false,threeDaysAgo.toString(),threeDaysAgoOfIpc,threeDaysAgoOfUi,threeDaysAgoOfWeek)) calendarList.add(CopyCalendarInfo(false,twoDaysAgo.toString(),twoDaysAgoOfIpc,twoDaysAgoOfUi,twoDaysAgoOfWeek)) calendarList.add(CopyCalendarInfo(false,yesterday.toString(),yesterdayOfIpc,yesterdayOfUi,yesterdayOfWeek)) - calendarList.add(CopyCalendarInfo(false,today.toString(),todayOfIpc,todayOfUi,todayOfWeek)) + calendarList.add(CopyCalendarInfo(false,today.toString(),todayOfIpc,todayOfUi,todayOfWeek, isSelected = true)) diskCopyCalendarAdapter?.setData(calendarList) //展示当天日期 tvCurrentDate.text = todayOfUi @@ -287,6 +302,59 @@ class DiskCopyView @JvmOverloads constructor( } } + /** + * 刷新当前拔出硬盘图标显示状态 + */ + private fun notifyCopyStatusDisplay(copyStatus: Int,copyProgress: Int = 0){ + if(copyStatus == 2){ + //拷贝中,显示黄色图标 + ivDiskUnplug.setImageDrawable( + ContextCompat.getDrawable( + context, + R.drawable.icon_disk_unplug_copying + )) + }else{ + //显示蓝色图标 + ivDiskUnplug.setImageDrawable( + ContextCompat.getDrawable( + context, + R.drawable.icon_disk_unplug_connected + )) + } + when(copyStatus){ + //默认状态 + 0->{ + + } + //开始拷贝数据 + 1->{ + tvCopyStatus.text = resources.getString(R.string.copy_bag_start) + tvCopyStatus.setTextColor(context.getColor(R.color.color_copy_bag_start)) + } + //拷贝中 + 2->{ + tvCopyStatus.text = String.format(resources.getString(R.string.disk_copy_progress),copyProgress) + tvCopyStatus.setTextColor(context.getColor(R.color.color_disk_copy_progress)) + } + //拷贝成功 + 3->{ + tvCopyStatus.text = resources.getString(R.string.copy_bag_success) + tvCopyStatus.setTextColor(context.getColor(R.color.color_copy_bag_success)) + } + //剩余空间不足 + 4->{ + tvCopyStatus.text = resources.getString(R.string.disk_not_enough_space) + tvCopyStatus.setTextColor(context.getColor(R.color.color_disk_not_enough_space)) + } + //所选日期无法拷贝 + 5->{ + tvCopyStatus.text = resources.getString(R.string.date_cannot_copy) + tvCopyStatus.setTextColor(context.getColor(R.color.color_date_cannot_copy)) + } + } + + } + private fun parseWeekDescribe(currentWeek: Int?): String{ return when(currentWeek){ //星期日 @@ -359,6 +427,24 @@ class DiskCopyView @JvmOverloads constructor( } } //挂载成功的信息集合 + Logger.i(TAG,"磁盘空间不足提示: 移动硬盘剩余空间不足,建议更换硬盘="+diskCopy.mountSuccess.tips) + if(diskCopy.mountSuccess.tips.isNotEmpty()){ + //如果磁盘空间不足字段不为空(默认设置的不足100G会提示空间不足,如果收到拷贝开始时会再检查本次拷贝总大小和剩余空间,如果剩余空间不满足本次拷贝也会提示不足) + //则更换磁盘空间进度条展示样式,并且进行弹窗提示 + pbDiskUsedSpaces.progressDrawable = ContextCompat.getDrawable( + context, + R.drawable.progressbar_disk_not_enough_space + ) + //数据拷贝工具异常 + CallerHmiManager.showDiskCopyExceptionDialog("数据拷贝工具异常",diskCopy.mountSuccess.tips) + copyStatus = 4 + notifyCopyStatusDisplay(copyStatus) + }else{ + pbDiskUsedSpaces.progressDrawable = ContextCompat.getDrawable( + context, + R.drawable.progressbar_disk_used_space + ) + } Logger.i(TAG,"磁盘总空间="+diskCopy.mountSuccess.totalSize) Logger.i(TAG,"磁盘剩余空间="+diskCopy.mountSuccess.diskFree) //磁盘剩余空间显示 @@ -368,9 +454,6 @@ class DiskCopyView @JvmOverloads constructor( 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") @@ -385,8 +468,9 @@ class DiskCopyView @JvmOverloads constructor( diskCopyCalendarAdapter?.setData(calendarList) //挂载异常: 移动硬盘挂载失败,请重插或更换硬盘 Logger.i(TAG,"挂载异常="+diskCopy.mountError) - - + if(diskCopy.mountError.isNotEmpty()){ + CallerHmiManager.showDiskCopyExceptionDialog("数据拷贝工具异常",diskCopy.mountError) + } //需要拷贝的文件总大小 Logger.i(TAG,"需要拷贝的文件总大小="+diskCopy.copyTotalSize) //已拷贝大小 @@ -400,22 +484,38 @@ class DiskCopyView @JvmOverloads constructor( val copyProgress = (diskCopy.copiedSize*100/diskCopy.copyTotalSize).toInt() pbDiskCopyProgress.progress = copyProgress //拷贝状态控件显示当前拷贝进度 - tvCopyStatus.text = String.format(resources.getString(R.string.disk_copy_progress),copyProgress) - tvCopyStatus.setTextColor(context.getColor(R.color.color_disk_copy_progress)) + copyStatus = 2 + notifyCopyStatusDisplay(copyStatus) } //拷贝剩余时间 Logger.i(TAG,"拷贝剩余时间="+diskCopy.freeTime) //拷贝是否成功,是-True,否-False Logger.i(TAG,"拷贝是否成功,是-True,否-False="+diskCopy.copyStatus) + if(diskCopy.copyStatus){ + //将当前拷贝状态置为拷贝成功 + copyStatus = 3 + notifyCopyStatusDisplay(copyStatus) + CallerHmiManager.showCopyBagSuccessDialog("数据拷贝完成",diskCopy.successInfo) + } //拷贝异常提示,如域控间连接超时拷贝失败,建议查看各域控是否在线,不在线请重启车辆再试 Logger.i(TAG,"拷贝异常提示="+diskCopy.copyErr) - + if(diskCopy.copyErr.isNotEmpty()){ + //拷贝异常 + CallerHmiManager.showDiskCopyExceptionDialog("数据拷贝工具异常",diskCopy.copyErr) + } //即将中止数据拷贝并安全弹出硬盘,是否继续操作? Logger.i(TAG,"即将中止数据拷贝并安全弹出硬盘,是否继续操作?="+diskCopy.abortData) //硬盘是否已安全弹出,是-True,否-False Logger.i(TAG,"硬盘是否已安全弹出,是-True,否-False="+diskCopy.diskUnmount) + if(diskCopy.diskUnmount){ + ToastUtils.showShort("硬盘已安全弹出") + } //硬盘弹出失败提示:安全弹出失败,建议车辆下电后拔走硬盘 Logger.i(TAG,"硬盘弹出失败提示="+diskCopy.unmountErr) + if(diskCopy.unmountErr.isNotEmpty()){ + //硬盘安全弹出异常 + CallerHmiManager.showDiskCopyExceptionDialog("硬盘安全弹出异常",diskCopy.unmountErr) + } //拷贝成功的信息提示,如当前车辆拷贝的各类型的包各有多少个 Logger.i(TAG,"拷贝成功的信息提示="+diskCopy.successInfo) } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/diskcopy/adapter/DiskCopyCalendarAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/diskcopy/adapter/DiskCopyCalendarAdapter.kt index fbf73453fd..8e79cdd736 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/diskcopy/adapter/DiskCopyCalendarAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/diskcopy/adapter/DiskCopyCalendarAdapter.kt @@ -5,6 +5,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView +import androidx.appcompat.content.res.AppCompatResources import androidx.recyclerview.widget.RecyclerView import com.mogo.eagle.core.data.deva.diskcopy.CopyCalendarInfo import com.mogo.eagle.core.function.hmi.R @@ -17,7 +18,7 @@ class DiskCopyCalendarAdapter(private val context: Context): RecyclerView.Adapte private var data: ArrayList ?= null private val title: Int = 0 private var dateSelectListener: DateSelectListener ?= null - + private var previousDate: CopyCalendarInfo ?= null fun setData(list: ArrayList){ data = list @@ -53,7 +54,20 @@ class DiskCopyCalendarAdapter(private val context: Context): RecyclerView.Adapte }else{ holder.tvCalendarContent.setTextColor(context.getColor(R.color.color_disk_copy_date)) } + if(dateInfo.isSelected){ + holder.tvCalendarContent.background = AppCompatResources + .getDrawable(context,R.drawable.bg_current_select_date) + previousDate = dateInfo + }else{ + holder.tvCalendarContent.background = null + } holder.tvCalendarContent.setOnClickListener { + previousDate?.isSelected = false + dateInfo.isSelected = true + holder.tvCalendarContent.background = AppCompatResources + .getDrawable(context,R.drawable.bg_current_select_date) + previousDate = dateInfo + notifyDataSetChanged() dateSelectListener?.onDateSelect(dateInfo) } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_current_select_date.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_current_select_date.png new file mode 100644 index 0000000000..734b583af9 Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_current_select_date.png differ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/progressbar_disk_not_enough_space.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/progressbar_disk_not_enough_space.xml new file mode 100644 index 0000000000..6a5a76e902 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/progressbar_disk_not_enough_space.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_copy_bag_success.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_copy_bag_success.xml index 98cab912e3..4c98667b05 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_copy_bag_success.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_copy_bag_success.xml @@ -32,12 +32,14 @@ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_disk_copy_exception.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_disk_copy_exception.xml index 2a46d817e8..7c38e66a03 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_disk_copy_exception.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_disk_copy_exception.xml @@ -26,18 +26,22 @@ app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/ivCopyException" android:layout_marginTop="@dimen/dp_30" + android:layout_marginStart="@dimen/dp_30" + android:layout_marginEnd="@dimen/dp_30" android:textColor="@color/white" android:textSize="@dimen/sp_45" /> diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_calendar_content.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_calendar_content.xml index 84acafb0e7..d7bf291ebf 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_calendar_content.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_calendar_content.xml @@ -2,7 +2,7 @@