[5.0.0]
[删除fragment]
This commit is contained in:
@@ -76,8 +76,8 @@ class DriverM1Model {
|
||||
// 运营类型
|
||||
private val VEHICLE_TYPE : Int = 10
|
||||
|
||||
private var mControllerStatusCallback //Model->Presenter:VR mode等
|
||||
: IDriverM1ControllerStatusCallback? = null
|
||||
//Model->Presenter:VR mode等
|
||||
private var mControllerStatusCallback: IDriverM1ControllerStatusCallback? = null
|
||||
|
||||
private var mOrderCallback: DriverM1OrderCallback? = null
|
||||
|
||||
@@ -110,7 +110,7 @@ class DriverM1Model {
|
||||
fun init(context: Context) {
|
||||
mContext = context
|
||||
// 定位监听
|
||||
CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10,mMapLocationListener)
|
||||
CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10, mMapLocationListener)
|
||||
|
||||
//开启自驾后 异常信息返回
|
||||
OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(mAdasStartFailureListener)
|
||||
@@ -118,18 +118,20 @@ class DriverM1Model {
|
||||
// 监听运营信息
|
||||
registerSocketMessageListener(
|
||||
OCHSocketMessageManager.msgMonitorType,
|
||||
mOnSystemMessageListener)
|
||||
mOnSystemMessageListener
|
||||
)
|
||||
//监听开门
|
||||
registerSocketMessageListener(
|
||||
OCHSocketMessageManager.msgOperateDoorType,
|
||||
mOnDoorMessageListener)
|
||||
mOnDoorMessageListener
|
||||
)
|
||||
//监听订单结束
|
||||
registerSocketMessageListener(
|
||||
OCHSocketMessageManager.msgOrderClosedType,
|
||||
mOnOrderClosedMessageListener)
|
||||
|
||||
mOnOrderClosedMessageListener
|
||||
)
|
||||
//监听核销乘客
|
||||
registerSocketMessageListener<WriteOffPassenger>( //监听核销乘客
|
||||
registerSocketMessageListener(
|
||||
OCHSocketMessageManager.msgWriteOffPassengerType,
|
||||
mWriteOffPassengerOnMessageListener
|
||||
)
|
||||
@@ -149,45 +151,7 @@ class DriverM1Model {
|
||||
// 调用Disposable.dispose() 时候会出现InterruptedException 导致出现崩溃
|
||||
// The exception could not be delivered to the consumer because it has already canceled/disposed
|
||||
// the flow or the excTeption has nowhere to go to begin with
|
||||
RxJavaPlugins.setErrorHandler(object : Consumer<Throwable?> {
|
||||
override fun accept(e: Throwable?) {
|
||||
var e = e
|
||||
if (e is UndeliverableException) {
|
||||
e = e.cause!!
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "UndeliverableException")
|
||||
}
|
||||
if (e is IOException) { //
|
||||
// fine, irrelevant network problem or API that throws on cancellation
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "IOException")
|
||||
return
|
||||
}
|
||||
if (e is InterruptedException) {
|
||||
// fine, some blocking code was interrupted by a dispose call
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "InterruptedException")
|
||||
return
|
||||
}
|
||||
if (e is NullPointerException || e is IllegalArgumentException) {
|
||||
// that's likely a bug in the application
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "NullPointerException or IllegalArgumentException")
|
||||
Thread.currentThread().uncaughtExceptionHandler.uncaughtException(
|
||||
Thread.currentThread(),
|
||||
e
|
||||
)
|
||||
return
|
||||
}
|
||||
if (e is IllegalStateException) {
|
||||
// that's a bug in RxJava or in a custom operator
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "IllegalStateException")
|
||||
Thread.currentThread().uncaughtExceptionHandler.uncaughtException(
|
||||
Thread.currentThread(),
|
||||
e
|
||||
)
|
||||
return
|
||||
}
|
||||
d(SceneConstant.M_CHARTER_D + TAG, "Undeliverable exception")
|
||||
}
|
||||
|
||||
})
|
||||
RxUtils.errCatch()
|
||||
}
|
||||
|
||||
fun setChangeDestCallback(callback: ChangeDestCallback?){
|
||||
|
||||
@@ -1,385 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.presenter
|
||||
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import com.elegant.utils.UiThreadHandler
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
|
||||
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
|
||||
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
|
||||
import com.mogo.och.common.module.manager.loopmanager.LoopInfo
|
||||
import com.mogo.och.bus.passenger.bean.event.EventLineSites
|
||||
import com.mogo.och.bus.passenger.bean.response.LineInfoListResponse
|
||||
import com.mogo.och.bus.passenger.bean.response.LineInfoResponse
|
||||
import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse
|
||||
import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
||||
import com.mogo.och.bus.passenger.model.IOrderStatusChangeListener
|
||||
import com.mogo.och.bus.passenger.model.OrderStatusEnum
|
||||
import com.mogo.och.common.module.manager.loopmanager.BizLoopManager
|
||||
import com.mogo.och.bus.passenger.net.BusPassengerServiceManager
|
||||
import com.mogo.och.bus.passenger.ui.selectline.M1OrderLineFragment
|
||||
import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg
|
||||
import com.mogo.och.common.module.bean.dpmsg.ChangeDestMsg
|
||||
import com.mogo.och.common.module.bean.dpmsg.DPMsgType
|
||||
import com.mogo.och.common.module.bean.dpmsg.LineSite
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.manager.StopSideStatusManager
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import io.reactivex.disposables.Disposable
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) :
|
||||
BusBasePassengerFunctionDevicePresenter<M1OrderLineFragment?>(view), IOrderStatusChangeListener {
|
||||
|
||||
companion object{
|
||||
const val TAGLINELOOP = "LineSiteViewLineLoop"
|
||||
const val TAG = "BusPassengerFunctionOrderPresenter"
|
||||
}
|
||||
|
||||
// 成功提交给后台得线路
|
||||
private var checkLine: LineInfoResponse.LineInfo? = null
|
||||
|
||||
// 成功提交给后台得终点站点
|
||||
private var checkSite: SiteInfoResponse.SiteInfo? = null
|
||||
|
||||
// 下一个站点
|
||||
private var currentSite: SiteInfoResponse.SiteInfo? = null
|
||||
|
||||
// 向司机端端提交的临时线路
|
||||
private var tempCheckLine: LineInfoResponse.LineInfo? = null
|
||||
|
||||
// 向司机端临时提交的终点站点
|
||||
private var tempCheckSite: SiteInfoResponse.SiteInfo? = null
|
||||
|
||||
private var subscribeSelectSite: Disposable? = null
|
||||
|
||||
override fun onCreate(owner: LifecycleOwner) {
|
||||
super.onCreate(owner)
|
||||
CharterPassengerModel.setStatusChangeListener(TAG,this)
|
||||
CallerTelematicListenerManager.addListener(TAG, msgReceived)
|
||||
val currentOrderStatus = CharterPassengerModel.getCurrentOrderStatus()
|
||||
needRunUI(currentOrderStatus)
|
||||
extracted()
|
||||
}
|
||||
|
||||
private fun extracted() {
|
||||
val currentOrderStatus = CharterPassengerModel.getCurrentOrderStatus()
|
||||
if (currentOrderStatus == OrderStatusEnum.OrderNoLine || currentOrderStatus == OrderStatusEnum.OrdersWithLine) {
|
||||
val hasSetLineAndSite = CharterPassengerModel.hasSetLineAndSite()
|
||||
if (hasSetLineAndSite != null) {// 已经设置了线路和站点
|
||||
checkLine = hasSetLineAndSite.first
|
||||
checkSite = hasSetLineAndSite.second
|
||||
}
|
||||
mView?.setEnableSiteStatus(false)
|
||||
queryLineList()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置数据
|
||||
*/
|
||||
fun resetData() {
|
||||
tempCheckLine = null
|
||||
tempCheckSite = null
|
||||
if(checkLine==null){// 没有提交线路
|
||||
queryLineList()
|
||||
mView?.setEnableSiteStatus(true)
|
||||
}else{
|
||||
checkLine?.let {
|
||||
mView?.setEnableSiteStatus(false)
|
||||
mView?.lineAdapterSubmit(it)
|
||||
querySitesByLineId(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun querySitesByLineId(checkLine: LineInfoResponse.LineInfo) {
|
||||
context?.let {
|
||||
BusPassengerServiceManager.queryLineSiteList(
|
||||
context,
|
||||
checkLine.lineId.toString(),
|
||||
object : OchCommonServiceCallback<SiteInfoResponse> {
|
||||
override fun onSuccess(data: SiteInfoResponse?) {
|
||||
if (data?.data == null) return
|
||||
val siteInfos = data.data
|
||||
EventBus.getDefault().post(EventLineSites(checkLine,siteInfos,false))
|
||||
if (siteInfos.isNotEmpty()) {
|
||||
// 计算当前站点是那个
|
||||
val calculateCurrentSite =
|
||||
CharterPassengerModel.calculateCurrentSite(siteInfos)
|
||||
val first = calculateCurrentSite.first// 可用站点
|
||||
if(first<0){
|
||||
// 所有站点不可用
|
||||
currentSite = siteInfos[siteInfos.size-1]
|
||||
currentSite!!.isNear = calculateCurrentSite.second
|
||||
mView?.siteAdapterEnableIndex(siteInfos.size-1)
|
||||
}else{
|
||||
//
|
||||
val index = if(first==0) {
|
||||
0
|
||||
}else if (first <= siteInfos.size-1) {
|
||||
first-1
|
||||
} else {
|
||||
siteInfos.size - 1
|
||||
}
|
||||
currentSite = siteInfos[index]
|
||||
currentSite!!.isNear = calculateCurrentSite.second
|
||||
mView?.siteAdapterEnableIndex(index)
|
||||
}
|
||||
siteInfos.forEach {
|
||||
if (it.siteId == checkSite?.siteId) {
|
||||
it.isCheck = true
|
||||
return@forEach
|
||||
}
|
||||
}
|
||||
}
|
||||
mView?.siteAdapterSetData(siteInfos)
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
ToastCharterUtils.showShort("查询站点失败")
|
||||
mView?.setVisableByTrun(showNetError = true)
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
super.onError()
|
||||
ToastCharterUtils.showShort("查询站点失败")
|
||||
mView?.setVisableByTrun(showNetError = true)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
private fun queryLineList() {
|
||||
mView?.setVisableByTrun(showLoading = true)
|
||||
context?.let {
|
||||
BusPassengerServiceManager.queryLineList(it, object :
|
||||
OchCommonServiceCallback<LineInfoListResponse> {
|
||||
override fun onSuccess(data: LineInfoListResponse?) {
|
||||
if (data?.data == null) return
|
||||
mView?.setVisableByTrun(showBiz = true)
|
||||
mView?.lineAdapterSetData(data.data,checkLine)
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String) {
|
||||
ToastCharterUtils.showShort("查询线路失败")
|
||||
mView?.setVisableByTrun(showNetError = true)
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
super.onError()
|
||||
mView?.setVisableByTrun(showNetError = true)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume(owner: LifecycleOwner) {
|
||||
super.onResume(owner)
|
||||
}
|
||||
|
||||
override fun onDestroy(owner: LifecycleOwner) {
|
||||
super.onDestroy(owner)
|
||||
CallerLogger.d(M_BUS_P + TAG, "onDestroy")
|
||||
RxUtils.disposeSubscribe(subscribeSelectSite)
|
||||
BizLoopManager.removeLoopFunction(TAGLINELOOP)
|
||||
CharterPassengerModel.setStatusChangeListener(TAG,null)
|
||||
CallerTelematicListenerManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
/**
|
||||
* 接收司机屏反馈信息
|
||||
*/
|
||||
private val msgReceived = object : IReceivedMsgListener {
|
||||
override fun onReceivedMsg(type: Int, byteArray: ByteArray) {
|
||||
UiThreadHandler.post {
|
||||
if (type == OchCommonConst.BUSINESS_STRING) {
|
||||
val msg = GsonUtils.fromJson(
|
||||
String(byteArray),
|
||||
BaseDPMsg::class.java
|
||||
) as BaseDPMsg
|
||||
if (msg.type == DPMsgType.TYPE_CHANGE_DEST.type) {
|
||||
val msg = GsonUtils.fromJson(
|
||||
String(byteArray),
|
||||
ChangeDestMsg::class.java
|
||||
) as ChangeDestMsg
|
||||
CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "接受数据:切换站点${msg}")
|
||||
if (msg.isConfirmed) {
|
||||
if(msg.arriveStatus==2){
|
||||
return@post
|
||||
}
|
||||
ToastCharterUtils.showShort("站点确定")
|
||||
mView?.setEnableSiteStatus(true)
|
||||
checkLine = tempCheckLine
|
||||
checkSite = tempCheckSite
|
||||
tempCheckLine = null
|
||||
tempCheckSite = null
|
||||
checkLine?.let {
|
||||
mView?.lineAdapterSubmit(it)
|
||||
}
|
||||
mView?.hideDataDriverAgree()
|
||||
CharterPassengerModel.cleanbroadcastListInfo(checkSite)
|
||||
CharterPassengerModel.queryOrder()
|
||||
} else {
|
||||
ToastCharterUtils.showShort("司机端拒绝请重新选择")
|
||||
mView?.hideDataDriverRefuse()
|
||||
}
|
||||
RxUtils.disposeSubscribe(subscribeSelectSite)
|
||||
BizLoopManager.removeLoopFunction(TAGLINELOOP)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun changeSites(siteList: MutableList<SiteInfoResponse.SiteInfo>){
|
||||
if (!CallerTelematicManager.getClientConnStatus()) {
|
||||
ToastCharterUtils.showLong("乘客屏无法连接司机屏请联系安全员")
|
||||
return
|
||||
}
|
||||
val sentDataSite: MutableList<LineSite> = mutableListOf()
|
||||
siteList.forEach {
|
||||
sentDataSite.add(it.copy2Mas())
|
||||
}
|
||||
|
||||
tempCheckSite?.let { siteInfo ->
|
||||
val orderNo = CharterPassengerModel.getCurrentOrderInfo()?.orderNo ?: ""
|
||||
val msg = ChangeDestMsg(
|
||||
orderNo,
|
||||
siteInfo.lineId!!.toInt(),
|
||||
siteInfo.lineName!!,
|
||||
currentSite!!.siteId!!.toInt(),
|
||||
currentSite!!.siteName!!,
|
||||
siteInfo.siteId!!.toInt(),
|
||||
siteInfo.siteName!!,
|
||||
false,
|
||||
1,
|
||||
0,
|
||||
sentDataSite
|
||||
)
|
||||
CallerTelematicManager.sendMsgToServer(
|
||||
OchCommonConst.BUSINESS_STRING,
|
||||
GsonUtils.toJson(msg).toByteArray()
|
||||
)
|
||||
CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "发送数据:切换站点${msg}")
|
||||
}
|
||||
mView?.hideDataWaitDriverMsg()
|
||||
// 启动查看和司机端链接
|
||||
BizLoopManager.setLoopFunction(
|
||||
TAGLINELOOP,
|
||||
LoopInfo(3, ::checkServerStatus)
|
||||
)
|
||||
|
||||
RxUtils.disposeSubscribe(subscribeSelectSite)
|
||||
subscribeSelectSite = RxUtils.createSubscribe(120_000){
|
||||
ToastCharterUtils.showShort("请联系安全员确认")
|
||||
mView?.hideDataDriverRefuse()
|
||||
}
|
||||
}
|
||||
private fun checkServerStatus() {
|
||||
if (!CallerTelematicManager.getClientConnStatus()) {
|
||||
ToastCharterUtils.showShort("断开和司机端连接、请联系安全员")
|
||||
BizLoopManager.removeLoopFunction(TAGLINELOOP)
|
||||
mView?.hideDataDriverRefuse()
|
||||
CallerLogger.d(M_BUS_P + TAG, "endAni666")
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStatusChange(currentStatus: OrderStatusEnum) {
|
||||
UiThreadHandler.post {
|
||||
needRunUI(currentStatus)
|
||||
}
|
||||
}
|
||||
|
||||
private fun needRunUI(currentStatus: OrderStatusEnum){
|
||||
when (currentStatus) {
|
||||
OrderStatusEnum.OrderNoLine -> {
|
||||
mView?.setVisableByTrun(showBiz = true)
|
||||
extracted()
|
||||
}
|
||||
OrderStatusEnum.OrdersWithLine ->{
|
||||
mView?.setVisableByTrun(showBiz = true)
|
||||
}
|
||||
else ->{
|
||||
mView?.setVisableByTrun(showNorOrder = true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun canSwitchLine():Boolean {
|
||||
val gnssSpeed =
|
||||
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().gnssSpeed
|
||||
if (gnssSpeed < 0.5) {
|
||||
when (CallerAutoPilotStatusListenerManager.getState()) {
|
||||
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶
|
||||
return true
|
||||
}
|
||||
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {//
|
||||
return true
|
||||
}
|
||||
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> {
|
||||
// 自动驾驶中
|
||||
return when (StopSideStatusManager.stopSiteStatus) {
|
||||
StopSideStatusManager.Status.EndingSuccess -> {
|
||||
true
|
||||
}
|
||||
else ->{
|
||||
ToastCharterUtils.showShort("自动驾驶中无法切换线路")
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
||||
IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> {
|
||||
ToastCharterUtils.showShort("因车辆正在平行驾驶中无法切换线路")
|
||||
return false
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
} else {
|
||||
ToastCharterUtils.showShort("请停车后再修改目的地~")
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
fun checkLineClick(lineInfo: LineInfoResponse.LineInfo) {
|
||||
checkLine4View()
|
||||
tempCheckLine = lineInfo
|
||||
querySitesByLineId(lineInfo)
|
||||
}
|
||||
|
||||
private fun checkLine4View(){
|
||||
tempCheckSite = null
|
||||
mView?.setEnableSiteStatus(false)
|
||||
}
|
||||
|
||||
fun checkSiteClick(siteInfo: SiteInfoResponse.SiteInfo?) {
|
||||
tempCheckSite = siteInfo
|
||||
if(checkSite!=null){
|
||||
checkSite?.let {
|
||||
if (it.siteId == siteInfo?.siteId) {// 站点相同 隐藏所有提交按钮
|
||||
mView?.setEnableSiteStatus(false)
|
||||
} else {
|
||||
if(it.lineId == siteInfo?.lineId){// 线路相同显示单独提交
|
||||
mView?.setEnableSiteStatus(true)
|
||||
}else{
|
||||
if(siteInfo==null){//没有选站点隐藏所有提交
|
||||
mView?.setEnableSiteStatus(false)
|
||||
}else {
|
||||
mView?.setEnableSiteStatus(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
mView?.setEnableSiteStatus(true)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.presenter
|
||||
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
||||
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
|
||||
|
||||
class BusPassengerFunctionPresenter(view: M1ContainFragment?) :
|
||||
BusBasePassengerFunctionDevicePresenter<M1ContainFragment?>(view) {
|
||||
companion object{
|
||||
private const val TAG = "BusPassengerFunctionPresenter"
|
||||
}
|
||||
override fun onCreate(owner: LifecycleOwner) {
|
||||
super.onCreate(owner)
|
||||
}
|
||||
|
||||
override fun onDestroy(owner: LifecycleOwner) {
|
||||
super.onDestroy(owner)
|
||||
}
|
||||
|
||||
fun haveOrder(): Boolean {
|
||||
return CharterPassengerModel.hasOrder()
|
||||
}
|
||||
}
|
||||
@@ -1,245 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.presenter
|
||||
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
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.util.UiThreadHandler
|
||||
import com.mogo.och.bus.passenger.ui.softcontrol.M1SoftFragment
|
||||
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
|
||||
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorCallback
|
||||
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue
|
||||
import com.mogo.och.common.module.manager.devicemanage.data.LightStatus
|
||||
import io.reactivex.disposables.Disposable
|
||||
|
||||
class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
|
||||
BusBasePassengerFunctionDevicePresenter<M1SoftFragment?>(view),
|
||||
LightAirconditionDoorCallback {
|
||||
companion object {
|
||||
private const val TAG = "BusPassengerFunctionSoftPresenter"
|
||||
}
|
||||
|
||||
private var subscribeLightTop1: Disposable?=null
|
||||
private var subscribeLightTop2: Disposable?=null
|
||||
private var subscribeLightAtmosphere: Disposable?=null
|
||||
|
||||
private var airconditionDisposable: Disposable?=null
|
||||
private var heaterDisposable: Disposable?=null
|
||||
|
||||
override fun onCreate(owner: LifecycleOwner) {
|
||||
super.onCreate(owner)
|
||||
LightAirconditionDoorStatusManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
override fun onDestroy(owner: LifecycleOwner) {
|
||||
super.onDestroy(owner)
|
||||
LightAirconditionDoorStatusManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
/**
|
||||
* 空调状态变化
|
||||
*/
|
||||
override fun onAirconditionStatusCallback(heaterIsOpen: Boolean, airconditionStatus: AirconditionStatus, isFirst: Boolean) {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG,
|
||||
"回写--空调开关:${LightAirconditionDoorStatusManager.airconditionStatus.isOpen}、" +
|
||||
"空调温度:${LightAirconditionDoorStatusManager.airconditionStatus.temperature}" +
|
||||
"空调模式:${LightAirconditionDoorStatusManager.airconditionStatus.pattert}" +
|
||||
"空调风速:${LightAirconditionDoorStatusManager.airconditionStatus.windSpeed}")
|
||||
UiThreadHandler.post {
|
||||
if(airconditionStatus.isOpen){
|
||||
mView?.setAirconditionHeaterView(
|
||||
airconditionStatus.isOpen,
|
||||
heaterIsOpen,
|
||||
airconditionStatus.temperature,
|
||||
airconditionStatus.pattert,
|
||||
airconditionStatus.windSpeed
|
||||
)
|
||||
}else{
|
||||
mView?.setAirconditionHeaterView(
|
||||
airconditionStatus.isOpen,
|
||||
heaterIsOpen,
|
||||
airconditionStatus.temperature,
|
||||
0,
|
||||
0
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 暖风机状态变化
|
||||
*/
|
||||
override fun onHeaterStatusCallback(airconditionIsOpen:Boolean, heaterStatue: HeaterStatue, isFirst: Boolean) {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG,
|
||||
"回写--暖风机开关:${heaterStatue.isOpen}、" +
|
||||
"风速:${heaterStatue.windSpeed}")
|
||||
UiThreadHandler.post {
|
||||
if(heaterStatue.isOpen) {
|
||||
mView?.setAirconditionHeaterView(
|
||||
airconditionIsOpen,
|
||||
heaterStatue.isOpen,
|
||||
0,
|
||||
0,
|
||||
heaterStatue.windSpeed
|
||||
)
|
||||
}else{
|
||||
mView?.setAirconditionHeaterView(
|
||||
airconditionIsOpen,
|
||||
heaterStatue.isOpen,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 灯状态变化
|
||||
*/
|
||||
override fun onLightTop1Callback(lightStatus: LightStatus, isFirst: Boolean) {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG,
|
||||
"回写--顶灯1开关:${lightStatus.isOpenLight1}、" +
|
||||
"顶灯2开关:${lightStatus.isOpenLight2}、" +
|
||||
"氛围灯开关:${lightStatus.isOpenatmosphere}、")
|
||||
UiThreadHandler.post {
|
||||
mView?.setLightTop1View(lightStatus.isOpenLight1,isFirst)
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 灯状态变化
|
||||
*/
|
||||
override fun onLightTop2Callback(lightStatus: LightStatus, isFirst: Boolean) {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG,
|
||||
"回写--顶灯1开关:${lightStatus.isOpenLight1}、" +
|
||||
"顶灯2开关:${lightStatus.isOpenLight2}、" +
|
||||
"氛围灯开关:${lightStatus.isOpenatmosphere}、")
|
||||
UiThreadHandler.post {
|
||||
mView?.setLightTop2View(lightStatus.isOpenLight2,isFirst)
|
||||
mView?.setLightView(lightStatus.isOpenLight1,lightStatus.isOpenLight2)
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 灯状态变化
|
||||
*/
|
||||
override fun onLightAtmosphereCallback(lightStatus: LightStatus, isFirst: Boolean) {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG,
|
||||
"回写--顶灯1开关:${lightStatus.isOpenLight1}、" +
|
||||
"顶灯2开关:${lightStatus.isOpenLight2}、" +
|
||||
"氛围灯开关:${lightStatus.isOpenatmosphere}、")
|
||||
UiThreadHandler.post {
|
||||
mView?.setLightAtmosphereView(lightStatus.isOpenatmosphere,isFirst)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置空调
|
||||
*/
|
||||
fun openAndSetAircondition(modeCmd: Int, windSpeedCmd: Int, temperatureCmd: Int) {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "" +
|
||||
"打开空调,模式$modeCmd--档位${windSpeedCmd}--温度:$temperatureCmd")
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1AirConditionerCmd(1,modeCmd,windSpeedCmd,temperatureCmd)
|
||||
disposeSubscribe(airconditionDisposable)
|
||||
airconditionDisposable = createSubscribe(10000){
|
||||
if (!LightAirconditionDoorStatusManager.airconditionStatus.isOpen&&
|
||||
LightAirconditionDoorStatusManager.airconditionStatus.windSpeed!=windSpeedCmd&&
|
||||
LightAirconditionDoorStatusManager.airconditionStatus.temperature!=temperatureCmd&&
|
||||
LightAirconditionDoorStatusManager.airconditionStatus.pattert!=modeCmd) {
|
||||
ToastCharterUtils.showShort("控制系统繁忙,请稍后再试")
|
||||
}
|
||||
}
|
||||
}
|
||||
fun closeAircondition(modeCmd: Int, windSpeedCmd: Int, temperatureCmd: Int) {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭空调")
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1AirConditionerCmd(2,modeCmd,windSpeedCmd,temperatureCmd)
|
||||
disposeSubscribe(airconditionDisposable)
|
||||
airconditionDisposable = createSubscribe(10000){
|
||||
if (LightAirconditionDoorStatusManager.airconditionStatus.isOpen) {
|
||||
ToastCharterUtils.showShort("控制系统繁忙,请稍后再试")
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 设置暖风
|
||||
*/
|
||||
fun openAndSetHeader(windSpeedCmd: Int) {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "打开暖风机、档位${windSpeedCmd}")
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1HeaderCmd(1,windSpeedCmd)
|
||||
disposeSubscribe(heaterDisposable)
|
||||
heaterDisposable = createSubscribe(10000){
|
||||
if (!LightAirconditionDoorStatusManager.heaterStatue.isOpen&&
|
||||
LightAirconditionDoorStatusManager.heaterStatue.windSpeed!=windSpeedCmd) {
|
||||
ToastCharterUtils.showShort("暖风机操作未生效,请稍后重试吧~")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun closeHeader(){
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭暖风机")
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1HeaderCmd(2,0)
|
||||
disposeSubscribe(heaterDisposable)
|
||||
heaterDisposable = createSubscribe(10000){
|
||||
if (LightAirconditionDoorStatusManager.heaterStatue.isOpen) {
|
||||
ToastCharterUtils.showShort("暖风机操作未生效,请稍后重试吧~")//还是开着的
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun setLightData1(leftLight: Boolean){
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "顶灯2:$leftLight")
|
||||
disposeSubscribe(subscribeLightTop1)
|
||||
if(leftLight){
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(1)
|
||||
subscribeLightTop1 = createSubscribe{
|
||||
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) {
|
||||
ToastCharterUtils.showShort("控制系统繁忙,请稍后再试")
|
||||
}
|
||||
}
|
||||
}else{
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(2)
|
||||
subscribeLightTop1 = createSubscribe{
|
||||
if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) {
|
||||
ToastCharterUtils.showShort("控制系统繁忙,请稍后再试")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fun setLightData2(rightLight: Boolean){
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "顶灯1:$rightLight")
|
||||
disposeSubscribe(subscribeLightTop2)
|
||||
if(rightLight){
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(1)
|
||||
subscribeLightTop2 = createSubscribe{
|
||||
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) {
|
||||
ToastCharterUtils.showShort("控制系统繁忙,请稍后再试")
|
||||
}
|
||||
}
|
||||
}else{
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(2)
|
||||
subscribeLightTop2 = createSubscribe{
|
||||
if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) {
|
||||
ToastCharterUtils.showShort("控制系统繁忙,请稍后再试")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fun setAtmosphereLightData2(atmosphereLight: Boolean){
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "氛围灯:$atmosphereLight")
|
||||
disposeSubscribe(subscribeLightAtmosphere)
|
||||
if (atmosphereLight) {
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(1)
|
||||
subscribeLightAtmosphere = createSubscribe{
|
||||
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) {
|
||||
ToastCharterUtils.showShort("控制系统繁忙,请稍后再试")
|
||||
}
|
||||
}
|
||||
} else {
|
||||
CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(2)
|
||||
subscribeLightAtmosphere = createSubscribe{
|
||||
if (LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) {
|
||||
ToastCharterUtils.showShort("控制系统繁忙,请稍后再试")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.presenter
|
||||
|
||||
import com.mogo.och.bus.passenger.ui.video.M1VideoFragment
|
||||
|
||||
class BusPassengerFunctionVideoPresenter(view: M1VideoFragment?) :
|
||||
BusBasePassengerFunctionDevicePresenter<M1VideoFragment?>(view)
|
||||
@@ -1,10 +1,8 @@
|
||||
package com.mogo.och.bus.passenger.presenter
|
||||
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.bean.response.OrderInfoResponse
|
||||
import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
||||
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
|
||||
import com.mogo.och.bus.passenger.ui.dialogfragment.NoviceGuidanceFragment
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.presenter
|
||||
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
|
||||
import com.mogo.och.bus.passenger.callback.ITimeCallback
|
||||
import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
||||
import com.mogo.och.bus.passenger.ui.orderinfo.OrderInfoFragment
|
||||
import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg
|
||||
import com.mogo.och.common.module.bean.dpmsg.EndOrderMsg
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
|
||||
class OrderInfoPresenter(view: OrderInfoFragment?) :
|
||||
BusBasePassengerFunctionDevicePresenter<OrderInfoFragment?>(view), ITimeCallback {
|
||||
companion object{
|
||||
private const val TAG = "OrderInfoPresenter"
|
||||
}
|
||||
override fun onCreate(owner: LifecycleOwner) {
|
||||
super.onCreate(owner)
|
||||
CharterPassengerModel.setOrderLeftTimeListeners(TAG,this)
|
||||
getDataInfo()
|
||||
}
|
||||
|
||||
private fun getDataInfo() {
|
||||
val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo()
|
||||
currentOrderInfo?.let {
|
||||
mView?.setPhone(it.passengerPhone?:"")
|
||||
try {
|
||||
mView?.setStartTimeAndEndTime(
|
||||
DateTimeUtil.formatLongToString(it.startTime!!, DateTimeUtil.HH_mm),
|
||||
DateTimeUtil.formatLongToString(it.endTime!!, DateTimeUtil.HH_mm))
|
||||
}catch (e:Exception){
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy(owner: LifecycleOwner) {
|
||||
super.onDestroy(owner)
|
||||
CharterPassengerModel.setOrderLeftTimeListeners(TAG,null)
|
||||
}
|
||||
|
||||
override fun setOrderTimeCallBack(timeInSecond: Long) {
|
||||
val leftTime = DateTimeUtil.second2Time(timeInSecond)
|
||||
mView?.setLeftTime(leftTime)
|
||||
}
|
||||
|
||||
fun endOrder() {
|
||||
CharterPassengerModel.endOrder(object : OchCommonServiceCallback<BaseData> {
|
||||
override fun onSuccess(data: BaseData?) {
|
||||
if (null != data && 0 == data.code) {
|
||||
ToastCharterUtils.showShort("结束成功")
|
||||
CharterPassengerModel.setEndOrderStatus()
|
||||
mView?.closeDialogContaion()
|
||||
val msg = EndOrderMsg(
|
||||
CharterPassengerModel.getCurrentOrderInfo()?.orderNo?:"",
|
||||
)
|
||||
CallerTelematicManager.sendMsgToServer(
|
||||
OchCommonConst.BUSINESS_STRING,
|
||||
GsonUtils.toJson(msg).toByteArray()
|
||||
)
|
||||
CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "发送数据:结束订单${msg}")
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String) {
|
||||
ToastCharterUtils.showShort("$code:$msg")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,322 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.ui.dialogfragment
|
||||
|
||||
import android.content.DialogInterface
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.fragment.app.FragmentTransaction
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.commons.mvp.MvpDialogFragment
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
|
||||
import com.mogo.eagle.core.utilcode.util.*
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.bean.event.EventLineSites
|
||||
import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionPresenter
|
||||
import com.mogo.och.bus.passenger.ui.selectline.M1OrderLineFragment
|
||||
import com.mogo.och.bus.passenger.ui.softcontrol.M1SoftFragment
|
||||
import com.mogo.och.bus.passenger.ui.video.M1VideoFragment
|
||||
import com.mogo.och.bus.passenger.ui.orderinfo.OrderInfoFragment
|
||||
import com.mogo.och.bus.passenger.ui.bottom.BottomBar
|
||||
import com.mogo.och.bus.passenger.ui.bottom.BottomClickView
|
||||
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
|
||||
import com.mogo.och.common.module.biz.constant.LoginStatusManager
|
||||
import com.mogo.och.common.module.manager.debug.DebugViewWatchDogFragment
|
||||
import kotlinx.android.synthetic.main.m1_contain_fragment.*
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
/**
|
||||
* @author: yangyakun
|
||||
* @date: 2023/1/28
|
||||
*/
|
||||
class M1ContainFragment :
|
||||
MvpDialogFragment<M1ContainFragment?, BusPassengerFunctionPresenter?>() {
|
||||
|
||||
var tab: String = VIDEOTAB
|
||||
var fragmentTag: String = M1VideoFragment.TAG
|
||||
var fragment: Fragment? = null
|
||||
|
||||
var closeThis:ContainDismiss = object :ContainDismiss{
|
||||
override fun closeDialog() {
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
CallerLogger.d(M_BUS_P+ TAG, "onCreate")
|
||||
super.onCreate(savedInstanceState)
|
||||
arguments?.let {
|
||||
tab = it.getString(SELECTTAB, VIDEOTAB)
|
||||
}
|
||||
savedInstanceState?.let {
|
||||
tab = it.getString(SELECTTAB, tab)
|
||||
}
|
||||
setStyle(STYLE_NO_TITLE, R.style.DialogFullScreen) //dialog全屏
|
||||
}
|
||||
|
||||
private fun setCheckView() { //todo yakun 优化
|
||||
CallerLogger.d(M_BUS_P+ TAG, "setCheckView")
|
||||
when (tab) {
|
||||
VIDEOTAB -> {
|
||||
fragment =childFragmentManager.findFragmentByTag(M1VideoFragment.TAG)
|
||||
?: M1VideoFragment.newInstance()
|
||||
bb_bottom_bar.setCheckIndex(BottomBar.SelectView.VIDEO)
|
||||
cl_container.setBackgroundResource(R.drawable.m1_function_bg)
|
||||
fragmentTag = M1VideoFragment.TAG
|
||||
}
|
||||
SETTINGSOFTTAB -> {
|
||||
fragment =childFragmentManager.findFragmentByTag(M1SoftFragment.TAG)
|
||||
?: M1SoftFragment.newInstance()
|
||||
bb_bottom_bar.setCheckIndex(BottomBar.SelectView.SETTING)
|
||||
cl_container.setBackgroundResource(R.drawable.m1_function_bg)
|
||||
fragmentTag = M1SoftFragment.TAG
|
||||
}
|
||||
ORDERINFO -> {
|
||||
fragment =childFragmentManager.findFragmentByTag(OrderInfoFragment.TAG)
|
||||
?: OrderInfoFragment.newInstance(closeThis)
|
||||
bb_bottom_bar.setCheckIndex(BottomBar.SelectView.ORDERINFO)
|
||||
cl_container.background = null
|
||||
fragmentTag = OrderInfoFragment.TAG
|
||||
}
|
||||
SELECTLINE ->{
|
||||
fragment =childFragmentManager.findFragmentByTag(M1OrderLineFragment.TAG)
|
||||
?: M1OrderLineFragment.newInstance(closeThis)
|
||||
bb_bottom_bar.setCheckIndex(BottomBar.SelectView.LINE)
|
||||
cl_container.background = null
|
||||
fragmentTag = M1OrderLineFragment.TAG
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
CallerLogger.d(M_BUS_P+ TAG, "fragment:$fragment")
|
||||
|
||||
fragment?.let {
|
||||
val beginTransaction = childFragmentManager.beginTransaction()
|
||||
beginTransaction
|
||||
.replace(R.id.fl_function_group, it, fragmentTag)
|
||||
.commitNow()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.m1_contain_fragment
|
||||
|
||||
override fun getTagName(): String = TAG
|
||||
|
||||
override fun initViews() {
|
||||
|
||||
//dialog?.setCancelable(false)
|
||||
CallerLogger.d(M_BUS_P+ TAG, "initViews")
|
||||
setCheckView()
|
||||
cl_container.setOnClickListener {
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
// bb_bottom_bar.setSettingClickListener{
|
||||
// CallerLogger.d(M_BUS_P+ TAG, "initViews---$tab")
|
||||
// if(tab==SETTINGSOFTTAB) {
|
||||
// dismissAllowingStateLoss()
|
||||
// }else{
|
||||
// tab = SETTINGSOFTTAB
|
||||
// setCheckView()
|
||||
// }
|
||||
// }
|
||||
// bb_bottom_bar.setLineClickListener{
|
||||
// CallerLogger.d(M_BUS_P+ TAG, "initViews---$tab")
|
||||
// if(tab==SELECTLINE) {
|
||||
// dismissAllowingStateLoss()
|
||||
// }else{
|
||||
// tab = SELECTLINE
|
||||
// setCheckView()
|
||||
// }
|
||||
// }
|
||||
// bb_bottom_bar.setOrderInfoClickListener{
|
||||
// if (LoginStatusManager.isLogin()) {
|
||||
// if(mPresenter?.haveOrder()==true){
|
||||
//
|
||||
// }else{
|
||||
// ToastCharterUtils.showShort("请确认订单")
|
||||
// return@setOrderInfoClickListener
|
||||
// }
|
||||
// }else{
|
||||
// ToastCharterUtils.showShort(AbsMogoApplication.getApp().getString(R.string.m1_please_login_driver))
|
||||
// return@setOrderInfoClickListener
|
||||
// }
|
||||
//
|
||||
// CallerLogger.d(M_BUS_P+ TAG, "initViews---$tab")
|
||||
// if(tab==ORDERINFO) {
|
||||
// dismissAllowingStateLoss()
|
||||
// }else{
|
||||
// tab = ORDERINFO
|
||||
// setCheckView()
|
||||
// }
|
||||
// }
|
||||
bb_bottom_bar.setApplyClickListener(object : BottomClickView.ApplyClickLintener{
|
||||
override fun onApplyClick() {
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
CallerLogger.d(M_BUS_P+ TAG, "onViewCreated")
|
||||
dialog?.window?.let {
|
||||
BarUtils.hideStatusBarAndSticky(it)
|
||||
it.addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)
|
||||
dialog?.setOnShowListener { _ ->
|
||||
it.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)
|
||||
BarUtils.hideStatusBarAndSticky(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDismiss(dialog: DialogInterface) {
|
||||
super.onDismiss(dialog)
|
||||
EventBus.getDefault().post(EventLineSites(null,null,true))
|
||||
}
|
||||
|
||||
override fun onSaveInstanceState(outState: Bundle) {
|
||||
super.onSaveInstanceState(outState)
|
||||
CallerLogger.d(M_BUS_P+ TAG, "onSaveInstanceState")
|
||||
context?.let {
|
||||
SharedPrefs.getInstance(it).putString(SELECTTAB, tab)
|
||||
}
|
||||
}
|
||||
|
||||
override fun createPresenter(): BusPassengerFunctionPresenter =
|
||||
BusPassengerFunctionPresenter(this)
|
||||
|
||||
/**
|
||||
* 重写父类show()方法
|
||||
* 避免出现java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
|
||||
*/
|
||||
override fun show(manager: FragmentManager, tag: String?) {
|
||||
try {
|
||||
var cls = this.javaClass.superclass ?: return
|
||||
while (true) {
|
||||
if (cls.name == "java.lang.Object") {
|
||||
break
|
||||
}
|
||||
cls = cls.superclass!!
|
||||
if (cls == DialogFragment::class.java) {
|
||||
break
|
||||
}
|
||||
}
|
||||
val mDismissed = cls.getDeclaredField("mDismissed")
|
||||
val mShownByMe = cls.getDeclaredField("mShownByMe")
|
||||
mDismissed.isAccessible = true
|
||||
mShownByMe.isAccessible = true
|
||||
mDismissed.setBoolean(this, false)
|
||||
mShownByMe.setBoolean(this, true)
|
||||
if (isAdded) {
|
||||
return
|
||||
}
|
||||
val ft: FragmentTransaction = manager.beginTransaction()
|
||||
ft.add(this, tag)
|
||||
ft.commitAllowingStateLoss()
|
||||
} catch (e: Exception) {
|
||||
Log.e("DialogFragment", "show", e.fillInStackTrace())
|
||||
}
|
||||
}
|
||||
|
||||
override fun onViewStateRestored(savedInstanceState: Bundle?) {
|
||||
CallerLogger.d(M_BUS_P+ TAG, "onViewStateRestored")
|
||||
when (tab) {
|
||||
VIDEOTAB -> {
|
||||
|
||||
}
|
||||
SETTINGSOFTTAB -> {}
|
||||
ORDERINFO -> {}
|
||||
SELECTLINE -> {}
|
||||
else -> {}
|
||||
}
|
||||
super.onViewStateRestored(savedInstanceState)
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "M1ContainFragment"
|
||||
|
||||
/**
|
||||
* 娱乐视频
|
||||
*/
|
||||
const val VIDEOTAB = "VideoTab"
|
||||
|
||||
/**
|
||||
* 空调、暖风、灯和剩余设置
|
||||
*/
|
||||
const val SETTINGSOFTTAB = "SettingSoftTab"
|
||||
|
||||
/**
|
||||
* 订单信息
|
||||
*/
|
||||
const val ORDERINFO = "OrderInfo"
|
||||
|
||||
/**
|
||||
* 选择线路
|
||||
*/
|
||||
const val SELECTLINE = "SelectLine"
|
||||
|
||||
|
||||
|
||||
const val SELECTTAB = "SELECTTAB"
|
||||
|
||||
@JvmStatic
|
||||
fun newInstance(): M1ContainFragment {
|
||||
val args = Bundle()
|
||||
val fragment = M1ContainFragment()
|
||||
CallerLogger.d(M_BUS_P + TAG, "创建新的Fragment")
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
|
||||
|
||||
fun openSettingPage(
|
||||
childFragmentManager: FragmentManager,
|
||||
parentFragmentManager: FragmentManager,
|
||||
bpFunctionGroup: M1ContainFragment?,
|
||||
tab: String
|
||||
) {
|
||||
val fragmentByTag: Fragment? = childFragmentManager.findFragmentByTag(TAG)
|
||||
if (fragmentByTag is DialogFragment) {
|
||||
if (fragmentByTag.dialog != null && fragmentByTag.dialog!!.isShowing) {
|
||||
CallerLogger.d(M_BUS_P + TAG, "正在展示")
|
||||
return
|
||||
}
|
||||
if (fragmentByTag.dialog != null && fragmentByTag.isAdded) {
|
||||
if (AppStateManager.currentActivity() == null) { // 没有在当前应用内 在启动页面关闭应用
|
||||
CallerLogger.d(M_BUS_P + TAG, "权限验证")
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
bpFunctionGroup?.arguments?.putString(SELECTTAB, tab)
|
||||
if (bpFunctionGroup != null) {
|
||||
if (bpFunctionGroup.dialog != null && bpFunctionGroup.dialog!!.isShowing) {
|
||||
CallerLogger.d(M_BUS_P + DebugViewWatchDogFragment.TAG, "正在展示")
|
||||
return
|
||||
}
|
||||
if (ClickUtils.isFastClick()) {
|
||||
if (bpFunctionGroup.isAdded) {
|
||||
CallerLogger.d(M_BUS_P + DebugViewWatchDogFragment.TAG, "已经添加")
|
||||
return
|
||||
}
|
||||
bpFunctionGroup.show(parentFragmentManager, TAG)
|
||||
CallerLogger.d(M_BUS_P + TAG, "展示$tab---$bpFunctionGroup")
|
||||
} else {
|
||||
CallerLogger.d(M_BUS_P + TAG, "dialog 1s内执行一次")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interface ContainDismiss{
|
||||
fun closeDialog()
|
||||
}
|
||||
interface ChangeCheck{
|
||||
fun changeChange()
|
||||
}
|
||||
}
|
||||
@@ -1,82 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.ui.orderinfo
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import com.mogo.commons.mvp.MvpFragment
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.presenter.OrderInfoPresenter
|
||||
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
|
||||
import kotlinx.android.synthetic.main.m1_devices_fragment.*
|
||||
|
||||
/**
|
||||
* @author: yangyakun
|
||||
* @date: 2023/1/28
|
||||
*/
|
||||
class OrderInfoFragment :
|
||||
MvpFragment<OrderInfoFragment?, OrderInfoPresenter?>() {
|
||||
|
||||
private var dismiss: M1ContainFragment.ContainDismiss?=null
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.m1_devices_fragment
|
||||
|
||||
override fun getTagName(): String = TAG
|
||||
|
||||
override fun initViews() {
|
||||
initListener()
|
||||
}
|
||||
|
||||
private fun initListener() {
|
||||
actv_end_order_submit.setOnClickListener {
|
||||
mPresenter?.endOrder()
|
||||
}
|
||||
actv_contain_order.setOnClickListener {
|
||||
this.dismiss?.closeDialog()
|
||||
}
|
||||
actv_end_order.setOnClickListener {
|
||||
cl_order_info.visibility = View.GONE
|
||||
cl_order_info_endorder_comfit.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
fun setStartTimeAndEndTime(startTime:String,endTime:String){
|
||||
actv_order_times.text = "$startTime-$endTime"
|
||||
}
|
||||
fun setPhone(phone:String){
|
||||
if(phone.length>8) {
|
||||
//截取电话号码前三位
|
||||
val phoneNumPre = phone.substring(0, 3);
|
||||
//截取电话号码后四位
|
||||
val phoneNumFix = phone.substring(7);
|
||||
actv_order_phone.text = "$phoneNumPre****$phoneNumFix"
|
||||
}else{
|
||||
actv_order_phone.text = phone
|
||||
}
|
||||
}
|
||||
|
||||
fun setLeftTime(leftTime:String){
|
||||
actv_left_time.text = "剩余时间 $leftTime"
|
||||
}
|
||||
|
||||
fun setContainDismiss(dismiss: M1ContainFragment.ContainDismiss) {
|
||||
this.dismiss = dismiss
|
||||
}
|
||||
|
||||
fun closeDialogContaion(){
|
||||
this.dismiss?.closeDialog()
|
||||
}
|
||||
|
||||
override fun createPresenter(): OrderInfoPresenter =
|
||||
OrderInfoPresenter(this)
|
||||
|
||||
companion object {
|
||||
const val TAG = "OrderInfoFragment"
|
||||
@JvmStatic
|
||||
fun newInstance(dismiss: M1ContainFragment.ContainDismiss): OrderInfoFragment {
|
||||
val args = Bundle()
|
||||
val fragment = OrderInfoFragment()
|
||||
fragment.arguments = args
|
||||
fragment.setContainDismiss(dismiss)
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,268 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.ui.selectline
|
||||
|
||||
import android.animation.ObjectAnimator
|
||||
import android.graphics.drawable.AnimationDrawable
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.view.animation.LinearInterpolator
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.elegant.utils.UiThreadHandler
|
||||
import com.mogo.commons.mvp.MvpFragment
|
||||
import com.mogo.eagle.core.utilcode.kotlin.onClick
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.bean.response.LineInfoResponse
|
||||
import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse
|
||||
import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
||||
import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionOrderPresenter
|
||||
import com.mogo.och.bus.passenger.ui.selectline.adapter.OrderLineItemAdapter
|
||||
import com.mogo.och.bus.passenger.ui.selectline.adapter.OrderSiteItemAdapter
|
||||
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
|
||||
import com.mogo.och.bus.passenger.ui.selectline.layoutmanage.BottomDecoration
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import io.reactivex.disposables.Disposable
|
||||
import kotlinx.android.synthetic.main.m1_order_fragment.*
|
||||
import kotlinx.android.synthetic.main.m1_order_loading.iv_loading_wait_ent
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
|
||||
/**
|
||||
* @author: yangyakun
|
||||
* @date: 2023/1/28
|
||||
*/
|
||||
class M1OrderLineFragment :
|
||||
MvpFragment<M1OrderLineFragment?, BusPassengerFunctionOrderPresenter?>() {
|
||||
|
||||
private var dismiss: M1ContainFragment.ContainDismiss? = null
|
||||
|
||||
|
||||
private lateinit var lineAdapter: OrderLineItemAdapter
|
||||
private lateinit var siteAdapter: OrderSiteItemAdapter
|
||||
|
||||
val lineList = mutableListOf<LineInfoResponse.LineInfo>()
|
||||
val siteList = mutableListOf<SiteInfoResponse.SiteInfo>()
|
||||
|
||||
private var subscribeDirverAgree: Disposable? = null
|
||||
private var subscribeDirverRefuse: Disposable? = null
|
||||
|
||||
private val loadingAni =
|
||||
ObjectAnimator.ofFloat(iv_loading_wait_ent, "rotation", 0f, 90f, 180f, 270f, 360f)
|
||||
.apply {
|
||||
repeatCount = -1
|
||||
interpolator = LinearInterpolator()
|
||||
duration = 1000
|
||||
}
|
||||
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.m1_order_fragment
|
||||
}
|
||||
|
||||
override fun getTagName(): String {
|
||||
return TAG
|
||||
}
|
||||
|
||||
override fun initViews() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "initViews")
|
||||
lineAdapter = OrderLineItemAdapter(requireContext(), lineList)
|
||||
siteAdapter = OrderSiteItemAdapter(requireContext(), siteList)
|
||||
loadingAni.target = iv_loading_wait_ent
|
||||
rlv_line_list.layoutManager =
|
||||
LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
|
||||
rlv_line_list.addItemDecoration(
|
||||
BottomDecoration(
|
||||
AutoSizeUtils.dp2px(context, 60f)
|
||||
)
|
||||
)
|
||||
rlv_line_list.adapter = lineAdapter
|
||||
|
||||
rv_site_list.layoutManager =
|
||||
LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
|
||||
rv_site_list.addItemDecoration(
|
||||
BottomDecoration(
|
||||
AutoSizeUtils.dp2px(context, 90f)
|
||||
)
|
||||
)
|
||||
rv_site_list.adapter = siteAdapter
|
||||
|
||||
initListener()
|
||||
|
||||
}
|
||||
|
||||
private fun initListener() {
|
||||
lineAdapter.checkChangeListener = object : OrderLineItemAdapter.CheckListener {
|
||||
override fun canSwitchLine(): Boolean {
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onCheckListener(lineInfo: LineInfoResponse.LineInfo) {
|
||||
mPresenter?.checkLineClick(lineInfo)
|
||||
siteAdapter.clearCheck()
|
||||
}
|
||||
}
|
||||
siteAdapter.checkChangeListener = object : OrderSiteItemAdapter.CheckListener {
|
||||
override fun canSwitchLine(): Boolean {
|
||||
return mPresenter?.canSwitchLine()?:true
|
||||
}
|
||||
|
||||
override fun onCheckListener(siteInfo: SiteInfoResponse.SiteInfo?) {
|
||||
// 设置临时选中的
|
||||
mPresenter?.checkSiteClick(siteInfo)
|
||||
}
|
||||
|
||||
}
|
||||
tv_site_cancle.onClick {
|
||||
mPresenter?.resetData()
|
||||
}
|
||||
tv_site_submit.onClick {
|
||||
mPresenter?.changeSites(siteList)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 设置是否可用选择站点
|
||||
*/
|
||||
fun setEnableSiteStatus(cancleAndSubmit: Boolean) {
|
||||
if (cancleAndSubmit) {
|
||||
g_side_cancle_submit_group?.visibility = View.VISIBLE
|
||||
} else {
|
||||
g_side_cancle_submit_group?.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
fun hideDataWaitDriverMsg() {
|
||||
g_lines_sites_data?.visibility = View.GONE
|
||||
g_loading_group?.visibility = View.VISIBLE
|
||||
iv_loading_wait_driver?.let {
|
||||
val animationDrawable = it.drawable as AnimationDrawable
|
||||
animationDrawable.start()
|
||||
}
|
||||
}
|
||||
|
||||
fun showSelectData() {
|
||||
UiThreadHandler.post {
|
||||
g_lines_sites_data?.visibility = View.VISIBLE
|
||||
g_loading_group?.visibility = View.GONE
|
||||
group_driver_agrenn_line?.visibility = View.GONE
|
||||
aciv_driver_refuse_group?.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
fun hideDataDriverAgree(){
|
||||
group_driver_agrenn_line?.visibility = View.VISIBLE
|
||||
aciv_driver_refuse_group?.visibility = View.GONE
|
||||
g_loading_group?.visibility = View.GONE
|
||||
g_lines_sites_data?.let {
|
||||
it.visibility = View.GONE
|
||||
subscribeDirverAgree = RxUtils.createSubscribe(3_000) {
|
||||
dismiss?.closeDialog()
|
||||
}
|
||||
}
|
||||
}
|
||||
fun hideDataDriverRefuse(){
|
||||
group_driver_agrenn_line?.visibility = View.GONE
|
||||
aciv_driver_refuse_group?.visibility = View.VISIBLE
|
||||
g_loading_group?.visibility = View.GONE
|
||||
g_lines_sites_data?.let {
|
||||
it.visibility = View.GONE
|
||||
subscribeDirverRefuse = RxUtils.createSubscribe(3_000) {
|
||||
showSelectData()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun setVisableByTrun(
|
||||
showBiz: Boolean = false,
|
||||
showNetError: Boolean = false,
|
||||
showNorOrder: Boolean = false,
|
||||
showLoading: Boolean = false
|
||||
) {
|
||||
if(showBiz){
|
||||
// 选择线路页面
|
||||
m1_order_noorder?.visibility = View.GONE
|
||||
m1_order_neterror?.visibility = View.GONE
|
||||
lsv_line_site?.visibility = View.VISIBLE
|
||||
m1_order_loading?.visibility = View.GONE
|
||||
return
|
||||
}
|
||||
if(showNetError){
|
||||
m1_order_noorder?.visibility = View.GONE
|
||||
m1_order_neterror?.visibility = View.VISIBLE
|
||||
lsv_line_site?.visibility = View.GONE
|
||||
m1_order_loading?.visibility = View.GONE
|
||||
return
|
||||
}
|
||||
if(showNorOrder){
|
||||
m1_order_noorder?.visibility = View.VISIBLE
|
||||
m1_order_neterror?.visibility = View.GONE
|
||||
lsv_line_site?.visibility = View.GONE
|
||||
m1_order_loading?.visibility = View.GONE
|
||||
return
|
||||
}
|
||||
if(showLoading){
|
||||
m1_order_noorder?.visibility = View.GONE
|
||||
m1_order_neterror?.visibility = View.GONE
|
||||
lsv_line_site?.visibility = View.GONE
|
||||
m1_order_loading?.visibility = View.VISIBLE
|
||||
if (!loadingAni.isRunning) {
|
||||
loadingAni.start()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun go2StartCar() {
|
||||
dismiss?.closeDialog()
|
||||
}
|
||||
|
||||
override fun createPresenter(): BusPassengerFunctionOrderPresenter {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "createPresenter")
|
||||
return BusPassengerFunctionOrderPresenter(this)
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
loadingAni.cancel()
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "onDestroyView")
|
||||
RxUtils.disposeSubscribe(subscribeDirverAgree)
|
||||
RxUtils.disposeSubscribe(subscribeDirverRefuse)
|
||||
}
|
||||
|
||||
fun lineAdapterSubmit(lineInfo: LineInfoResponse.LineInfo) {
|
||||
lineAdapter.submitLine(lineInfo)
|
||||
}
|
||||
|
||||
fun lineAdapterSetData(
|
||||
lineInfo: List<LineInfoResponse.LineInfo>,
|
||||
checkLine: LineInfoResponse.LineInfo?
|
||||
) {
|
||||
lineAdapter.setDataList(lineInfo,checkLine)
|
||||
}
|
||||
|
||||
fun siteAdapterSetData(siteInfo: List<SiteInfoResponse.SiteInfo>) {
|
||||
siteAdapter.setDataList(siteInfo)
|
||||
}
|
||||
fun siteAdapterEnableIndex(index: Int) {
|
||||
siteAdapter.setEnableIndex(index)
|
||||
}
|
||||
|
||||
fun setContainDismiss(dismiss: M1ContainFragment.ContainDismiss) {
|
||||
this.dismiss = dismiss
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "M1OrderLineFragment"
|
||||
|
||||
@JvmStatic
|
||||
fun newInstance(dismiss: M1ContainFragment.ContainDismiss): M1OrderLineFragment {
|
||||
val args = Bundle()
|
||||
val fragment = M1OrderLineFragment()
|
||||
fragment.arguments = args
|
||||
fragment.setContainDismiss(dismiss)
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,6 @@ package com.mogo.och.bus.passenger.ui.selectline
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.elegant.utils.UiThreadHandler
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
@@ -17,24 +16,20 @@ import com.mogo.och.bus.passenger.bean.event.EventLineSites
|
||||
import com.mogo.och.bus.passenger.bean.response.LineInfoListResponse
|
||||
import com.mogo.och.bus.passenger.bean.response.LineInfoResponse
|
||||
import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse
|
||||
import com.mogo.och.bus.passenger.callback.ITimeCallback
|
||||
import com.mogo.och.bus.passenger.model.CharterPassengerModel
|
||||
import com.mogo.och.bus.passenger.model.IOrderStatusChangeListener
|
||||
import com.mogo.och.bus.passenger.model.OrderStatusEnum
|
||||
import com.mogo.och.bus.passenger.net.BusPassengerServiceManager
|
||||
import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionOrderPresenter
|
||||
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
|
||||
import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg
|
||||
import com.mogo.och.common.module.bean.dpmsg.ChangeDestMsg
|
||||
import com.mogo.och.common.module.bean.dpmsg.DPMsgType
|
||||
import com.mogo.och.common.module.bean.dpmsg.EndOrderMsg
|
||||
import com.mogo.och.common.module.bean.dpmsg.LineSite
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.manager.StopSideStatusManager
|
||||
import com.mogo.och.common.module.manager.loopmanager.BizLoopManager
|
||||
import com.mogo.och.common.module.manager.loopmanager.LoopInfo
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import io.reactivex.disposables.Disposable
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
@@ -1,735 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.ui.softcontrol
|
||||
|
||||
import android.animation.ObjectAnimator
|
||||
import android.animation.ValueAnimator
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.graphics.BitmapFactory
|
||||
import android.graphics.drawable.ClipDrawable
|
||||
import android.graphics.drawable.LayerDrawable
|
||||
import android.media.AudioManager
|
||||
import android.os.Bundle
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.view.animation.LinearInterpolator
|
||||
import android.widget.RadioButton
|
||||
import android.widget.SeekBar
|
||||
import android.widget.SeekBar.OnSeekBarChangeListener
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.mogo.commons.mvp.MvpFragment
|
||||
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.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.utilcode.util.ClickUtils
|
||||
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.bean.Temperature
|
||||
import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionSoftPresenter
|
||||
import com.mogo.och.bus.passenger.ui.softcontrol.adapter.TemperatureAdapter
|
||||
import com.mogo.och.bus.passenger.ui.softcontrol.layoutmanage.PagerCenterSnapHelper
|
||||
import com.mogo.och.bus.passenger.ui.softcontrol.layoutmanage.HorizontalDecoration
|
||||
import com.mogo.och.bus.passenger.ui.selectline.layoutmanage.PickerLayoutManager
|
||||
import com.mogo.och.common.module.utils.SoundPoolHelper
|
||||
import com.mogo.och.common.module.wigets.MineGradientDrawable
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
import kotlinx.android.synthetic.main.m1_soft_fragment.*
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
|
||||
/**
|
||||
* @author: yangyakun
|
||||
* @date: 2023/1/28
|
||||
*/
|
||||
class M1SoftFragment :
|
||||
MvpFragment<M1SoftFragment?, BusPassengerFunctionSoftPresenter?>() {
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.m1_soft_fragment
|
||||
|
||||
override fun getTagName(): String = TAG
|
||||
|
||||
private var currentTemperature: Temperature? = null
|
||||
|
||||
private var subscribeAir: Disposable? = null
|
||||
private var subscribeLightTop1: Disposable? = null
|
||||
private var subscribeLightTop2: Disposable? = null
|
||||
private var subscribeAtmosphere: Disposable? = null
|
||||
private var subscribeAnimator: Disposable? = null
|
||||
|
||||
private var animator1: ObjectAnimator? = null
|
||||
private val loadingAni = ObjectAnimator.ofFloat(iv_loading, "rotation", 0f, 90f ,180f, 270f, 360f).apply {
|
||||
repeatCount = -1
|
||||
interpolator = LinearInterpolator()
|
||||
duration = 1000
|
||||
}
|
||||
|
||||
|
||||
override fun initViews() {
|
||||
rg_select_function.setOnCheckedChangeListener { group, checkedId ->
|
||||
when (checkedId) {
|
||||
R.id.tv_setting_aircondition -> {
|
||||
g_light_setting.visibility = View.GONE
|
||||
g_voice_setting.visibility = View.GONE
|
||||
if(loadingAni.isRunning){
|
||||
iv_loading.visibility = View.VISIBLE
|
||||
g_aircondition_setting.visibility = View.GONE
|
||||
}else{
|
||||
g_aircondition_setting.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
R.id.tv_setting_lighting -> {
|
||||
g_light_setting.visibility = View.VISIBLE
|
||||
g_voice_setting.visibility = View.GONE
|
||||
g_aircondition_setting.visibility = View.GONE
|
||||
iv_loading.visibility = View.GONE
|
||||
}
|
||||
R.id.tv_setting_voice -> {
|
||||
g_voice_setting.visibility = View.VISIBLE
|
||||
g_aircondition_setting.visibility = View.GONE
|
||||
g_light_setting.visibility = View.GONE
|
||||
iv_loading.visibility = View.GONE
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
if(rb_pattern_heating.isChecked){
|
||||
iv_temperature_select.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
rg_select_function.check(R.id.tv_setting_aircondition)
|
||||
setAirconditionListener()
|
||||
setAirConditionAni()
|
||||
setLightListener()
|
||||
setVoiceInfo()
|
||||
}
|
||||
|
||||
private fun setAirConditionAni() {
|
||||
dbv_wind.post {
|
||||
dbv_wind?.let {
|
||||
val measuredHeight = it.measuredHeight
|
||||
animator1 = ObjectAnimator.ofInt(it, "showHeight", 0, measuredHeight).apply {
|
||||
duration = 1000
|
||||
repeatCount = ValueAnimator.INFINITE
|
||||
if(rg_setting_windspeed.checkedRadioButtonId!=0&&tv_aircondition_switch.isChecked){
|
||||
start()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun showAni(){
|
||||
iv_loading.visibility = View.VISIBLE
|
||||
loadingAni.target = iv_loading
|
||||
loadingAni.start()
|
||||
g_aircondition_setting.visibility = View.GONE
|
||||
subscribeAnimator = Observable.timer(10000, TimeUnit.MILLISECONDS)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe {
|
||||
loadingAni.cancel()
|
||||
iv_loading.visibility = View.GONE
|
||||
if(tv_setting_aircondition.isChecked){
|
||||
g_aircondition_setting.visibility = View.VISIBLE
|
||||
if(rb_pattern_heating.isChecked){
|
||||
iv_temperature_select.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private fun setAirconditionListener() {
|
||||
// 开关空调或暖风机
|
||||
tv_aircondition_switch.setOnCheckedChangeListener { buttonView, isChecked ->
|
||||
if(!buttonView.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
if(isChecked){//打开
|
||||
tv_aircondition_switch.setText("关闭空调")
|
||||
if (rg_setting_pattern.checkedRadioButtonId == R.id.rb_pattern_heating) {
|
||||
openHeater()// 打开暖风机
|
||||
} else {
|
||||
openAircondition()// 打开空调
|
||||
}
|
||||
showAni()
|
||||
}else{// 关闭
|
||||
tv_aircondition_switch.setText("打开空调")
|
||||
closeHeater()// 关闭暖风机
|
||||
closeAircondition()//关闭空调
|
||||
}
|
||||
}
|
||||
// 模式调节
|
||||
rg_setting_pattern.setOnCheckedChangeListener { group, checkedId ->
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "调节模式")
|
||||
when (checkedId) {
|
||||
R.id.rb_pattern_heating -> {
|
||||
if(!rb_pattern_heating.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
openHeater()
|
||||
}
|
||||
R.id.rb_pattern_automatic->{
|
||||
if(!rb_pattern_automatic.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
openAircondition()
|
||||
}
|
||||
R.id.rb_pattern_refrigeration->{
|
||||
if(!rb_pattern_refrigeration.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
openAircondition()
|
||||
}
|
||||
R.id.rb_pattern_ventilate->{
|
||||
if(!rb_pattern_ventilate.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
openAircondition()
|
||||
}
|
||||
else -> {
|
||||
openAircondition()
|
||||
}
|
||||
}
|
||||
if(tv_aircondition_switch.isChecked) {
|
||||
showAni()
|
||||
}
|
||||
}
|
||||
|
||||
// 风速调节
|
||||
rg_setting_windspeed.setOnCheckedChangeListener { group, checkedId ->
|
||||
when (checkedId) {
|
||||
R.id.rb_wind_speed_low-> {
|
||||
if(!rb_wind_speed_low.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
}
|
||||
R.id.rb_wind_speed_middle-> {
|
||||
if(!rb_wind_speed_middle.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
}
|
||||
R.id.rb_wind_speed_high-> {
|
||||
if(!rb_wind_speed_high.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
if (rg_setting_pattern.checkedRadioButtonId == R.id.rb_pattern_heating) {//暖风机
|
||||
openHeater()
|
||||
} else {
|
||||
openAircondition()
|
||||
}
|
||||
}
|
||||
val pickerLayoutManager =
|
||||
PickerLayoutManager(
|
||||
requireContext(),
|
||||
PickerLayoutManager.HORIZONTAL,
|
||||
false
|
||||
)
|
||||
pickerLayoutManager.isChangeAlpha = true
|
||||
pickerLayoutManager.scaleDownBy = 0.29f
|
||||
pickerLayoutManager.scaleDownDistance = 0.8f
|
||||
|
||||
val data = getData()
|
||||
val adapter = TemperatureAdapter(requireContext(), data, rv_aircondition_temperature)
|
||||
val snapHelper = PagerCenterSnapHelper()
|
||||
snapHelper.attachToRecyclerView(rv_aircondition_temperature)
|
||||
rv_aircondition_temperature.layoutManager = pickerLayoutManager
|
||||
rv_aircondition_temperature.adapter = adapter
|
||||
HorizontalDecoration.distance = SharedPrefsMgr.getInstance(requireContext()).getInt(
|
||||
HorizontalDecoration.distancekey,0)
|
||||
val space = AutoSizeUtils.dp2px(context, 15f)
|
||||
rv_aircondition_temperature.addItemDecoration(
|
||||
HorizontalDecoration(
|
||||
space,
|
||||
data.size - 1
|
||||
)
|
||||
)
|
||||
|
||||
pickerLayoutManager.setOnScrollStopListener { view ->
|
||||
if (view is TextView) {
|
||||
// 未拖到中点、自动滚动到中点会短时间触发两次
|
||||
val tag = view.tag
|
||||
if (tag is Temperature) {
|
||||
mPresenter?.disposeSubscribe(subscribeAir)
|
||||
if(tag.index==0||tag.index==adapter.data.size-1){
|
||||
subscribeAir = Observable.timer(200, TimeUnit.MILLISECONDS)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe {
|
||||
setCheckAir(adapter,tag)
|
||||
}
|
||||
}else {
|
||||
if (ClickUtils.isClickTooFrequent(rv_aircondition_temperature)) {
|
||||
return@setOnScrollStopListener
|
||||
}
|
||||
setCheckAir(adapter,tag)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
if(HorizontalDecoration.distance!=0){
|
||||
rv_aircondition_temperature.scrollToPosition(data.size-1)
|
||||
adapter.setCheckIndex(data.size-1)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setCheckAir(adapter: TemperatureAdapter, tag:Temperature){
|
||||
adapter.setCheckIndex(tag.index)
|
||||
currentTemperature = tag
|
||||
if (rv_aircondition_temperature.tag == touchTag) {
|
||||
rv_aircondition_temperature.tag = null
|
||||
return
|
||||
} else {
|
||||
SoundPoolHelper.getSoundPoolHelper()
|
||||
.playSoundWithRedId(context, R.raw.bus_di)
|
||||
}
|
||||
openAircondition()
|
||||
}
|
||||
|
||||
private fun getData(): MutableList<Temperature> {
|
||||
val mutableListOf = mutableListOf<Temperature>()
|
||||
mutableListOf.add(Temperature(0, 16, "16°"))
|
||||
mutableListOf.add(Temperature(1, 17, "17°"))
|
||||
mutableListOf.add(Temperature(2, 18, "18°"))
|
||||
mutableListOf.add(Temperature(3, 19, "19°"))
|
||||
mutableListOf.add(Temperature(4, 20, "20°"))
|
||||
mutableListOf.add(Temperature(5, 21, "21°"))
|
||||
mutableListOf.add(Temperature(6, 22, "22°"))
|
||||
mutableListOf.add(Temperature(7, 23, "23°"))
|
||||
mutableListOf.add(Temperature(8, 24, "24°"))
|
||||
mutableListOf.add(Temperature(9, 25, "25°"))
|
||||
mutableListOf.add(Temperature(10, 26, "26°"))
|
||||
return mutableListOf
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭空调
|
||||
*/
|
||||
private fun closeAircondition() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭空调")
|
||||
var modeCmd = 0
|
||||
var windSpeedCmd = 0
|
||||
val temperatureCmd = currentTemperature?.value ?: 26
|
||||
closeHeater()//关闭暖风
|
||||
when (rg_setting_pattern.checkedRadioButtonId) {
|
||||
R.id.rb_pattern_automatic -> modeCmd = 1 // 自动
|
||||
R.id.rb_pattern_refrigeration -> modeCmd = 2 // 制冷
|
||||
R.id.rb_pattern_ventilate -> modeCmd = 3 // 通风
|
||||
else -> {}
|
||||
}
|
||||
when (rg_setting_windspeed.checkedRadioButtonId) {
|
||||
R.id.rb_wind_speed_low -> windSpeedCmd = 1 // 1档
|
||||
R.id.rb_wind_speed_middle -> windSpeedCmd = 2 // 2档
|
||||
R.id.rb_wind_speed_high -> windSpeedCmd = 3 // 3档
|
||||
else -> {}
|
||||
}
|
||||
mPresenter?.closeAircondition(modeCmd, windSpeedCmd, temperatureCmd)
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启空调
|
||||
*/
|
||||
private fun openAircondition() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "打开空调")
|
||||
var modeCmd = 0
|
||||
var windSpeedCmd = 0
|
||||
val temperatureCmd = currentTemperature?.value ?: 26
|
||||
closeHeater()//关闭暖风
|
||||
when (rg_setting_pattern.checkedRadioButtonId) {
|
||||
R.id.rb_pattern_automatic -> modeCmd = 1 // 自动
|
||||
R.id.rb_pattern_refrigeration -> modeCmd = 2 // 制冷
|
||||
R.id.rb_pattern_ventilate -> modeCmd = 3 // 通风
|
||||
else -> {}
|
||||
}
|
||||
when (rg_setting_windspeed.checkedRadioButtonId) {
|
||||
R.id.rb_wind_speed_low -> windSpeedCmd = 1 // 1档
|
||||
R.id.rb_wind_speed_middle -> windSpeedCmd = 2 // 2档
|
||||
R.id.rb_wind_speed_high -> windSpeedCmd = 3 // 3档
|
||||
else -> {}
|
||||
}
|
||||
if (!tv_aircondition_switch.isChecked) {
|
||||
return
|
||||
}
|
||||
mPresenter?.openAndSetAircondition(modeCmd, windSpeedCmd, temperatureCmd)
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据车的状态会写页面状态
|
||||
*/
|
||||
fun setAirconditionHeaterView(
|
||||
airIsOpen: Boolean,
|
||||
heaterIsOpen: Boolean,
|
||||
temperatureCmd: Int,
|
||||
pattern: Int,
|
||||
windSpeed: Int
|
||||
) {
|
||||
tv_aircondition_switch?.let {
|
||||
if (!airIsOpen && !heaterIsOpen) {
|
||||
tv_aircondition_switch.text = "打开空调"
|
||||
tv_aircondition_switch.isChecked = false
|
||||
dbv_wind.visibility = View.GONE
|
||||
} else {
|
||||
tv_aircondition_switch.text = "关闭空调"
|
||||
tv_aircondition_switch.isChecked = true
|
||||
dbv_wind.visibility = View.VISIBLE
|
||||
}
|
||||
if (airIsOpen) {
|
||||
val adapter = rv_aircondition_temperature.adapter
|
||||
if (adapter is TemperatureAdapter) {
|
||||
adapter.data.forEach {
|
||||
if (it.value == temperatureCmd) {
|
||||
rv_aircondition_temperature.tag = touchTag
|
||||
UiThreadHandler.postDelayed({
|
||||
rv_aircondition_temperature?.smoothScrollToPosition(it.index)
|
||||
},500)
|
||||
}
|
||||
}
|
||||
}
|
||||
when (pattern) {//1: 自动模式, 2: 制冷模式, 3: 通风模式(仅送风,无温度)
|
||||
1 -> {rb_pattern_automatic.isChecked = true}
|
||||
2 -> {rb_pattern_refrigeration.isChecked = true}
|
||||
3 -> {rb_pattern_ventilate.isChecked = true}
|
||||
else -> {}
|
||||
}
|
||||
heaterAirEnable(true)
|
||||
when (windSpeed) {//1: 1档,2: 2档,3:3档
|
||||
1 -> {
|
||||
setWind(rb_wind_speed_low,R.drawable.bus_pm1_aircondition_wind_low)
|
||||
}
|
||||
2 -> {
|
||||
setWind(rb_wind_speed_middle,R.drawable.bus_pm1_aircondition_wind_middle)
|
||||
}
|
||||
3 -> {
|
||||
setWind(rb_wind_speed_high,R.drawable.bus_pm1_aircondition_wind_high)
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
if (heaterIsOpen) {
|
||||
rb_pattern_heating.isChecked = true
|
||||
heaterAirEnable(false)
|
||||
when (windSpeed) {//1: 1档,2: 2档
|
||||
1 -> {
|
||||
setWind(rb_wind_speed_middle,R.drawable.bus_pm1_warm_wind_middle)
|
||||
}
|
||||
2 -> {
|
||||
setWind(rb_wind_speed_high,R.drawable.bus_pm1_warm_wind_high)
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fun setWind(check: RadioButton,resource:Int){
|
||||
check.isChecked = true
|
||||
dbv_wind.setDrawableImage(BitmapFactory.decodeResource(resources,resource))
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭暖风机
|
||||
*/
|
||||
private fun closeHeater() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭暖风")
|
||||
heaterAirEnable(true)
|
||||
mPresenter?.closeHeader()
|
||||
}
|
||||
|
||||
private fun heaterAirEnable(enable: Boolean) {
|
||||
tv_temperature_title.isEnabled = enable
|
||||
rv_aircondition_temperature.isEnabled = enable
|
||||
val layoutManager = rv_aircondition_temperature.layoutManager
|
||||
if (layoutManager is PickerLayoutManager) {
|
||||
layoutManager.setHorizontallyScroll(enable)
|
||||
}
|
||||
val adapter = rv_aircondition_temperature.adapter as TemperatureAdapter
|
||||
if(enable){
|
||||
adapter.setEnable(true)
|
||||
if(tv_setting_aircondition.isChecked) {
|
||||
if(iv_loading.visibility==View.GONE){
|
||||
iv_temperature_select.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
rb_wind_speed_low.setTextColor(ContextCompat.getColorStateList(requireContext(),R.color.bus_p_function_airconditon_pattern_text_color_selector))
|
||||
}else{
|
||||
adapter.setEnable(false)
|
||||
iv_temperature_select.visibility = View.GONE
|
||||
rb_wind_speed_low.setTextColor(ContextCompat.getColor(requireContext(),R.color.bus_p_m1_6647576e))
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启暖风机
|
||||
*/
|
||||
private fun openHeater() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "打开暖风")
|
||||
heaterAirEnable(false)
|
||||
closeAircondition()//关闭空调
|
||||
val switch: Int
|
||||
when (rg_setting_windspeed.checkedRadioButtonId) {
|
||||
R.id.rb_wind_speed_low -> {
|
||||
rb_wind_speed_middle.tag = touchTag
|
||||
rb_wind_speed_middle.toggle()
|
||||
switch = 1
|
||||
}
|
||||
R.id.rb_wind_speed_middle -> {
|
||||
switch = 1
|
||||
}
|
||||
R.id.rb_wind_speed_high -> {
|
||||
switch = 2
|
||||
}
|
||||
else -> {
|
||||
rb_wind_speed_middle.tag = touchTag
|
||||
rb_wind_speed_middle.toggle()
|
||||
switch = 1
|
||||
}
|
||||
}
|
||||
if (!tv_aircondition_switch.isChecked) {
|
||||
return
|
||||
}
|
||||
mPresenter?.openAndSetHeader(switch)
|
||||
}
|
||||
|
||||
|
||||
// region 灯
|
||||
private fun setLightListener() {
|
||||
tv_light_top_01.setOnCheckedChangeListener { buttonView, isChecked ->
|
||||
if(!buttonView.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
tv_light_top_01.isEnabled = false
|
||||
subscribeLightTop1 = Observable.timer(2000, TimeUnit.MILLISECONDS)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe {
|
||||
tv_light_top_01.isEnabled = true
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
mPresenter?.setLightData1(isChecked)
|
||||
setLightTop1View(isChecked,true)
|
||||
setLightView(isChecked,tv_light_top_02.isChecked)
|
||||
}
|
||||
tv_light_top_02.setOnCheckedChangeListener { buttonView, isChecked ->
|
||||
if(!buttonView.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
tv_light_top_02.isEnabled = false
|
||||
subscribeLightTop2 = Observable.timer(2000, TimeUnit.MILLISECONDS)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe {
|
||||
tv_light_top_02.isEnabled = true
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
mPresenter?.setLightData2(isChecked)
|
||||
setLightTop2View(isChecked,true)
|
||||
setLightView(tv_light_top_01.isChecked,isChecked)
|
||||
}
|
||||
tv_light_atmosphere.setOnCheckedChangeListener { buttonView, isChecked ->
|
||||
if(!buttonView.isPressed){
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
tv_light_atmosphere.isEnabled = false
|
||||
subscribeAtmosphere = Observable.timer(2000, TimeUnit.MILLISECONDS)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe {
|
||||
tv_light_atmosphere.isEnabled = true
|
||||
}
|
||||
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
|
||||
mPresenter?.setAtmosphereLightData2(isChecked)
|
||||
setLightAtmosphereView(isChecked,true)
|
||||
}
|
||||
}
|
||||
|
||||
fun setLightTop1View(leftLight: Boolean, isFirst: Boolean){
|
||||
tv_light_top_01?.let {
|
||||
if (leftLight) {
|
||||
tv_light_top_01.text = requireContext().getString(R.string.bus_p_m1_close_light1)
|
||||
tv_light_top_01.isChecked = true
|
||||
if(!isFirst) ToastCharterUtils.showShort("打开顶灯1")
|
||||
} else {
|
||||
tv_light_top_01.text = requireContext().getString(R.string.bus_p_m1_open_light1)
|
||||
tv_light_top_01.isChecked = false
|
||||
if(!isFirst) ToastCharterUtils.showShort("关闭顶灯1")
|
||||
}
|
||||
}
|
||||
}
|
||||
fun setLightTop2View(rightLight: Boolean, isFirst: Boolean){
|
||||
tv_light_top_02?.let {
|
||||
if (rightLight) {
|
||||
tv_light_top_02.text = requireContext().getString(R.string.bus_p_m1_close_light2)
|
||||
tv_light_top_02.isChecked = true
|
||||
if(!isFirst) ToastCharterUtils.showShort("打开顶灯2")
|
||||
} else {
|
||||
tv_light_top_02.text = requireContext().getString(R.string.bus_p_m1_open_light2)
|
||||
tv_light_top_02.isChecked = false
|
||||
if(!isFirst) ToastCharterUtils.showShort("关闭顶灯2")
|
||||
}
|
||||
}
|
||||
}
|
||||
fun setLightAtmosphereView(atmosphereLight: Boolean, isFirst: Boolean){
|
||||
tv_light_atmosphere?.let {
|
||||
if (atmosphereLight) {
|
||||
tv_light_atmosphere.text = requireContext().getString(R.string.bus_p_m1_close_atmosphere)
|
||||
tv_light_atmosphere.isChecked = true
|
||||
iv_bottom_light_setting.setImageResource(R.drawable.bus_p_function_atmosphere_select)
|
||||
if(!isFirst) ToastCharterUtils.showShort("打开氛围灯")
|
||||
} else {
|
||||
tv_light_atmosphere.text = requireContext().getString(R.string.bus_p_m1_open_atmosphere)
|
||||
tv_light_atmosphere.isChecked = false
|
||||
iv_bottom_light_setting.setImageResource(R.drawable.bus_p_function_atmosphere_nor)
|
||||
if(!isFirst) ToastCharterUtils.showShort("关闭氛围灯")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 灯的UI发生变化
|
||||
*/
|
||||
fun setLightView(leftLight: Boolean, rightLight: Boolean) {
|
||||
iv_top_light_setting?.let {
|
||||
if (leftLight && rightLight) {
|
||||
iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_middle_selected)// 都打开
|
||||
} else if (!leftLight && !rightLight) {
|
||||
iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_nor)// 都关闭
|
||||
} else {
|
||||
if (leftLight) {
|
||||
iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_select_left)// 左面开
|
||||
}
|
||||
if (rightLight) {
|
||||
iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_select_right)// 左面开
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// endregion
|
||||
|
||||
// region 声音
|
||||
private var mAudioManager: AudioManager? = null
|
||||
private var mMaxVolume: Int? = 100
|
||||
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
private fun setVoiceInfo() {
|
||||
val dp2px = AutoSizeUtils.dp2px(context, 26f)//进度条高度
|
||||
val color2CBFFC = ContextCompat.getColor(requireContext(), R.color.bus_p_m1_2cbffc)
|
||||
val color1060FF = ContextCompat.getColor(requireContext(), R.color.bus_p_m1_1060ff)
|
||||
val color96A5C2 = ContextCompat.getColor(requireContext(), R.color.bus_p_m1_96a5c2)
|
||||
val temp03 = MineGradientDrawable(color2CBFFC, color1060FF, dp2px)
|
||||
val scaleDrawable3 = ClipDrawable(temp03, Gravity.START, ClipDrawable.HORIZONTAL)
|
||||
val temp01 = MineGradientDrawable(color96A5C2, color96A5C2, dp2px)
|
||||
val arr = arrayOf(temp01, scaleDrawable3)
|
||||
val ld = LayerDrawable(arr)
|
||||
ld.setDrawableByLayerId(android.R.id.background, temp01)
|
||||
ld.setDrawableByLayerId(android.R.id.progress, scaleDrawable3)
|
||||
sb_voice_bar.setProgressDrawableTiled(ld)
|
||||
sb_voice_bar.max = 100
|
||||
sb_voice_bar.min = 5
|
||||
sb_voice_bar.setOnSeekBarChangeListener(object : OnSeekBarChangeListener {
|
||||
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
|
||||
tv_current_voice_value.text = "$progress%"
|
||||
if (fromUser) {
|
||||
mMaxVolume?.let {
|
||||
var currnetValue = ((progress.toFloat() / 100) * it).toInt()
|
||||
if (currnetValue <= 0) {
|
||||
currnetValue = 1
|
||||
}
|
||||
mAudioManager?.setStreamVolume(
|
||||
AudioManager.STREAM_MUSIC,
|
||||
currnetValue,
|
||||
AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE
|
||||
)
|
||||
}
|
||||
}
|
||||
if (progress == 0) {
|
||||
iv_voice.setImageResource(R.drawable.bus_p_function_voice_middle_select)
|
||||
iv_end_voice.setImageResource(R.drawable.bus_p_function_voice_min)
|
||||
} else {
|
||||
iv_voice.setImageResource(R.drawable.bus_p_function_voice_middle_selected)
|
||||
iv_end_voice.setImageResource(R.drawable.bus_p_function_voice_max)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun onStartTrackingTouch(seekBar: SeekBar?) {}
|
||||
override fun onStopTrackingTouch(seekBar: SeekBar?) {}
|
||||
})
|
||||
|
||||
context?.let {
|
||||
mAudioManager = it.getSystemService(Context.AUDIO_SERVICE) as AudioManager
|
||||
mMaxVolume = mAudioManager?.getStreamMaxVolume(AudioManager.STREAM_MUSIC)
|
||||
val mCurrentVolume = mAudioManager?.getStreamVolume(AudioManager.STREAM_MUSIC)
|
||||
mMaxVolume?.let { max ->
|
||||
mCurrentVolume?.let { current ->
|
||||
if (current == 1) {
|
||||
sb_voice_bar.progress = 5
|
||||
tv_current_voice_value.text = "5%"
|
||||
} else {
|
||||
val fl = current.toFloat() / max * 100
|
||||
sb_voice_bar.progress = fl.toInt()
|
||||
tv_current_voice_value.text = "${fl.toInt()}%"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
// endregion
|
||||
|
||||
override fun createPresenter(): BusPassengerFunctionSoftPresenter =
|
||||
BusPassengerFunctionSoftPresenter(this)
|
||||
|
||||
override fun onDestroy() {
|
||||
mPresenter?.disposeSubscribe(subscribeLightTop1)
|
||||
mPresenter?.disposeSubscribe(subscribeLightTop2)
|
||||
mPresenter?.disposeSubscribe(subscribeAtmosphere)
|
||||
mPresenter?.disposeSubscribe(subscribeAnimator)
|
||||
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if(rg_setting_windspeed.checkedRadioButtonId!=0&&tv_aircondition_switch.isChecked){
|
||||
animator1?.start()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
animator1?.let {
|
||||
if(it.isRunning){
|
||||
it.pause()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDetach() {
|
||||
super.onDetach()
|
||||
animator1?.let {
|
||||
if(it.isRunning){
|
||||
it.end()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "M1SoftFragment"
|
||||
const val touchTagKey = 2
|
||||
const val touchTag = 2
|
||||
|
||||
@JvmStatic
|
||||
fun newInstance(): M1SoftFragment {
|
||||
val args = Bundle()
|
||||
val fragment = M1SoftFragment()
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -76,6 +76,8 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
|
||||
private val TAG = "OrderInfoView"
|
||||
|
||||
private val touchTag = 2
|
||||
|
||||
private var viewModel: SoftControlViewModel? = null
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
@@ -177,7 +179,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
* 关闭暖风机
|
||||
*/
|
||||
private fun closeHeater() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + M1SoftFragment.TAG, "关闭暖风")
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭暖风")
|
||||
heaterAirEnable(true)
|
||||
viewModel?.closeHeader()
|
||||
}
|
||||
@@ -219,13 +221,13 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
* 开启暖风机
|
||||
*/
|
||||
private fun openHeater() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + M1SoftFragment.TAG, "打开暖风")
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "打开暖风")
|
||||
heaterAirEnable(false)
|
||||
closeAircondition()//关闭空调
|
||||
val switch: Int
|
||||
when (rg_setting_windspeed.checkedRadioButtonId) {
|
||||
R.id.rb_wind_speed_low -> {
|
||||
rb_wind_speed_middle.tag = M1SoftFragment.touchTag
|
||||
rb_wind_speed_middle.tag = touchTag
|
||||
rb_wind_speed_middle.toggle()
|
||||
switch = 1
|
||||
}
|
||||
@@ -239,7 +241,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
}
|
||||
|
||||
else -> {
|
||||
rb_wind_speed_middle.tag = M1SoftFragment.touchTag
|
||||
rb_wind_speed_middle.tag = touchTag
|
||||
rb_wind_speed_middle.toggle()
|
||||
switch = 1
|
||||
}
|
||||
@@ -254,7 +256,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
* 关闭空调
|
||||
*/
|
||||
private fun closeAircondition() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + M1SoftFragment.TAG, "关闭空调")
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭空调")
|
||||
var modeCmd = 0
|
||||
var windSpeedCmd = 0
|
||||
val temperatureCmd = currentTemperature?.value ?: 26
|
||||
@@ -297,7 +299,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
* 开启空调
|
||||
*/
|
||||
private fun openAircondition() {
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + M1SoftFragment.TAG, "打开空调")
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "打开空调")
|
||||
var modeCmd = 0
|
||||
var windSpeedCmd = 0
|
||||
val temperatureCmd = currentTemperature?.value ?: 26
|
||||
@@ -323,7 +325,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
private fun setCheckAir(adapter: TemperatureAdapter, tag: Temperature) {
|
||||
adapter.setCheckIndex(tag.index)
|
||||
currentTemperature = tag
|
||||
if (rv_aircondition_temperature.tag == M1SoftFragment.touchTag) {
|
||||
if (rv_aircondition_temperature.tag == touchTag) {
|
||||
rv_aircondition_temperature.tag = null
|
||||
return
|
||||
} else {
|
||||
@@ -554,7 +556,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
}
|
||||
// 模式调节
|
||||
rg_setting_pattern.setOnCheckedChangeListener { group, checkedId ->
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + M1SoftFragment.TAG, "调节模式")
|
||||
CallerLogger.d(SceneConstant.M_BUS_P + TAG, "调节模式")
|
||||
when (checkedId) {
|
||||
R.id.rb_pattern_heating -> {
|
||||
if (!rb_pattern_heating.isPressed) {
|
||||
@@ -723,7 +725,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
|
||||
if (adapter is TemperatureAdapter) {
|
||||
adapter.data.forEach {
|
||||
if (it.value == temperatureCmd) {
|
||||
rv_aircondition_temperature.tag = M1SoftFragment.touchTag
|
||||
rv_aircondition_temperature.tag = touchTag
|
||||
UiThreadHandler.postDelayed({
|
||||
rv_aircondition_temperature?.smoothScrollToPosition(it.index)
|
||||
}, 500)
|
||||
|
||||
@@ -1,163 +0,0 @@
|
||||
package com.mogo.och.bus.passenger.ui.video
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.commons.mvp.MvpFragment
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.bean.TaxiPassengerVideoPlay
|
||||
import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionVideoPresenter
|
||||
import com.mogo.och.bus.passenger.ui.video.adapter.RecyclerVideoAdapter
|
||||
import com.mogo.och.bus.passenger.ui.softcontrol.layoutmanage.CarouselLayoutManager
|
||||
import com.mogo.och.bus.passenger.ui.softcontrol.layoutmanage.CarouselZoomPostLayoutListener
|
||||
import com.mogo.och.bus.passenger.ui.softcontrol.layoutmanage.CenterScrollListener
|
||||
import com.shuyu.gsyvideoplayer.video.base.GSYVideoView
|
||||
import kotlinx.android.synthetic.main.m1_video_fragment.*
|
||||
import kotlin.math.floor
|
||||
|
||||
/**
|
||||
* @author: yangyakun
|
||||
* @date: 2023/1/28
|
||||
*/
|
||||
class M1VideoFragment :
|
||||
MvpFragment<M1VideoFragment?, BusPassengerFunctionVideoPresenter?>() {
|
||||
|
||||
private val arrayListOf = ArrayList<TaxiPassengerVideoPlay>()
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.m1_video_fragment
|
||||
}
|
||||
|
||||
override fun getTagName(): String {
|
||||
return TAG
|
||||
}
|
||||
|
||||
override fun initViews() {
|
||||
initConsultData()
|
||||
val carouselLayoutManager =
|
||||
CarouselLayoutManager(
|
||||
CarouselLayoutManager.HORIZONTAL,
|
||||
true
|
||||
)
|
||||
carouselLayoutManager.setPostLayoutListener(CarouselZoomPostLayoutListener())
|
||||
carouselLayoutManager.maxVisibleItems = 1
|
||||
rvVideoPlaylist.addOnScrollListener(object : CenterScrollListener() {
|
||||
var prePlayerPosition = 0
|
||||
override fun pageSelect(recyclerView: RecyclerView?, newState: Int) {
|
||||
//播放视频
|
||||
val (centerItemPosition: kotlin.Int, player) = getPlayer(carouselLayoutManager)
|
||||
if (player is ConsultVideoPlayer) {
|
||||
if (prePlayerPosition != centerItemPosition) {
|
||||
if (player.currentState == GSYVideoView.CURRENT_STATE_PAUSE) {
|
||||
player.onVideoReset()
|
||||
}
|
||||
val playerHolder =
|
||||
carouselLayoutManager.findViewByPosition(prePlayerPosition)
|
||||
val prePlayer =
|
||||
playerHolder?.findViewById<ConsultVideoPlayer>(R.id.video_item_player)
|
||||
prePlayer?.onVideoReset()
|
||||
val taxiPassengerVideoPlay = arrayListOf[centerItemPosition]
|
||||
setBackageAndPlayNext(taxiPassengerVideoPlay)
|
||||
} else {
|
||||
player.onVideoResume(false)
|
||||
}
|
||||
}
|
||||
prePlayerPosition = centerItemPosition
|
||||
}
|
||||
|
||||
override fun pageStop() {
|
||||
val (_, player) = getPlayer(carouselLayoutManager)
|
||||
if (player is ConsultVideoPlayer) {
|
||||
player.onVideoPause()
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
carouselLayoutManager.addOnDargAutoDiffListener { adapterPosition, currentPosition ->
|
||||
val fl = adapterPosition - floor(adapterPosition)
|
||||
var currentIndex = currentPosition
|
||||
if (fl > 0.5) {
|
||||
if (currentPosition == 0) {
|
||||
currentIndex = rvVideoPlaylist?.adapter!!.itemCount - 1
|
||||
} else {
|
||||
currentIndex -= 1
|
||||
}
|
||||
}
|
||||
}
|
||||
val recyclerVideoAdapter =
|
||||
RecyclerVideoAdapter(
|
||||
requireContext(),
|
||||
arrayListOf,
|
||||
rvVideoPlaylist
|
||||
)
|
||||
recyclerVideoAdapter.setOnThumbImageClilckListener {
|
||||
val (_, player) = getPlayer(carouselLayoutManager)
|
||||
if (player is ConsultVideoPlayer) {
|
||||
player.onVideoReset()
|
||||
player.thumbImageViewLayout.visibility = View.VISIBLE
|
||||
}
|
||||
rvVideoPlaylist?.smoothScrollToPosition(it)
|
||||
}
|
||||
rvVideoPlaylist?.layoutManager = carouselLayoutManager
|
||||
rvVideoPlaylist?.setHasFixedSize(true)
|
||||
rvVideoPlaylist?.adapter = recyclerVideoAdapter
|
||||
}
|
||||
|
||||
private fun getPlayer(carouselLayoutManager: CarouselLayoutManager): Pair<Int, ConsultVideoPlayer?> {
|
||||
val centerItemPosition: Int = carouselLayoutManager.centerItemPosition
|
||||
val playerHolder = carouselLayoutManager.findViewByPosition(centerItemPosition)
|
||||
val player = playerHolder?.findViewById<ConsultVideoPlayer>(R.id.video_item_player)
|
||||
return Pair(centerItemPosition, player)
|
||||
}
|
||||
|
||||
private fun setBackageAndPlayNext(taxiPassengerVideoPlay: TaxiPassengerVideoPlay) {
|
||||
// 设置背景图片
|
||||
}
|
||||
|
||||
private fun initConsultData() {
|
||||
arrayListOf.clear()
|
||||
arrayListOf.add(
|
||||
TaxiPassengerVideoPlay(
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708596763/全车型混剪增加红旗车队.m4v",
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969511280/车队.png",
|
||||
"蘑菇车联覆盖生活的方方面面"
|
||||
)
|
||||
)
|
||||
arrayListOf.add(
|
||||
TaxiPassengerVideoPlay(
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708554279/红旗车队.m4v",
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969553174/红旗重新排版.png",
|
||||
"蘑菇车联之红旗车队"
|
||||
)
|
||||
)
|
||||
arrayListOf.add(
|
||||
TaxiPassengerVideoPlay(
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708499497/大运会合作解说版.m4v",
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969536177/大运会.png",
|
||||
"蘑菇车联牵手成都大运会"
|
||||
)
|
||||
)
|
||||
arrayListOf.add(
|
||||
TaxiPassengerVideoPlay(
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708409810/20210610重新排版3屏.m4v",
|
||||
"https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969579713/三屏.png",
|
||||
"多视角体验蘑菇车联自动驾驶"
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun createPresenter(): BusPassengerFunctionVideoPresenter {
|
||||
return BusPassengerFunctionVideoPresenter(this)
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "M1VideoFragment"
|
||||
@JvmStatic
|
||||
fun newInstance(): M1VideoFragment {
|
||||
val args = Bundle()
|
||||
val fragment = M1VideoFragment()
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user