From 3e8f0f011c0732c0e4e166a65788687fee54e645 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Mon, 26 Aug 2024 13:42:32 +0800 Subject: [PATCH] =?UTF-8?q?[6.6.0]=20[=E5=BE=85=E4=B8=8A=E4=BC=A0=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=BF=A1=E6=81=AF]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/weaknet/fragment/ShuttleFragment.kt | 58 ++++--- .../ui/taskrunning/RunningTaskManager.kt | 145 ++++++++++++++++++ .../ui/taskrunning/RunningTaskManagerView.kt | 68 ++++++++ .../res/layout/shuttle_wadk_task_running.xml | 75 +++++++++ .../src/main/res/values/strings.xml | 2 + .../core/function/hmi/ui/setting/ToolsView.kt | 4 + .../hmi/ui/tools/AutoPilotAndCheckView.kt | 10 ++ .../res/drawable/icon_wait_upload_task.png | Bin 0 -> 24198 bytes .../main/res/layout/view_auto_pilot_check.xml | 34 +++- .../src/main/res/values/strings.xml | 1 + .../eagle/core/data/temp/EventLogout.java | 1 + 11 files changed, 371 insertions(+), 27 deletions(-) create mode 100644 OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/RunningTaskManager.kt create mode 100644 OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/RunningTaskManagerView.kt create mode 100644 OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_wadk_task_running.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/icon_wait_upload_task.png diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/fragment/ShuttleFragment.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/fragment/ShuttleFragment.kt index 51359d3693..73c6208323 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/fragment/ShuttleFragment.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/fragment/ShuttleFragment.kt @@ -37,6 +37,7 @@ import com.mogo.och.weaknet.constant.BusConst import com.mogo.och.weaknet.presenter.BusPresenter import com.mogo.och.weaknet.ui.BusStationCommonItem import com.mogo.och.weaknet.ui.BusSwitchLineActivity +import com.mogo.och.weaknet.ui.taskrunning.RunningTaskManager import me.jessyan.autosize.utils.AutoSizeUtils import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode @@ -105,31 +106,40 @@ class ShuttleFragment : BaseShuttleTabFragment( @Subscribe(threadMode = ThreadMode.MAIN) fun changeOverview(eventLogout: EventLogout) { - if (eventLogout.messgae == EventLogout.LOGOUT_TYPE) { - d(SceneConstant.M_BUS + TAG, "changeOverview Event消息去登出") - mPresenter!!.logout() - } else if (eventLogout.messgae == EventLogout.SHOW_QR_TYPE) { //显示二维码 - d( - SceneConstant.M_BUS + TAG, "changeOverview Event qrcode,sn = " - + SharedPrefsMgr.getInstance().sn - ) - val qrUrl = String.format( - FunctionBuildConfig.urlJson.bindDriverQRUrl, - SharedPrefsMgr.getInstance().sn - ) - val bmQr = createQRCodeWithPicture( - BitmapFactory.decodeResource(resources, R.drawable.icon_qr_center_logo), - qrUrl, AutoSizeUtils.dp2px(context, 340f), - AutoSizeUtils.dp2px(context, 340f), true - ) - if (bmQr != null) { - val builder = BindQRCodeDialog.Builder() - builder.title(getString(R.string.bind_driver_qr_title)) - .cancelStr(getString(R.string.qr_cancel)) - .qrBm(bmQr).build(AbsMogoApplication.getApp())!!.show() - } else { - d(SceneConstant.M_BUS + TAG, "bmQr = null ") + when (eventLogout.messgae) { + EventLogout.LOGOUT_TYPE-> { + d(SceneConstant.M_BUS + TAG, "changeOverview Event消息去登出") + mPresenter!!.logout() } + EventLogout.SHOW_QR_TYPE-> { //显示二维码 + d( + SceneConstant.M_BUS + TAG, "changeOverview Event qrcode,sn = " + + SharedPrefsMgr.getInstance().sn + ) + val qrUrl = String.format( + FunctionBuildConfig.urlJson.bindDriverQRUrl, + SharedPrefsMgr.getInstance().sn + ) + val bmQr = createQRCodeWithPicture( + BitmapFactory.decodeResource(resources, R.drawable.icon_qr_center_logo), + qrUrl, AutoSizeUtils.dp2px(context, 340f), + AutoSizeUtils.dp2px(context, 340f), true + ) + if (bmQr != null) { + val builder = BindQRCodeDialog.Builder() + builder.title(getString(R.string.bind_driver_qr_title)) + .cancelStr(getString(R.string.qr_cancel)) + .qrBm(bmQr).build(AbsMogoApplication.getApp())!!.show() + } else { + d(SceneConstant.M_BUS + TAG, "bmQr = null ") + } + } + EventLogout.SHOW_WAIT_UPLOAD_TASK-> { + context?.let { + RunningTaskManager.showBadCaseConfigWindow(it) + } + } + else -> {} } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/RunningTaskManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/RunningTaskManager.kt new file mode 100644 index 0000000000..ce6f5b9ff3 --- /dev/null +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/RunningTaskManager.kt @@ -0,0 +1,145 @@ +package com.mogo.och.weaknet.ui.taskrunning + + +import android.content.Context +import android.graphics.Color +import android.graphics.Rect +import android.graphics.drawable.ColorDrawable +import android.os.Build.VERSION +import android.os.Build.VERSION_CODES +import android.transition.Slide +import android.view.Gravity +import android.view.MotionEvent +import android.view.View +import android.view.ViewConfiguration +import android.view.WindowManager +import android.view.animation.AccelerateDecelerateInterpolator +import android.widget.PopupWindow +import android.widget.PopupWindow.INPUT_METHOD_NEEDED +import androidx.fragment.app.FragmentActivity +import androidx.lifecycle.Lifecycle.Event +import androidx.lifecycle.LifecycleEventObserver +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.lifecycleScope +import com.mogo.eagle.core.utilcode.kotlin.lifeCycleOwner +import com.mogo.eagle.core.utilcode.reminder.Reminder +import com.mogo.eagle.core.utilcode.reminder.api.impl.PopupWindowReminder +import com.mogo.eagle.core.utilcode.util.* +import me.jessyan.autosize.utils.AutoSizeUtils +import kotlin.math.abs + +object RunningTaskManager : LifecycleEventObserver{ + + const val TAG = "BadCase" + + private var hideFloat: (() -> Unit)? = null + + fun init(context: Context) { + } + + /** + * 展示BadCase配置页面 + */ + fun showBadCaseConfigWindow(context: Context) { + val badCaseConfigView = RunningTaskManagerView(context) + badCaseConfigView.setOnClickListener(object : RunningTaskManagerView.ClickListener { + override fun onClose() { + hideFloat?.invoke() + hideFloat = null + } + }) + enqueuePop( + badCaseConfigView, + AutoSizeUtils.dp2px(context, 960f), + WindowManager.LayoutParams.MATCH_PARENT, + key = "BadCaseConfigView" + ).also { + hideFloat = it + } + } + + override fun onStateChanged(source: LifecycleOwner, event: Event) { + + } + + + fun enqueuePop(content: View, width: Int, height: Int, key: String = "", startX: Int = 0, startY: Int = 0, gravity: Int = Gravity.START, onOuterViewClicked:((focus: View) -> Unit)? = null, isOverride: Boolean = false, isFocusable: Boolean = true): () -> Unit { + val topActivity = ActivityUtils.getTopActivity() + val activity = (topActivity as? FragmentActivity) ?: throw IllegalStateException("please use Activity to trigger pop show.") + val isImmersiveMode = BarUtils.isImmersiveMode(activity) + var tempReminder: PopupWindowReminder? = null + activity.lifecycleScope.launchWhenResumed { + val pop = PopupWindow(width, height).also { + it.isOutsideTouchable = true + it.isTouchable = true + it.isFocusable = isFocusable + it.inputMethodMode = INPUT_METHOD_NEEDED + it.isClippingEnabled = false + var x = 0f + var y = 0f + val touchSlop = ViewConfiguration.get(activity).scaledTouchSlop + var isClicked = false + it.setTouchInterceptor { v, event -> + val out = Rect() + v.getGlobalVisibleRect(out) + if (out.contains(event.x.toInt(), event.y.toInt())) { + return@setTouchInterceptor false + } + + when(event.actionMasked) { + MotionEvent.ACTION_DOWN -> { + x = event.x + y = event.y + } + MotionEvent.ACTION_MOVE -> { + val deltaX = event.x - x + val deltaY = event.y - y + isClicked = !(abs(deltaX) > touchSlop || abs(deltaY) > touchSlop) + } + MotionEvent.ACTION_UP -> { + if (isClicked) { + isClicked = false + onOuterViewClicked?.invoke(v) + } + } + } + try { + return@setTouchInterceptor true + } finally { + activity.window.decorView.dispatchTouchEvent(event) + } + } + it.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + } + if (VERSION.SDK_INT >= VERSION_CODES.M) { + val transition = Slide(gravity).also { + it.interpolator = AccelerateDecelerateInterpolator() + it.duration = 200 + } + pop.enterTransition = transition + pop.exitTransition = transition + } + pop.contentView = content + val reminder = object : PopupWindowReminder(pop) { + + override fun key(): String { + return key + super.key() + } + + override fun show() { + pop.showAtLocation(activity.window.decorView, gravity, startX, if (isImmersiveMode) 0 else BarUtils.getStatusBarHeight() + startY) + } + override fun isOverride(): Boolean = isOverride + } + tempReminder = reminder + Reminder.enqueue(activity.lifeCycleOwner, reminder) + } + return { + tempReminder?.hide() + } + } + + + + +} diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/RunningTaskManagerView.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/RunningTaskManagerView.kt new file mode 100644 index 0000000000..3841af3437 --- /dev/null +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/RunningTaskManagerView.kt @@ -0,0 +1,68 @@ +package com.mogo.och.weaknet.ui.taskrunning + +import android.content.Context +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.och.shuttle.weaknet.R +import kotlinx.android.synthetic.main.shuttle_wadk_task_running.view.clLayout +import kotlinx.android.synthetic.main.shuttle_wadk_task_running.view.ivTaskRunningClose + + +/** + * @author XuXinChao + * @description BadCase录包管理页面 + * @since: 2022/12/15 + */ +class RunningTaskManagerView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr) { + + companion object { + const val TAG = "BadCaseManagerView" + } + + private var clickListener:ClickListener?=null + + init { + LayoutInflater.from(context).inflate(R.layout.shuttle_wadk_task_running, this, true) + initView() + } + + private fun initView(){ + background = ColorDrawable(Color.parseColor("#F0151D41")) + clLayout.setOnClickListener { + } + //关闭BadCase管理窗口 + ivTaskRunningClose.setOnClickListener { + clickListener?.onClose() + } + + } + + fun setOnClickListener(clickListener: ClickListener) { + this.clickListener = clickListener + } + + interface ClickListener { + fun onClose() + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + } + + +} +interface ClickListener { + fun onClose() +} diff --git a/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_wadk_task_running.xml b/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_wadk_task_running.xml new file mode 100644 index 0000000000..9d67a281ea --- /dev/null +++ b/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_wadk_task_running.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/res/values/strings.xml b/OCH/shuttle/driver_weaknet/src/main/res/values/strings.xml index c6fd4ff49e..1f4f9157b9 100644 --- a/OCH/shuttle/driver_weaknet/src/main/res/values/strings.xml +++ b/OCH/shuttle/driver_weaknet/src/main/res/values/strings.xml @@ -43,6 +43,8 @@ 本站核销成功:%1$d人 本站核销成功:0人 + 暂无待上传任务 + 距离发车时间还有%1$s分钟 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ToolsView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ToolsView.kt index 2d6a9095bb..0917cfc7df 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ToolsView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ToolsView.kt @@ -66,6 +66,10 @@ class ToolsView private constructor() { dismissToolsFloatView() CallerDevaToolsManager.showTakeOverRecordView(it) } + + override fun showWaitUploadTaskView() { + dismissToolsFloatView() + } }) } toolsViewFloat = WarningFloat.with(it) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt index 7d41978c3f..7b8de7a51c 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt @@ -12,6 +12,7 @@ import android.view.View import android.widget.FrameLayout import com.mogo.commons.env.ProjectUtils import com.mogo.eagle.core.data.app.AppConfigInfo +import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.deva.bindingcar.IPCUpgradeStateInfo import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig import com.mogo.eagle.core.data.deva.report.TakeOverRecordInfo @@ -27,6 +28,7 @@ import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.ui.utils.KeyBoardUtil import com.mogo.eagle.core.function.msgbox.MsgBoxConfig import com.mogo.eagle.core.utilcode.kotlin.onClick +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.util.ActivityUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler @@ -163,6 +165,13 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor( takeOverRecordLayout.setOnClickListener { clickListener?.showTakeOverRecordView() } + if (AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)){ + waitUploadTaskLayout.visibility = View.VISIBLE + waitUploadTaskLayout.onClick { + clickListener?.showWaitUploadTaskView() + EventBus.getDefault().post(EventLogout(EventLogout.SHOW_WAIT_UPLOAD_TASK)) + } + } } if (AppConfigInfo.isConnectAutopilot) { CallerAutoPilotControlManager.getCarConfig() @@ -320,6 +329,7 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor( fun showSOPSettingView() fun showBadCaseManagerView() fun showTakeOverRecordView() + fun showWaitUploadTaskView() } override fun onAutopilotCarConfig(carConfigResp: MessagePad.CarConfigResp) { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/icon_wait_upload_task.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/icon_wait_upload_task.png new file mode 100644 index 0000000000000000000000000000000000000000..5c1f4f39cdcbe615a424f53404d191db9c3b2a3d GIT binary patch literal 24198 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 d2*N;>I2NO6Bfwhr5x;|Jgzn=G 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 literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_auto_pilot_check.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_auto_pilot_check.xml index 3b92f5af1b..b701492508 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_auto_pilot_check.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_auto_pilot_check.xml @@ -185,9 +185,9 @@ android:id="@+id/takeOverRecordLayout" android:layout_width="wrap_content" android:layout_height="@dimen/dp_216" - app:layout_constraintLeft_toLeftOf="@id/checkSystemView" - app:layout_constraintTop_toBottomOf="@id/checkSystemView" - android:layout_marginTop="@dimen/dp_90" + app:layout_constraintTop_toTopOf="@+id/badCaseReportLayout" + app:layout_constraintBottom_toBottomOf="@+id/badCaseReportLayout" + app:layout_constraintStart_toEndOf="@+id/badCaseReportLayout" android:layout_marginStart="@dimen/dp_142" android:visibility="gone" > @@ -211,6 +211,34 @@ + + + + + + + + 运营面板 录包 接管记录 + 本地任务 录包管理 上报 车速设置 diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/temp/EventLogout.java b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/temp/EventLogout.java index 3e9131810c..ac71b3cb96 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/temp/EventLogout.java +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/temp/EventLogout.java @@ -6,6 +6,7 @@ public class EventLogout { public final static int LOGOUT_TYPE = 100001; public final static int PERSONAL_TYPE = 100002; public final static int SHOW_QR_TYPE = 100003; + public final static int SHOW_WAIT_UPLOAD_TASK = 100004; public EventLogout(int messgaeType) { this.messgaeType = messgaeType;