RobinTan1024 4 жил өмнө
parent
commit
7d6a046635

+ 24 - 8
app/src/main/java/com/doverfuelingsolutions/issp/view/MainActivity.kt

@@ -22,7 +22,9 @@ import com.doverfuelingsolutions.issp.fusion.callback.OnFusionStatus
 import com.doverfuelingsolutions.issp.utils.DFSToastUtil
 import com.doverfuelingsolutions.issp.utils.WindowUtil
 import com.doverfuelingsolutions.issp.utils.log.DFSLog
+import com.doverfuelingsolutions.issp.utils.sp.SPKeys
 import com.doverfuelingsolutions.issp.utils.sp.SPUtil
+import com.doverfuelingsolutions.issp.view.fragment.FragmentNozzle
 import com.doverfuelingsolutions.issp.view.fragment.FragmentReconnect
 import com.doverfuelingsolutions.issp.view.fragment.router.FragmentRouter
 import com.doverfuelingsolutions.issp.view.fragment.FragmentSelect
@@ -104,15 +106,14 @@ class MainActivity : AppCompatActivity(),
             when (requestCode) {
                 PreferenceActivity.codeRequestResult -> {
                     data?.let {
-                        val isMiddleModified =
-                            it.getBooleanExtra(PreferenceActivity.isMiddleModified, false)
-                        val isFuelModified =
-                            it.getBooleanExtra(PreferenceActivity.isFuelModified, false)
-                        if (!isFuelModified && !isMiddleModified) return@let
+                        val isMiddleModified = it.getBooleanExtra(PreferenceActivity.isMiddleModified, false)
+                        val isFuelModified = it.getBooleanExtra(PreferenceActivity.isFuelModified, false)
+                        val isChooseOrderTypeModified = it.getBooleanExtra(PreferenceActivity.isChooseOrderTypeModified, false)
 
                         if (isMiddleModified || FusionManager.stateFusion != FdcClient.FdcClientState.Connected) {
                             setFusionLinkingLoading()
                             FusionManager.restart(true)
+                            return@let
                         } else if (isFuelModified && FusionManager.stateFusion == FdcClient.FdcClientState.Connected) {
                             val dialog = LoadingDialogBuilder(this@MainActivity)
                                 .setLoadingText(R.string.in_get_fuel)
@@ -123,8 +124,14 @@ class MainActivity : AppCompatActivity(),
                                 DFSToastUtil.success(R.string.get_fuel_success)
                             } else {
                                 DFSToastUtil.fail(R.string.get_fuel_failed)
+                                onFusionStatus(FusionStatus.ConnectedWithoutInfo)
+                                return@let
                             }
                         }
+
+                        if (isChooseOrderTypeModified) {
+                            initFragmentEntry()
+                        }
                     }
                 }
             }
@@ -178,15 +185,14 @@ class MainActivity : AppCompatActivity(),
                     setFusionLinkingLoading()
                 }
                 FusionStatus.Connected -> {
-                    // TODO 直接油枪模式
                     DFSToastUtil.success(R.string.connect_fusion_success)
-                    fragmentRouter.push(FragmentSelect())
+                    initFragmentEntry()
                 }
                 FusionStatus.ConnectedWithoutInfo -> {
                     DFSToastUtil.fail(R.string.get_fuel_failed)
                     fragmentRouter.push(FragmentReconnect.build {
                         DFSToastUtil.success(R.string.get_fuel_success)
-                        fragmentRouter.push(FragmentSelect())
+                        initFragmentEntry()
                     })
                 }
                 FusionStatus.Disconnected -> {
@@ -256,6 +262,16 @@ class MainActivity : AppCompatActivity(),
         }
     }
 
+    private fun initFragmentEntry() {
+        fragmentRouter.setHomeFragment(
+            if (SPUtil.getString(SPKeys.ORDER_CHOOSE) == "nozzle") {
+                FragmentNozzle.build(FusionManager.pumpList)
+            } else {
+                FragmentSelect()
+            }
+        )
+    }
+
     // TODO 当本地未处理订单无法按预期处理时(如本地锁的单,但在服务器上被其他渠道解锁了,造成解锁失败;消单同理;)
     private fun handleUnsolvedOrder() {
         GlobalScope.launch(Dispatchers.IO) {

+ 4 - 0
app/src/main/java/com/doverfuelingsolutions/issp/view/PreferenceActivity.kt

@@ -36,6 +36,7 @@ class PreferenceActivity : AppCompatActivity(),
         const val codeRequestResult = 1001
         const val isMiddleModified = "isMiddleModified"
         const val isFuelModified = "isFuelModified"
+        const val isChooseOrderTypeModified = "isChooseOrderTypeModified"
 
         fun start(context: Context) {
             Intent(context, PreferenceActivity::class.java).let { context.startActivity(it) }
@@ -58,6 +59,7 @@ class PreferenceActivity : AppCompatActivity(),
     private var oldMiddleInfo = ""
     private var oldFuelInfo = ""
     private var oldSystemInfo = ""
+    private var oldChooseOrderType = ""
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
@@ -78,6 +80,7 @@ class PreferenceActivity : AppCompatActivity(),
             oldMiddleInfo = makeMiddleInfo()
             oldFuelInfo = makeFuelInfo()
             oldSystemInfo = makeSystemInfo()
+            oldChooseOrderType = SPUtil.getString(SPKeys.ORDER_CHOOSE)
         } else {
             isForResult = false
         }
@@ -99,6 +102,7 @@ class PreferenceActivity : AppCompatActivity(),
             setResult(Activity.RESULT_OK, Intent().apply {
                 putExtra(isMiddleModified, hasMiddleModified)
                 putExtra(isFuelModified, hasFuelModified)
+                putExtra(isChooseOrderTypeModified, oldChooseOrderType != SPUtil.getString(SPKeys.ORDER_CHOOSE))
             })
             finish()
         } else {

+ 21 - 8
app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/router/FragmentRouter.kt

@@ -54,10 +54,7 @@ class FragmentRouter(
         activity.supportFragmentManager.unregisterFragmentLifecycleCallbacks(fragmentEvent)
     }
 
-    fun isForward() = isNavigateForward
-    fun isBackward() = !isNavigateForward
-
-    fun push(fragment: Fragment) {
+    fun push(fragment: FragmentBasic) {
         activity.supportFragmentManager.beginTransaction().run {
             replace(fragmentViewId, fragment)
             if (fragmentList.isNotEmpty()) addToBackStack(fragment.javaClass.simpleName)
@@ -71,6 +68,20 @@ class FragmentRouter(
         }
     }
 
+    fun replace(fragment: FragmentBasic) {
+        if (fragmentList.size == 1) {
+            fragmentList.removeAt(0)
+        } else if (fragmentList.size > 1) {
+            activity.supportFragmentManager.popBackStackImmediate()
+        }
+        push(fragment)
+    }
+
+    fun setHomeFragment(fragment: FragmentBasic) {
+        popBottom()
+        replace(fragment)
+    }
+
     fun popBottom() {
         if (fragmentList.size > 1)
             activity.supportFragmentManager.popBackStack(fragmentList[1].javaClass.simpleName, FragmentManager.POP_BACK_STACK_INCLUSIVE)
@@ -97,12 +108,14 @@ class FragmentRouter(
     private fun handleToolbarAsRoute(fragment: FragmentBasic) {
         if (fragmentToolbar == null) return
 
-        // 处理前面设置下的逻辑
         val isFirst = fragmentList.size == 1
         fragmentToolbar?.visibility =  if (fragment.useActionBar) View.VISIBLE else View.GONE
+        fragmentToolbar?.title = fragment.title
         fragmentToolbar?.isBackVisible = !isFirst && fragment.showButtonBack
-        fragmentToolbar?.isHomeVisible = fragment.showButtonHome
-        fragmentToolbar?.countdownTime = fragment.countdownTime
-        fragmentToolbar?.startCountdown(fragment.countdownTime)
+        fragmentToolbar?.isHomeVisible = !isFirst && fragment.showButtonHome
+
+        val countdownRealTime = if (isFirst) -1 else fragment.countdownTime
+        fragmentToolbar?.countdownTime = countdownRealTime
+        fragmentToolbar?.startCountdown(countdownRealTime)
     }
 }

+ 1 - 1
app/src/main/java/com/doverfuelingsolutions/issp/view/widget/FragmentToolbar.kt

@@ -28,7 +28,7 @@ class FragmentToolbar(context: Context, attrs: AttributeSet) : FrameLayout(conte
             field = value
             countdownNum.visibility = if (value) VISIBLE else GONE
         }
-    private var title = ""
+    var title = ""
         set(value) {
             field = value
             titleText.text = value