From 9aeaf470f597f4683962b5d25e6c4a0a6571e136 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Wed, 12 Feb 2025 18:15:59 +0800 Subject: [PATCH] =?UTF-8?q?[6.10.0]=E6=95=B0=E6=8D=AE=E8=90=BD=E7=9B=98?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/hmi/ui/diskcopy/DiskCopyView.kt | 67 +++++++++++++++++-- .../adapter/DiskCopyCalendarAdapter.kt | 9 ++- .../progressbar_disk_copy_progress.xml | 37 +++++----- .../drawable/progressbar_disk_used_space.xml | 23 +++---- .../src/main/res/layout/view_disk_copy.xml | 2 +- .../src/main/res/values/color.xml | 7 ++ .../src/main/res/values/strings.xml | 8 ++- .../data/deva/diskcopy/CopyCalendarInfo.kt | 5 +- 8 files changed, 114 insertions(+), 44 deletions(-) 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 6934b3400d..ac04c9f65a 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 @@ -8,12 +8,14 @@ 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 com.mogo.eagle.core.utilcode.util.ToastUtils 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 @@ -28,6 +30,7 @@ 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.lang.Exception import java.text.SimpleDateFormat import java.util.Calendar import java.util.Locale @@ -48,6 +51,10 @@ class DiskCopyView @JvmOverloads constructor( private var diskCopyCalendarAdapter: DiskCopyCalendarAdapter ?= null private var calendarList: ArrayList = ArrayList() + //当前拷贝日期 + private var currentCopyDate: Int = 0 + //当前拷贝状态 0:默认状态;1:开始拷贝数据;2:拷贝中;3:拷贝成功;4:剩余空间不足;5:所选日期无法拷贝 + private var copyStatus: Int = 0 init{ LayoutInflater.from(context).inflate(R.layout.view_disk_copy, this, true) @@ -57,7 +64,7 @@ class DiskCopyView @JvmOverloads constructor( private fun initView(){ val gridLayoutManager = GridLayoutManager(context,7) - diskCopyCalendarAdapter = DiskCopyCalendarAdapter() + diskCopyCalendarAdapter = DiskCopyCalendarAdapter(context) diskCopyCalendarAdapter?.setDateSelectListener(object: DiskCopyCalendarAdapter.DateSelectListener{ override fun onDateSelect(info: CopyCalendarInfo) { //切换页面隐藏日历显示,切换为硬盘接入页面 @@ -67,17 +74,50 @@ class DiskCopyView @JvmOverloads constructor( //显示选择日期 tvCurrentDate.text = info.uiDateFormat 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() + }else{ + //所选日期无法拷贝 + tvCopyStatus.text = resources.getString(R.string.date_cannot_copy) + tvCopyStatus.setTextColor(context.getColor(R.color.color_date_cannot_copy)) + copyStatus = 5 + } } }) rvCalendar.adapter = diskCopyCalendarAdapter 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("所选日期无法拷贝") + } + } //拔出硬盘 ivDiskUnplug.setOnClickListener { - //TODO - - //如果处于拷贝中,弹出终止数据拷贝确认提示窗 - CallerHmiManager.showTerminateCopyDataDialog() + if(copyStatus == 2){ + //如果处于拷贝中,弹出终止数据拷贝确认提示窗 + CallerHmiManager.showTerminateCopyDataDialog() + }else{ + //如果处于未拷贝状态,则调用硬盘安全弹出请求 + CallerAutoPilotControlManager.sendCopyBagSafeUnmount() + } } //数据日期 @@ -240,6 +280,11 @@ class DiskCopyView @JvmOverloads constructor( //展示当天日期 tvCurrentDate.text = todayOfUi tvCurrentWeek.text = parseWeekDescribe(todayOfWeek) + try { + currentCopyDate = todayOfIpc.toInt() + }catch (e: Exception){ + Logger.i(TAG,"日期转换异常:$e") + } } private fun parseWeekDescribe(currentWeek: Int?): String{ @@ -330,7 +375,14 @@ class DiskCopyView @JvmOverloads constructor( diskCopy.mountSuccess.datesList.forEach { Logger.i(TAG, "可拷贝日期=$it") } - + calendarList.forEach { + if(!it.isTitle && it.ipcDateFormat.isNotEmpty()){ + if(diskCopy.mountSuccess.datesList.contains(it.ipcDateFormat)){ + it.canCopy = true + } + } + } + diskCopyCalendarAdapter?.setData(calendarList) //挂载异常: 移动硬盘挂载失败,请重插或更换硬盘 Logger.i(TAG,"挂载异常="+diskCopy.mountError) @@ -349,6 +401,7 @@ class DiskCopyView @JvmOverloads constructor( 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)) } //拷贝剩余时间 Logger.i(TAG,"拷贝剩余时间="+diskCopy.freeTime) 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 8a4372bf65..fbf73453fd 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 @@ -1,5 +1,6 @@ package com.mogo.eagle.core.function.hmi.ui.diskcopy.adapter +import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,12 +12,13 @@ import com.mogo.eagle.core.function.hmi.R /** * 数据落盘日历适配器 */ -class DiskCopyCalendarAdapter(): RecyclerView.Adapter() { +class DiskCopyCalendarAdapter(private val context: Context): RecyclerView.Adapter() { private var data: ArrayList ?= null private val title: Int = 0 private var dateSelectListener: DateSelectListener ?= null + fun setData(list: ArrayList){ data = list notifyDataSetChanged() @@ -46,6 +48,11 @@ class DiskCopyCalendarAdapter(): RecyclerView.Adapter() data?.let { val dateInfo = it[position] holder.tvCalendarContent.text = dateInfo.calendarDateFormat + if(dateInfo.canCopy){ + holder.tvCalendarContent.setTextColor(context.getColor(R.color.white)) + }else{ + holder.tvCalendarContent.setTextColor(context.getColor(R.color.color_disk_copy_date)) + } holder.tvCalendarContent.setOnClickListener { dateSelectListener?.onDateSelect(dateInfo) } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/progressbar_disk_copy_progress.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/progressbar_disk_copy_progress.xml index 0fa438a91f..1a60062dd4 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/progressbar_disk_copy_progress.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/progressbar_disk_copy_progress.xml @@ -7,29 +7,28 @@ android:height="@dimen/dp_440" android:gravity="center_vertical"> - - + + - - - - + android:id="@android:id/progress"> + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/progressbar_disk_used_space.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/progressbar_disk_used_space.xml index ea80583557..cc0ecc22e4 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/progressbar_disk_used_space.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/progressbar_disk_used_space.xml @@ -14,17 +14,16 @@ - - - - + android:id="@android:id/progress"> + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_disk_copy.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_disk_copy.xml index 0bf79e25cb..889e6f61fd 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_disk_copy.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_disk_copy.xml @@ -10,9 +10,9 @@ android:layout_width="@dimen/dp_654" android:layout_height="@dimen/dp_440" app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" + android:layout_marginTop="@dimen/dp_14" style="?android:attr/progressBarStyleHorizontal" android:progressDrawable="@drawable/progressbar_disk_copy_progress" android:max="100" diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml index aade1c74ce..30aa0833f5 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml @@ -95,4 +95,11 @@ #FF4E41 + #666666 + #99FFFFFF + #FF2EACFF + #FF26C14F + #FFFF4E41 + #FFFFCD3D + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml index 0030b3858a..647a91337f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml @@ -287,7 +287,11 @@ 数据落盘成功图标 关闭 %dG可用 - %d% - 拷贝中…%d% + %d%% + 拷贝中…%d%% + 开始拷贝数据 + 拷贝成功 + 剩余空间不足 + 所选日期无法拷贝 diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/diskcopy/CopyCalendarInfo.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/diskcopy/CopyCalendarInfo.kt index 481c4addea..cd8d5d0343 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/diskcopy/CopyCalendarInfo.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/diskcopy/CopyCalendarInfo.kt @@ -6,6 +6,7 @@ package com.mogo.eagle.core.data.deva.diskcopy * @param ipcDateFormat 工控机约定格式日期 * @param uiDateFormat UI约定显示日期 * @param currentDayOfWeek 当前星期 + * @param canCopy 当天有可拷贝文件 */ -data class CopyCalendarInfo(var isTitle: Boolean, var calendarDateFormat: String,var ipcDateFormat: String? = "", - var uiDateFormat: String? = "",var currentDayOfWeek: Int? = 0) \ No newline at end of file +data class CopyCalendarInfo(var isTitle: Boolean, var calendarDateFormat: String,var ipcDateFormat: String = "", + var uiDateFormat: String = "",var currentDayOfWeek: Int = 0,var canCopy: Boolean = false) \ No newline at end of file