[feature]
This commit is contained in:
yangyakun
2023-08-15 17:26:20 +08:00
parent 66ecfaf95b
commit 1d1a0ae7e1
15 changed files with 166 additions and 161 deletions

View File

@@ -120,7 +120,6 @@ object CharterPassengerModel {
private var carTypeChageListener: IOrderChangeCallback? = null
private var subscribeCountDown: Disposable? = null
var switchLine5minWait: Disposable? = null
@Volatile
var newCheckedSite: SiteInfoResponse.SiteInfo? = null
@@ -529,7 +528,6 @@ object CharterPassengerModel {
orderInfo = null
locusInfo = null
if (data.businessStatus == 2) {// 订单结束 没有还车
RxUtils.disposeSubscribe(switchLine5minWait)
clearAutopilotControlParameters()
setOrderStatus(OrderStatusEnum.NoOrderUse)
} else {
@@ -985,7 +983,6 @@ object CharterPassengerModel {
d(M_BUS_P + BaseDPMsg.TAG, "到站发送数据${msg}")
}
RxUtils.disposeSubscribe(switchLine5minWait)
// 清理轨迹
cleanRoutePoints()
// 到站结束自驾
@@ -1028,10 +1025,6 @@ object CharterPassengerModel {
broadcastList[requestSuccessSign] == null || broadcastList[requestSuccessSign] == false
fun cleanbroadcastListInfo(checkSite: SiteInfoResponse.SiteInfo?) {
RxUtils.disposeSubscribe(switchLine5minWait)
switchLine5minWait = RxUtils.createSubscribe(5 * 60 * 1000) {
d(M_BUS_P + BaseDPMsg.TAG, "5分钟倒计时可以选择线路了")
}
newCheckedSite = checkSite
cleanRoutePoints()
broadcastList.clear()

View File

@@ -57,8 +57,6 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) :
// 向司机端临时提交的终点站点
private var tempCheckSite: SiteInfoResponse.SiteInfo? = null
private var subscribeSelectLine: Disposable? = null
private var subscribeSelectSite: Disposable? = null
override fun onCreate(owner: LifecycleOwner) {
@@ -189,7 +187,6 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) :
override fun onDestroy(owner: LifecycleOwner) {
super.onDestroy(owner)
CallerLogger.d(M_BUS_P + TAG, "onDestroy")
RxUtils.disposeSubscribe(subscribeSelectLine)
RxUtils.disposeSubscribe(subscribeSelectSite)
BizLoopManager.removeLoopFunction(TAGLINELOOP)
CharterPassengerModel.setStatusChangeListener(TAG,null)

View File

@@ -184,7 +184,7 @@ class BusPassengerPresenter(view: MainFragment?) :
UiThreadHandler.post {
when (actionStatus) {
StopSideStatusManager.Status.NOSTART -> {
ToastCharterUtils.showShort(errorInfo)
ToastCharterUtils.showShort(errorInfo?:"")
}
StopSideStatusManager.Status.START -> {

View File

@@ -25,6 +25,8 @@ import com.mogo.och.bus.passenger.ui.bottom.BottomClickView
import com.mogo.och.bus.passenger.ui.dialogfragment.M1CarUserNoOrderFragment
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
import com.mogo.och.bus.passenger.ui.dialogfragment.NoviceGuidanceFragment
import com.mogo.och.bus.passenger.utils.ToastCharterUtils
import com.mogo.och.common.module.biz.constant.LoginStatusManager
import kotlinx.android.synthetic.main.m1_main_fragment.*
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
@@ -94,9 +96,22 @@ class MainFragment :
})
bb_boorombar.setCheckChangeListener(object : BottomBar.ApplyClickLintener {
override fun onApplyClick(selectItem: BottomBar.SelectView) {
override fun onApplyClick(selectItem: BottomBar.SelectView): Boolean {
when (selectItem) {
BottomBar.SelectView.ORDERINFO -> showBizView(orderinfo = true)
BottomBar.SelectView.ORDERINFO -> {
if (LoginStatusManager.isLogin()) {
if (mPresenter?.haveOrder() == true) {
} else {
ToastCharterUtils.showShort("请确认订单")
return true
}
} else {
ToastCharterUtils.showShort(requireContext().getString(R.string.m1_please_login_driver))
return true
}
showBizView(orderinfo = true)
}
BottomBar.SelectView.SETTING -> showBizView(softControl = true)
BottomBar.SelectView.LINE -> showBizView(selectLine = true)
BottomBar.SelectView.VIDEO -> showBizView(showVideo = true)
@@ -104,6 +119,7 @@ class MainFragment :
showBizView()
}
}
return false
}
})
bb_boorombar.setApplyClickListener(object : BottomClickView.ApplyClickLintener {
@@ -168,7 +184,12 @@ class MainFragment :
bpFunctionGroupDialogFragment = WeakReference(M1ContainFragment.newInstance())
}
val bpFunctionGroup = bpFunctionGroupDialogFragment?.get()
M1ContainFragment.openSettingPage(childFragmentManager, parentFragmentManager, bpFunctionGroup, tab)
M1ContainFragment.openSettingPage(
childFragmentManager,
parentFragmentManager,
bpFunctionGroup,
tab
)
}
fun setCarModle(rawInfo: Int) {

View File

@@ -47,12 +47,17 @@ class BottomBar @JvmOverloads constructor(
}
fun setCheckIndex(index: SelectView){
if(checkIndex==index){
checkIndex = SelectView.NONE
val tempPreStatus = checkIndex
checkIndex = if(checkIndex==index){
SelectView.NONE
}else{
checkIndex = index
index
}
if (overMapViewApply?.onApplyClick(checkIndex)==true) {
// 外层业务拦截
checkIndex = tempPreStatus
return
}
overMapViewApply?.onApplyClick(checkIndex)
if(checkIndex == SelectView.ORDERINFO){
cl_order_time_press.visibility = VISIBLE
cl_order_time.setCheck(true)
@@ -78,7 +83,7 @@ class BottomBar @JvmOverloads constructor(
}
interface ApplyClickLintener{
fun onApplyClick(selectItem:SelectView)
fun onApplyClick(selectItem:SelectView):Boolean
}
}

View File

@@ -17,6 +17,9 @@ import com.mogo.och.common.module.utils.DateTimeUtil
import kotlinx.android.synthetic.main.m1_bottom_orderinfo.view.*
import java.util.UUID
/**
* 展示订单剩余时间
*/
open class BottomOrderInfoView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
@@ -40,9 +43,11 @@ open class BottomOrderInfoView @JvmOverloads constructor(
fun setCheck(isCheck:Boolean){
if(isCheck){
actv_order_end_time.setTextColor(context.getColor(android.R.color.white))
actv_order_null.setTextColor(context.getColor(android.R.color.white))
actv_order_end_time_title.setTextColor(context.getColor(android.R.color.white))
}else{
actv_order_end_time.setTextColor(context.getColor(R.color.bus_p_m1_0050E1))
actv_order_null.setTextColor(context.getColor(R.color.bus_p_m1_090f28))
actv_order_end_time_title.setTextColor(context.getColor(R.color.bus_p_m1_090f28))
}
}

View File

@@ -68,8 +68,6 @@ class OrderInfoView : ConstraintLayout, OrderInfoViewModel.ItineraryViewCallback
actv_contain_order.setOnClickListener {
setViewGone()
cl_order_info.visibility = View.VISIBLE
cl_order_info_endorder_comfit.visibility = View.GONE
}
actv_end_order.setOnClickListener {
@@ -89,6 +87,8 @@ class OrderInfoView : ConstraintLayout, OrderInfoViewModel.ItineraryViewCallback
override fun setViewGone(){
goneViewListener?.goneAllView()
cl_order_info.visibility = View.VISIBLE
cl_order_info_endorder_comfit.visibility = View.GONE
}
override fun setLeftTime(leftTime:String){

View File

@@ -40,15 +40,19 @@ class OrderInfoViewModel: ViewModel(), ITimeCallback {
fun getDataInfo() {
val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo()
currentOrderInfo?.let {
viewCallback?.setPhone(it.passengerPhone?:"")
if(currentOrderInfo!=null){
viewCallback?.setPhone(currentOrderInfo.passengerPhone?:"")
try {
viewCallback?.setStartTimeAndEndTime(
DateTimeUtil.formatLongToString(it.startTime!!, DateTimeUtil.HH_mm),
DateTimeUtil.formatLongToString(it.endTime!!, DateTimeUtil.HH_mm))
DateTimeUtil.formatLongToString(currentOrderInfo.startTime!!, DateTimeUtil.HH_mm),
DateTimeUtil.formatLongToString(currentOrderInfo.endTime!!, DateTimeUtil.HH_mm))
}catch (e:Exception){
e.printStackTrace()
}
}else{
viewCallback?.setPhone("----")
viewCallback?.setStartTimeAndEndTime("--:---", "--:--")
viewCallback?.setLeftTime("剩余时间 --:--")
}
}

View File

@@ -116,12 +116,6 @@ class M1OrderLineFragment :
mPresenter?.resetData()
}
tv_site_submit.onClick {
CharterPassengerModel.switchLine5minWait?.let {
if (!it.isDisposed) {
ToastCharterUtils.showShort("选择线路后5分钟内不可用选")
return@onClick
}
}
mPresenter?.changeSites(siteList)
}

View File

@@ -14,6 +14,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import com.elegant.utils.UiThreadHandler
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.och.bus.passenger.R
import com.mogo.och.bus.passenger.bean.event.EventLineSites
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.IClearViewCallback
@@ -40,6 +41,7 @@ import kotlinx.android.synthetic.main.m1_order_fragment.view.tv_site_cancle
import kotlinx.android.synthetic.main.m1_order_fragment.view.tv_site_submit
import kotlinx.android.synthetic.main.m1_order_loading.view.iv_loading_wait_ent
import me.jessyan.autosize.utils.AutoSizeUtils
import org.greenrobot.eventbus.EventBus
class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallback {
@@ -63,7 +65,7 @@ class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallb
) : super(context, attributeSet, defStyleAttr, defStyleRes)
var goneViewListener: IClearViewCallback?=null
var goneViewListener: IClearViewCallback? = null
private lateinit var lineAdapter: OrderLineItemAdapter
private lateinit var siteAdapter: OrderSiteItemAdapter
@@ -74,6 +76,8 @@ class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallb
private var subscribeDirverAgree: Disposable? = null
private var subscribeDirverRefuse: Disposable? = null
private var viewModel: SelectLineViewModel? = null
private val loadingAni =
ObjectAnimator.ofFloat(iv_loading_wait_ent, "rotation", 0f, 90f, 180f, 270f, 360f)
.apply {
@@ -102,7 +106,8 @@ class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallb
)
rlv_line_list.adapter = lineAdapter
rv_site_list.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
rv_site_list.layoutManager =
LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
rv_site_list.addItemDecoration(
BottomDecoration(
AutoSizeUtils.dp2px(context, 90f)
@@ -113,7 +118,7 @@ class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallb
override fun onAttachedToWindow() {
super.onAttachedToWindow()
val viewModel = findViewTreeViewModelStoreOwner()?.let {
viewModel = findViewTreeViewModelStoreOwner()?.let {
ViewModelProvider(it).get(SelectLineViewModel::class.java)
}
@@ -131,7 +136,7 @@ class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallb
}
siteAdapter.checkChangeListener = object : OrderSiteItemAdapter.CheckListener {
override fun canSwitchLine(): Boolean {
return viewModel?.canSwitchLine()?:true
return viewModel?.canSwitchLine() ?: true
}
override fun onCheckListener(siteInfo: SiteInfoResponse.SiteInfo?) {
@@ -144,17 +149,23 @@ class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallb
viewModel?.resetData()
}
tv_site_submit.onClick {
CharterPassengerModel.switchLine5minWait?.let {
if (!it.isDisposed) {
ToastCharterUtils.showShort("选择线路后5分钟内不可用选")
return@onClick
}
}
viewModel?.changeSites(siteList)
}
}
override fun onVisibilityChanged(changedView: View, visibility: Int) {
if (changedView != this) {
return
}
if (visibility == View.GONE || visibility == View.INVISIBLE) {
EventBus.getDefault().post(EventLineSites(null, null, true))
viewModel?.addMsgListener()
} else {
viewModel?.removeMsgListener()
}
}
private fun showSelectData() {
UiThreadHandler.post {
g_lines_sites_data?.visibility = View.VISIBLE
@@ -179,7 +190,7 @@ class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallb
showNorOrder: Boolean,
showLoading: Boolean
) {
if(showBiz){
if (showBiz) {
// 选择线路页面
m1_order_noorder?.visibility = View.GONE
m1_order_neterror?.visibility = View.GONE
@@ -187,21 +198,21 @@ class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallb
m1_order_loading?.visibility = View.GONE
return
}
if(showNetError){
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){
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){
if (showLoading) {
m1_order_noorder?.visibility = View.GONE
m1_order_neterror?.visibility = View.GONE
lsv_line_site?.visibility = View.GONE
@@ -252,7 +263,7 @@ class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallb
lineInfo: List<LineInfoResponse.LineInfo>,
checkLine: LineInfoResponse.LineInfo?
) {
lineAdapter.setDataList(lineInfo,checkLine)
lineAdapter.setDataList(lineInfo, checkLine)
}
override fun siteAdapterEnableIndex(index: Int) {
@@ -263,7 +274,7 @@ class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallb
siteAdapter.setDataList(siteInfo)
}
private fun setViewGone(){
private fun setViewGone() {
goneViewListener?.goneAllView()
}

View File

@@ -64,7 +64,6 @@ class SelectLineViewModel : ViewModel(), IOrderStatusChangeListener {
private var tempCheckSite: SiteInfoResponse.SiteInfo? = null
private var subscribeSelectLine: Disposable? = null
private var subscribeSelectSite: Disposable? = null
/**
@@ -108,7 +107,7 @@ class SelectLineViewModel : ViewModel(), IOrderStatusChangeListener {
viewCallback?.hideDataDriverRefuse()
}
RxUtils.disposeSubscribe(subscribeSelectSite)
BizLoopManager.removeLoopFunction(BusPassengerFunctionOrderPresenter.TAGLINELOOP)
BizLoopManager.removeLoopFunction(TAGLINELOOP)
}
}
}
@@ -117,16 +116,25 @@ class SelectLineViewModel : ViewModel(), IOrderStatusChangeListener {
init {
CharterPassengerModel.setStatusChangeListener(TAG, this)
CallerTelematicListenerManager.addListener(TAG, msgReceived)
}
override fun onCleared() {
super.onCleared()
this.viewCallback = null
RxUtils.disposeSubscribe(subscribeSelectLine)
RxUtils.disposeSubscribe(subscribeSelectSite)
BizLoopManager.removeLoopFunction(TAGLINELOOP)
CharterPassengerModel.setStatusChangeListener(TAG, null)
}
fun addMsgListener() {
CallerTelematicListenerManager.addListener(TAG, msgReceived)
}
fun removeMsgListener() {
RxUtils.disposeSubscribe(subscribeSelectSite)
BizLoopManager.removeLoopFunction(TAGLINELOOP)
CallerTelematicListenerManager.removeListener(TAG)
}
@@ -240,10 +248,7 @@ class SelectLineViewModel : ViewModel(), IOrderStatusChangeListener {
}
viewCallback?.hideDataWaitDriverMsg()
// 启动查看和司机端链接
BizLoopManager.setLoopFunction(
BusPassengerFunctionOrderPresenter.TAGLINELOOP,
LoopInfo(3, ::checkServerStatus)
)
BizLoopManager.setLoopFunction(TAGLINELOOP, LoopInfo(3, ::checkServerStatus))
RxUtils.disposeSubscribe(subscribeSelectSite)
subscribeSelectSite = RxUtils.createSubscribe(120_000) {
@@ -310,10 +315,10 @@ class SelectLineViewModel : ViewModel(), IOrderStatusChangeListener {
private fun checkServerStatus() {
if (!CallerTelematicManager.getClientConnStatus()) {
ToastCharterUtils.showShort("断开和司机端连接、请联系安全员")
BizLoopManager.removeLoopFunction(BusPassengerFunctionOrderPresenter.TAGLINELOOP)
BizLoopManager.removeLoopFunction(TAGLINELOOP)
viewCallback?.hideDataDriverRefuse()
CallerLogger.d(
SceneConstant.M_BUS_P + BusPassengerFunctionOrderPresenter.TAG,
SceneConstant.M_BUS_P + TAG,
"endAni666"
)
}
@@ -325,10 +330,10 @@ class SelectLineViewModel : ViewModel(), IOrderStatusChangeListener {
fun resetData() {
tempCheckLine = null
tempCheckSite = null
if(checkLine==null){// 没有提交线路
if (checkLine == null) {// 没有提交线路
queryLineList()
viewCallback?.setEnableSiteStatus(true)
}else{
} else {
checkLine?.let {
viewCallback?.setEnableSiteStatus(false)
viewCallback?.lineAdapterSubmit(it)
@@ -339,27 +344,28 @@ class SelectLineViewModel : ViewModel(), IOrderStatusChangeListener {
fun checkSiteClick(siteInfo: SiteInfoResponse.SiteInfo?) {
tempCheckSite = siteInfo
if(checkSite!=null){
if (checkSite != null) {
checkSite?.let {
if (it.siteId == siteInfo?.siteId) {// 站点相同 隐藏所有提交按钮
viewCallback?.setEnableSiteStatus(false)
} else {
if(it.lineId == siteInfo?.lineId){// 线路相同显示单独提交
if (it.lineId == siteInfo?.lineId) {// 线路相同显示单独提交
viewCallback?.setEnableSiteStatus(true)
}else{
if(siteInfo==null){//没有选站点隐藏所有提交
} else {
if (siteInfo == null) {//没有选站点隐藏所有提交
viewCallback?.setEnableSiteStatus(false)
}else {
} else {
viewCallback?.setEnableSiteStatus(true)
}
}
}
}
}else{
} else {
viewCallback?.setEnableSiteStatus(true)
}
}
fun canSwitchLine():Boolean {
fun canSwitchLine(): Boolean {
val gnssSpeed =
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().gnssSpeed
if (gnssSpeed < 0.5) {
@@ -367,25 +373,30 @@ class SelectLineViewModel : ViewModel(), IOrderStatusChangeListener {
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 ->{
else -> {
ToastCharterUtils.showShort("自动驾驶中无法切换线路")
false
}
}
}
IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> {
ToastCharterUtils.showShort("因车辆正在平行驾驶中无法切换线路")
return false
}
else -> {}
}
} else {
@@ -412,6 +423,7 @@ class SelectLineViewModel : ViewModel(), IOrderStatusChangeListener {
lineInfo: List<LineInfoResponse.LineInfo>,
checkLine: LineInfoResponse.LineInfo?
)
fun siteAdapterEnableIndex(index: Int)
fun siteAdapterSetData(siteInfo: List<SiteInfoResponse.SiteInfo>)
}

View File

@@ -83,16 +83,11 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(
context,
attributeSet,
defStyleAttr
context, attributeSet, defStyleAttr
)
constructor(
context: Context,
attributeSet: AttributeSet,
defStyleAttr: Int,
defStyleRes: Int
context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int
) : super(context, attributeSet, defStyleAttr, defStyleRes)
var goneViewListener: IClearViewCallback? = null
@@ -332,8 +327,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
rv_aircondition_temperature.tag = null
return
} else {
SoundPoolHelper.getSoundPoolHelper()
.playSoundWithRedId(context, R.raw.bus_di)
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
}
openAircondition()
}
@@ -347,8 +341,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
}
tv_light_top_01.isEnabled = false
subscribeLightTop1 = Observable.timer(2000, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
.observeOn(AndroidSchedulers.mainThread()).subscribe {
tv_light_top_01.isEnabled = true
}
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
@@ -362,8 +355,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
}
tv_light_top_02.isEnabled = false
subscribeLightTop2 = Observable.timer(2000, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
.observeOn(AndroidSchedulers.mainThread()).subscribe {
tv_light_top_02.isEnabled = true
}
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
@@ -377,8 +369,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
}
tv_light_atmosphere.isEnabled = false
subscribeAtmosphere = Observable.timer(2000, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
.observeOn(AndroidSchedulers.mainThread()).subscribe {
tv_light_atmosphere.isEnabled = true
}
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di)
@@ -636,12 +627,9 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
openAircondition()
}
}
val pickerLayoutManager =
PickerLayoutManager(
context,
PickerLayoutManager.HORIZONTAL,
false
)
val pickerLayoutManager = PickerLayoutManager(
context, PickerLayoutManager.HORIZONTAL, false
)
pickerLayoutManager.isChangeAlpha = true
pickerLayoutManager.scaleDownBy = 0.29f
pickerLayoutManager.scaleDownDistance = 0.8f
@@ -658,8 +646,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
val space = AutoSizeUtils.dp2px(context, 15f)
rv_aircondition_temperature.addItemDecoration(
HorizontalDecoration(
space,
data.size - 1
space, data.size - 1
)
)
@@ -671,8 +658,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
RxUtils.disposeSubscribe(subscribeAir)
if (tag.index == 0 || tag.index == adapter.data.size - 1) {
subscribeAir = Observable.timer(200, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
.observeOn(AndroidSchedulers.mainThread()).subscribe {
setCheckAir(adapter, tag)
}
} else {
@@ -720,11 +706,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba
* 根据车的状态会写页面状态
*/
override fun setAirconditionHeaterView(
airIsOpen: Boolean,
heaterIsOpen: Boolean,
temperatureCmd: Int,
pattern: Int,
windSpeed: Int
airIsOpen: Boolean, heaterIsOpen: Boolean, temperatureCmd: Int, pattern: Int, windSpeed: Int
) {
tv_aircondition_switch?.let {
if (!airIsOpen && !heaterIsOpen) {

View File

@@ -47,16 +47,11 @@ class SoftControlViewModel : ViewModel(), LightAirconditionDoorCallback {
* 空调状态变化
*/
override fun onAirconditionStatusCallback(
heaterIsOpen: Boolean,
airconditionStatus: AirconditionStatus,
isFirst: Boolean
heaterIsOpen: Boolean, airconditionStatus: AirconditionStatus, isFirst: Boolean
) {
CallerLogger.d(
M_BUS_P + TAG,
"回写--空调开关:${LightAirconditionDoorStatusManager.airconditionStatus.isOpen}" +
"空调温度:${LightAirconditionDoorStatusManager.airconditionStatus.temperature}" +
"空调模式:${LightAirconditionDoorStatusManager.airconditionStatus.pattert}" +
"空调风速:${LightAirconditionDoorStatusManager.airconditionStatus.windSpeed}"
"回写--空调开关:${LightAirconditionDoorStatusManager.airconditionStatus.isOpen}" + "空调温度:${LightAirconditionDoorStatusManager.airconditionStatus.temperature}" + "空调模式:${LightAirconditionDoorStatusManager.airconditionStatus.pattert}" + "空调风速:${LightAirconditionDoorStatusManager.airconditionStatus.windSpeed}"
)
UiThreadHandler.post {
if (airconditionStatus.isOpen) {
@@ -69,11 +64,7 @@ class SoftControlViewModel : ViewModel(), LightAirconditionDoorCallback {
)
} else {
viewCallback?.setAirconditionHeaterView(
airconditionStatus.isOpen,
heaterIsOpen,
airconditionStatus.temperature,
0,
0
airconditionStatus.isOpen, heaterIsOpen, airconditionStatus.temperature, 0, 0
)
}
}
@@ -83,31 +74,20 @@ class SoftControlViewModel : ViewModel(), LightAirconditionDoorCallback {
* 暖风机状态变化
*/
override fun onHeaterStatusCallback(
airconditionIsOpen: Boolean,
heaterStatue: HeaterStatue,
isFirst: Boolean
airconditionIsOpen: Boolean, heaterStatue: HeaterStatue, isFirst: Boolean
) {
CallerLogger.d(
M_BUS_P + TAG,
"回写--暖风机开关:${heaterStatue.isOpen}" +
"风速:${heaterStatue.windSpeed}"
"回写--暖风机开关:${heaterStatue.isOpen}" + "风速:${heaterStatue.windSpeed}"
)
UiThreadHandler.post {
if (heaterStatue.isOpen) {
viewCallback?.setAirconditionHeaterView(
airconditionIsOpen,
heaterStatue.isOpen,
0,
0,
heaterStatue.windSpeed
airconditionIsOpen, heaterStatue.isOpen, 0, 0, heaterStatue.windSpeed
)
} else {
viewCallback?.setAirconditionHeaterView(
airconditionIsOpen,
heaterStatue.isOpen,
0,
0,
0
airconditionIsOpen, heaterStatue.isOpen, 0, 0, 0
)
}
}
@@ -119,9 +99,7 @@ class SoftControlViewModel : ViewModel(), LightAirconditionDoorCallback {
override fun onLightTop1Callback(lightStatus: LightStatus, isFirst: Boolean) {
CallerLogger.d(
M_BUS_P + TAG,
"回写--顶灯1开关:${lightStatus.isOpenLight1}" +
"顶灯2开关:${lightStatus.isOpenLight2}" +
"氛围灯开关:${lightStatus.isOpenatmosphere}"
"回写--顶灯1开关:${lightStatus.isOpenLight1}" + "顶灯2开关:${lightStatus.isOpenLight2}" + "氛围灯开关:${lightStatus.isOpenatmosphere}"
)
UiThreadHandler.post {
viewCallback?.setLightTop1View(lightStatus.isOpenLight1, isFirst)
@@ -134,9 +112,7 @@ class SoftControlViewModel : ViewModel(), LightAirconditionDoorCallback {
override fun onLightTop2Callback(lightStatus: LightStatus, isFirst: Boolean) {
CallerLogger.d(
M_BUS_P + TAG,
"回写--顶灯1开关:${lightStatus.isOpenLight1}" +
"顶灯2开关:${lightStatus.isOpenLight2}" +
"氛围灯开关:${lightStatus.isOpenatmosphere}"
"回写--顶灯1开关:${lightStatus.isOpenLight1}" + "顶灯2开关:${lightStatus.isOpenLight2}" + "氛围灯开关:${lightStatus.isOpenatmosphere}"
)
UiThreadHandler.post {
viewCallback?.setLightTop2View(lightStatus.isOpenLight2, isFirst)
@@ -150,9 +126,7 @@ class SoftControlViewModel : ViewModel(), LightAirconditionDoorCallback {
override fun onLightAtmosphereCallback(lightStatus: LightStatus, isFirst: Boolean) {
CallerLogger.d(
M_BUS_P + TAG,
"回写--顶灯1开关:${lightStatus.isOpenLight1}" +
"顶灯2开关:${lightStatus.isOpenLight2}" +
"氛围灯开关:${lightStatus.isOpenatmosphere}"
"回写--顶灯1开关:${lightStatus.isOpenLight1}" + "顶灯2开关:${lightStatus.isOpenLight2}" + "氛围灯开关:${lightStatus.isOpenatmosphere}"
)
UiThreadHandler.post {
viewCallback?.setLightAtmosphereView(lightStatus.isOpenatmosphere, isFirst)
@@ -164,22 +138,14 @@ class SoftControlViewModel : ViewModel(), LightAirconditionDoorCallback {
*/
fun openAndSetAircondition(modeCmd: Int, windSpeedCmd: Int, temperatureCmd: Int) {
CallerLogger.d(
M_BUS_P + TAG, "" +
"打开空调,模式$modeCmd--档位${windSpeedCmd}--温度:$temperatureCmd"
M_BUS_P + TAG, "" + "打开空调,模式$modeCmd--档位${windSpeedCmd}--温度:$temperatureCmd"
)
CallerAutoPilotControlManager.sendRoboBusJinlvM1AirConditionerCmd(
1,
modeCmd,
windSpeedCmd,
temperatureCmd
1, modeCmd, windSpeedCmd, temperatureCmd
)
RxUtils.disposeSubscribe(airconditionDisposable)
airconditionDisposable = RxUtils.createSubscribe(10000) {
if (!LightAirconditionDoorStatusManager.airconditionStatus.isOpen &&
LightAirconditionDoorStatusManager.airconditionStatus.windSpeed != windSpeedCmd &&
LightAirconditionDoorStatusManager.airconditionStatus.temperature != temperatureCmd &&
LightAirconditionDoorStatusManager.airconditionStatus.pattert != modeCmd
) {
if (!LightAirconditionDoorStatusManager.airconditionStatus.isOpen && LightAirconditionDoorStatusManager.airconditionStatus.windSpeed != windSpeedCmd && LightAirconditionDoorStatusManager.airconditionStatus.temperature != temperatureCmd && LightAirconditionDoorStatusManager.airconditionStatus.pattert != modeCmd) {
ToastCharterUtils.showShort("控制系统繁忙,请稍后再试")
}
}
@@ -188,10 +154,7 @@ class SoftControlViewModel : ViewModel(), LightAirconditionDoorCallback {
fun closeAircondition(modeCmd: Int, windSpeedCmd: Int, temperatureCmd: Int) {
CallerLogger.d(M_BUS_P + TAG, "关闭空调")
CallerAutoPilotControlManager.sendRoboBusJinlvM1AirConditionerCmd(
2,
modeCmd,
windSpeedCmd,
temperatureCmd
2, modeCmd, windSpeedCmd, temperatureCmd
)
RxUtils.disposeSubscribe(airconditionDisposable)
airconditionDisposable = RxUtils.createSubscribe(10000) {
@@ -209,9 +172,7 @@ class SoftControlViewModel : ViewModel(), LightAirconditionDoorCallback {
CallerAutoPilotControlManager.sendRoboBusJinlvM1HeaderCmd(1, windSpeedCmd)
RxUtils.disposeSubscribe(heaterDisposable)
heaterDisposable = RxUtils.createSubscribe(10000) {
if (!LightAirconditionDoorStatusManager.heaterStatue.isOpen &&
LightAirconditionDoorStatusManager.heaterStatue.windSpeed != windSpeedCmd
) {
if (!LightAirconditionDoorStatusManager.heaterStatue.isOpen && LightAirconditionDoorStatusManager.heaterStatue.windSpeed != windSpeedCmd) {
ToastCharterUtils.showShort("暖风机操作未生效,请稍后重试吧~")
}
}

View File

@@ -7,37 +7,57 @@ import com.mogo.och.bus.passenger.ui.toast.ToastCharterView
import me.jessyan.autosize.utils.AutoSizeUtils
object ToastCharterUtils {
fun showTaost(toastText:String){
const val TAG = "ToastCharterUtils"
fun showTaost(toastText: String) {
val context = ActivityUtils.getTopActivity()
val marker = ToastCharterView(context)
marker.setText(toastText)
marker.measure(
View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 145f), View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 34f), View.MeasureSpec.EXACTLY)
View.MeasureSpec.makeMeasureSpec(
AutoSizeUtils.dp2px(context, 145f),
View.MeasureSpec.UNSPECIFIED
),
View.MeasureSpec.makeMeasureSpec(
AutoSizeUtils.dp2px(context, 34f),
View.MeasureSpec.EXACTLY
)
)
marker.layout(0, 0, marker.measuredWidth, marker.measuredHeight)
ToastUtils.showShort(marker)
}
fun showLong(toastText:String){
fun showLong(toastText: String) {
val context = ActivityUtils.getTopActivity()
val marker = ToastCharterView(context)
marker.setText(toastText)
marker.measure(
View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 145f), View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 34f), View.MeasureSpec.EXACTLY)
View.MeasureSpec.makeMeasureSpec(
AutoSizeUtils.dp2px(context, 145f),
View.MeasureSpec.UNSPECIFIED
),
View.MeasureSpec.makeMeasureSpec(
AutoSizeUtils.dp2px(context, 34f),
View.MeasureSpec.EXACTLY
)
)
marker.layout(0, 0, marker.measuredWidth, marker.measuredHeight)
ToastUtils.showLong(marker)
}
fun showShort(toastText:String?){
fun showShort(toastText: String?) {
toastText?.let {
val context = ActivityUtils.getTopActivity()
val marker = ToastCharterView(context)
marker.setText(toastText)
marker.measure(
View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 145f), View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 34f), View.MeasureSpec.EXACTLY)
View.MeasureSpec.makeMeasureSpec(
AutoSizeUtils.dp2px(context, 145f),
View.MeasureSpec.UNSPECIFIED
),
View.MeasureSpec.makeMeasureSpec(
AutoSizeUtils.dp2px(context, 34f),
View.MeasureSpec.EXACTLY
)
)
marker.layout(0, 0, marker.measuredWidth, marker.measuredHeight)
ToastUtils.showShort(marker)

View File

@@ -551,7 +551,7 @@ class UtilsBridge {
}
static void runOnUiThread(final Runnable runnable) {
ThreadUtils.runOnUiThread(runnable);
ThreadUtils.runOnUiThread(runnable, ThreadUtils.MODE.QUEUE);
}
static void runOnUiThreadDelayed(final Runnable runnable, long delayMillis) {