diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/CharterPassengerNoviceGuidancePresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/CharterPassengerNoviceGuidancePresenter.kt new file mode 100644 index 0000000000..8e6ebfd796 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/CharterPassengerNoviceGuidancePresenter.kt @@ -0,0 +1,37 @@ +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 +import com.mogo.och.bus.passenger.ui.dialogfragment.NoviceGuidanceFragment +import com.mogo.och.common.module.utils.DateTimeUtil + +class CharterPassengerNoviceGuidancePresenter(view: NoviceGuidanceFragment?) : + BusBasePassengerFunctionDevicePresenter(view) { + companion object{ + private const val TAG = "BusPassengerFunctionPresenter" + } + override fun onCreate(owner: LifecycleOwner) { + super.onCreate(owner) + } + + override fun onResume(owner: LifecycleOwner) { + super.onResume(owner) + val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo() + currentOrderInfo?.let { + mView?.setUserPhoneInfo(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) + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt index e13b594b66..8c310905b8 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt @@ -27,6 +27,7 @@ import com.mogo.och.bus.passenger.presenter.BusPassengerPresenter import com.mogo.och.bus.passenger.ui.dialogfragment.DebugViewWatchDogFragment 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.view.statusbar.StatusBarView import com.mogo.och.common.module.biz.constant.LoginStatusManager import kotlinx.android.synthetic.main.m1_main_fragment.* @@ -45,6 +46,7 @@ class MainFragment : private var bpFunctionGroupDialogFragment: WeakReference? = null private var debugViewWatchDogFragment: WeakReference? = null private var m1CarUserNoOrderFragment: WeakReference? = null + private var noviceGuidanceFragment: WeakReference? = null private val endStation = BitmapFactory.decodeResource(AbsMogoApplication.getApp().resources, @@ -107,9 +109,6 @@ class MainFragment : aciv_enter_video.setOnClickListener{ openSettingPage(M1ContainFragment.VIDEOTAB) } - debug_arrive_dest.setOnClickListener { - CharterPassengerModel.arriveDest() - } aciv_map_2_default.setOnClickListener { omvOverMap.displayCustomOverView() val controller = getMapUIController() @@ -126,6 +125,13 @@ class MainFragment : // } } } + + debug_arrive_dest.setOnClickListener { + CharterPassengerModel.arriveDest() + } + debug_show_noviceGuidance.setOnClickListener { + showNoviceGuidanceFragment() + } } private fun openSettingPage(tab: String) { @@ -223,6 +229,13 @@ class MainFragment : val m1CarUserNoOrderFragment = m1CarUserNoOrderFragment?.get() M1CarUserNoOrderFragment.showOpenAndCloseDoor(childFragmentManager,parentFragmentManager,m1CarUserNoOrderFragment) } + fun showNoviceGuidanceFragment() { + if (noviceGuidanceFragment?.get() == null) { + noviceGuidanceFragment = WeakReference(NoviceGuidanceFragment.newInstance()) + } + val noviceGuidanceFragmentWeak = noviceGuidanceFragment?.get() + NoviceGuidanceFragment.showNoviceGuidance(childFragmentManager,parentFragmentManager,noviceGuidanceFragmentWeak) + } fun closeOpenAndCloseDoor(){ val bpFunctionGroup = m1CarUserNoOrderFragment?.get() bpFunctionGroup?.let { @@ -257,11 +270,11 @@ class MainFragment : fun changeDebugView(debugView: DebugView) { when (debugView.type) { StatusBarView.bizz -> { - if(debug_arrive_dest.visibility==View.GONE|| - debug_arrive_dest.visibility==View.INVISIBLE){ - debug_arrive_dest.visibility = View.VISIBLE + if(group_debug.visibility==View.GONE|| + group_debug.visibility==View.INVISIBLE){ + group_debug.visibility = View.VISIBLE }else{ - debug_arrive_dest.visibility = View.GONE + group_debug.visibility = View.GONE } } else -> { diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/NoviceGuidanceFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/NoviceGuidanceFragment.kt new file mode 100644 index 0000000000..2ac85fb6f5 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/NoviceGuidanceFragment.kt @@ -0,0 +1,262 @@ +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.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.presenter.CharterPassengerNoviceGuidancePresenter +import com.mogo.och.bus.passenger.ui.MainFragment +import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.M1OrderLineFragment +import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.M1SoftFragment +import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.M1VideoFragment +import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.OrderInfoFragment +import com.mogo.och.bus.passenger.ui.view.bottom.BottomBar +import com.mogo.och.bus.passenger.ui.view.bottom.BottomClickView +import kotlinx.android.synthetic.main.m1_contain_fragment.* +import kotlinx.android.synthetic.main.m1_contain_fragment.cl_container +import kotlinx.android.synthetic.main.m1_devices_fragment.* +import kotlinx.android.synthetic.main.m1_novice_guidance_fragment.* +import kotlinx.android.synthetic.main.m1_novice_guidance_welcome_1_fragment.* +import kotlinx.android.synthetic.main.m1_novice_guidance_welcome_2_fragment.* +import kotlinx.android.synthetic.main.m1_novice_guidance_welcome_3_fragment.* +import kotlinx.android.synthetic.main.m1_novice_guidance_welcome_4_fragment.* +import kotlinx.android.synthetic.main.m1_novice_guidance_welcome_fragment.* +import org.greenrobot.eventbus.EventBus + +/** + * 新手引导 + */ +class NoviceGuidanceFragment : + MvpDialogFragment(), + View.OnClickListener { + + 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全屏 + } + + override fun getLayoutId(): Int = R.layout.m1_novice_guidance_fragment + + override fun getTagName(): String = TAG + + override fun initViews() { + CallerLogger.d(M_BUS_P+ TAG, "initViews") + setTargetVisable(startGuidance = true) + + v_clikc_go_explore_bg.setOnClickListener { setTargetVisable(welcome01 = true)} + v_next_page_01.setOnClickListener { setTargetVisable(welcome02 = true) } + + v_pre_page_02.setOnClickListener { setTargetVisable(welcome01 = true) } + v_next_page_02.setOnClickListener { setTargetVisable(welcome03 = true) } + + v_pre_page_03.setOnClickListener { setTargetVisable(welcome02 = true) } + v_next_page_03.setOnClickListener { setTargetVisable(welcome04 = true) } + + v_pre_page_04.setOnClickListener { setTargetVisable(welcome03 = true) } + v_next_page_04.setOnClickListener { + setTargetVisable(complierGuidance = true) + } + + v_welcome_close_01.setOnClickListener(this) + v_welcome_close_02.setOnClickListener(this) + v_welcome_close_03.setOnClickListener(this) + v_welcome_close_04.setOnClickListener(this) + + } + + override fun onClick(v: View?) { + 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) + } + } + } + + fun setUserPhoneInfo(phone:String){ + if(phone.length>8) { + //截取电话号码前三位 + val phoneNumPre = phone.substring(0, 3); + //截取电话号码后四位 + val phoneNumFix = phone.substring(7); + actv_userinfo.text = "$phoneNumPre****$phoneNumFix" + }else{ + actv_userinfo.text = phone + } + } + + fun setStartTimeAndEndTime(startTime:String,endTime:String){ + actv_order_time.text = "$startTime-$endTime" + } + + fun setTargetVisable( + startGuidance: Boolean = false, + welcome01: Boolean = false, + welcome02: Boolean = false, + welcome03: Boolean = false, + welcome04: Boolean = false, + complierGuidance:Boolean = false + ) { + if (startGuidance||complierGuidance) { + if(startGuidance){ + include_welcome.visibility = View.VISIBLE + actv_start_guildance.visibility = View.VISIBLE + group_complete_guidance.visibility = View.GONE + actv_click_go_explore.text = "点击开始探索" + } + if(complierGuidance){ + include_welcome.visibility = View.VISIBLE + actv_start_guildance.visibility = View.GONE + group_complete_guidance.visibility = View.VISIBLE + actv_click_go_explore.text = "点我进入主页" + } + + } else { + include_welcome.visibility = View.GONE + actv_start_guildance.visibility = View.GONE + group_complete_guidance.visibility = View.GONE + } + if (welcome01) { include_welcome_01.visibility = View.VISIBLE } else { include_welcome_01.visibility = View.GONE } + if (welcome02) { include_welcome_02.visibility = View.VISIBLE } else { include_welcome_02.visibility = View.GONE } + if (welcome03) { include_welcome_03.visibility = View.VISIBLE } else { include_welcome_03.visibility = View.GONE } + if (welcome04) { include_welcome_04.visibility = View.VISIBLE } else { include_welcome_04.visibility = View.GONE } + + } + + override fun onDismiss(dialog: DialogInterface) { + super.onDismiss(dialog) + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + CallerLogger.d(M_BUS_P+ TAG, "onSaveInstanceState") + } + + override fun createPresenter(): CharterPassengerNoviceGuidancePresenter = + CharterPassengerNoviceGuidancePresenter(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) { //解决方法就是添加这行代码,如果已经添加了,就移除掉然后再show,就不会出现Fragment already added的错误了。 + 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") + super.onViewStateRestored(savedInstanceState) + } + + companion object { + const val TAG = "NoviceGuidanceFragment" + + @JvmStatic + fun newInstance(): NoviceGuidanceFragment { + val args = Bundle() + val fragment = NoviceGuidanceFragment() + fragment.arguments = args + return fragment + } + + + fun showNoviceGuidance( + childFragmentManager: FragmentManager, + parentFragmentManager: FragmentManager, + bpFunctionGroup: NoviceGuidanceFragment?, + ) { + val fragmentByTag: Fragment? = childFragmentManager.findFragmentByTag(NoviceGuidanceFragment.TAG) + if (fragmentByTag is DialogFragment) { + if (fragmentByTag.dialog != null && fragmentByTag.dialog!!.isShowing) { + CallerLogger.d(M_BUS_P + MainFragment.TAG, "正在展示") + return + } + if (fragmentByTag.dialog != null && fragmentByTag.isAdded) { + if (AppStateManager.currentActivity() == null) { // 没有在当前应用内 在启动页面关闭应用 + CallerLogger.d(M_BUS_P + MainFragment.TAG, "权限验证") + return + } + } + } + if (bpFunctionGroup != null) { + if (bpFunctionGroup.dialog != null && bpFunctionGroup.dialog!!.isShowing) { + return + } + if (bpFunctionGroup.isAdded) { + //解决方法就是添加这行代码,如果已经添加了,就移除掉然后再show,就不会出现Fragment already added的错误了。 + parentFragmentManager.beginTransaction().remove(bpFunctionGroup) + .commitAllowingStateLoss() + } + if (ClickUtils.isFastClick()) { + bpFunctionGroup.show(parentFragmentManager, MainFragment.TAG) + CallerLogger.d(M_BUS_P + MainFragment.TAG, "展示") + } else { + CallerLogger.d(M_BUS_P + MainFragment.TAG, "dialog 1s内执行一次") + } + } + } + } + + interface ContainDismiss{ + fun closeDialog() + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_1.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_1.png new file mode 100644 index 0000000000..62f7d27e18 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_1.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_2.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_2.png new file mode 100644 index 0000000000..e00273748f Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_2.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_3.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_3.png new file mode 100644 index 0000000000..b1c5a49218 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_3.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_4.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_4.png new file mode 100644 index 0000000000..999040bb75 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_guidace_4.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_image_welcome_info_bg.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_image_welcome_info_bg.png new file mode 100644 index 0000000000..91ebc377c6 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_image_welcome_info_bg.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_image_welcome_nor.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_image_welcome_nor.png new file mode 100644 index 0000000000..ceef4281b4 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/charter_p_image_welcome_nor.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_welcome_explore.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_welcome_explore.xml new file mode 100644 index 0000000000..374e3a007f --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_welcome_explore.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_main_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_main_fragment.xml index 4162248f0e..2ee99c9946 100644 --- a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_main_fragment.xml +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_main_fragment.xml @@ -39,16 +39,6 @@ android:layout_width="@dimen/dp_148" android:layout_height="@dimen/dp_150"/> - - + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_fragment.xml new file mode 100644 index 0000000000..d8e1afc1a4 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_fragment.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_1_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_1_fragment.xml new file mode 100644 index 0000000000..c6e4e3bead --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_1_fragment.xml @@ -0,0 +1,28 @@ + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_2_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_2_fragment.xml new file mode 100644 index 0000000000..ecc69c5f22 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_2_fragment.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_3_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_3_fragment.xml new file mode 100644 index 0000000000..e0e5cbe80a --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_3_fragment.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_4_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_4_fragment.xml new file mode 100644 index 0000000000..dd15a132d0 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_4_fragment.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_fragment.xml new file mode 100644 index 0000000000..0fab5e0bfd --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_fragment.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/values/color.xml b/OCH/mogo-och-charter-passenger/src/main/res/values/color.xml index 4c93542ac6..1f207aef86 100644 --- a/OCH/mogo-och-charter-passenger/src/main/res/values/color.xml +++ b/OCH/mogo-och-charter-passenger/src/main/res/values/color.xml @@ -35,6 +35,8 @@ #B8C2D8 #D7E5F5 #E0EFFF + #101C35 + #20418D #662C2D31 #332C2D31 diff --git a/core/mogo-core-res/src/main/res/values/dimens.xml b/core/mogo-core-res/src/main/res/values/dimens.xml index 84b201c229..32bb5daeea 100644 --- a/core/mogo-core-res/src/main/res/values/dimens.xml +++ b/core/mogo-core-res/src/main/res/values/dimens.xml @@ -385,6 +385,7 @@ 357dp 358dp 359dp + 360dp 366dp 367dp 368dp