|
@@ -9,6 +9,8 @@ import androidx.activity.viewModels
|
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
|
import androidx.databinding.DataBindingUtil
|
|
|
import androidx.fragment.app.Fragment
|
|
|
+import androidx.fragment.app.FragmentManager
|
|
|
+import androidx.fragment.app.FragmentResultListener
|
|
|
import androidx.lifecycle.MutableLiveData
|
|
|
import androidx.lifecycle.ViewModel
|
|
|
import androidx.lifecycle.lifecycleScope
|
|
@@ -20,8 +22,8 @@ import com.doverfuelingsolutions.issp.fusion.FusionManager
|
|
|
import com.doverfuelingsolutions.issp.fusion.callback.OnFusionEvent
|
|
|
import com.doverfuelingsolutions.issp.utils.ActivityUtil
|
|
|
import com.doverfuelingsolutions.issp.utils.StringUtil
|
|
|
-import com.doverfuelingsolutions.issp.utils.log.DFSLog
|
|
|
import com.doverfuelingsolutions.issp.view.fragment.FragmentHolder
|
|
|
+import com.doverfuelingsolutions.issp.view.fragment.FragmentNozzle
|
|
|
import com.doverfuelingsolutions.issp.view.fragment.FragmentSelect
|
|
|
import com.wayne.www.waynelib.fdc.FdcClient
|
|
|
import com.youth.banner.adapter.BannerImageAdapter
|
|
@@ -29,12 +31,18 @@ import com.youth.banner.holder.BannerImageHolder
|
|
|
import kotlinx.coroutines.launch
|
|
|
import java.io.File
|
|
|
|
|
|
-class MainActivity : AppCompatActivity(), OnFusionEvent, View.OnLongClickListener {
|
|
|
+class MainActivity : AppCompatActivity(),
|
|
|
+ OnFusionEvent,
|
|
|
+ View.OnLongClickListener,
|
|
|
+ FragmentResultListener {
|
|
|
|
|
|
companion object {
|
|
|
fun start(context: Context) {
|
|
|
Intent(context, MainActivity::class.java).let { context.startActivity(it) }
|
|
|
}
|
|
|
+
|
|
|
+ const val keyOnBack = "back"
|
|
|
+ const val keyOnHome = "home"
|
|
|
}
|
|
|
|
|
|
private val binding: ActivityMainBinding by lazy { DataBindingUtil.setContentView(this, R.layout.activity_main) }
|
|
@@ -42,6 +50,8 @@ class MainActivity : AppCompatActivity(), OnFusionEvent, View.OnLongClickListene
|
|
|
|
|
|
private val fragmentHolder = FragmentHolder()
|
|
|
private val fragmentSelect = FragmentSelect()
|
|
|
+ private val fragmentNozzle = FragmentNozzle()
|
|
|
+ private var isFragmentHoldBack = true
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
super.onCreate(savedInstanceState)
|
|
@@ -65,26 +75,50 @@ class MainActivity : AppCompatActivity(), OnFusionEvent, View.OnLongClickListene
|
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
|
|
super.onActivityResult(requestCode, resultCode, data)
|
|
|
|
|
|
- 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
|
|
|
-
|
|
|
- setFragment(fragmentHolder)
|
|
|
- if (isMiddleModified || FusionManager.stateFusion != FdcClient.FdcClientState.Connected) {
|
|
|
- fragmentHolder.loading(StringUtil.get(R.string.in_reconnect_fusion))
|
|
|
- FusionManager.restart()
|
|
|
- } else if (isFuelModified && FusionManager.stateFusion == FdcClient.FdcClientState.Connected) {
|
|
|
- fragmentHolder.loading(StringUtil.get(R.string.in_get_fuel))
|
|
|
- FusionManager.loginFetchInfo()
|
|
|
+ lifecycleScope.launch {
|
|
|
+ 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
|
|
|
+
|
|
|
+ setFragment(fragmentHolder)
|
|
|
+ if (isMiddleModified || FusionManager.stateFusion != FdcClient.FdcClientState.Connected) {
|
|
|
+ fragmentHolder.loading(StringUtil.get(R.string.in_reconnect_fusion))
|
|
|
+ FusionManager.restart()
|
|
|
+ } else if (isFuelModified && FusionManager.stateFusion == FdcClient.FdcClientState.Connected) {
|
|
|
+ fragmentHolder.loading(StringUtil.get(R.string.in_get_fuel))
|
|
|
+ FusionManager.loginFetchInfo()
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ override fun onBackPressed() {
|
|
|
+ if (isFragmentHoldBack) super.onBackPressed()
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onFragmentResult(requestKey: String, result: Bundle) {
|
|
|
+ when (requestKey) {
|
|
|
+ keyOnBack -> {
|
|
|
+ supportFragmentManager.popBackStack()
|
|
|
+ }
|
|
|
+ keyOnHome -> {
|
|
|
+ if (supportFragmentManager.backStackEntryCount > 0) {
|
|
|
+ supportFragmentManager.popBackStack(supportFragmentManager.getBackStackEntryAt(0).id, FragmentManager.POP_BACK_STACK_INCLUSIVE)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ FragmentSelect.keyOnSelect -> {
|
|
|
+ val isNozzle = result.getBoolean(FragmentSelect.keyIsNozzle)
|
|
|
+ // TODO 油品和枪号选择界面
|
|
|
+ setFragment(if (isNozzle) fragmentNozzle else fragmentHolder, true)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
override fun onLongClick(v: View?): Boolean {
|
|
|
when (v) {
|
|
|
binding.clock -> {
|
|
@@ -146,31 +180,38 @@ class MainActivity : AppCompatActivity(), OnFusionEvent, View.OnLongClickListene
|
|
|
}
|
|
|
}
|
|
|
binding.clock.setOnLongClickListener(this)
|
|
|
- }
|
|
|
|
|
|
- private fun initFusion() {
|
|
|
+ supportFragmentManager.setFragmentResultListener(FragmentSelect.keyOnSelect, this, this)
|
|
|
+ supportFragmentManager.setFragmentResultListener(keyOnBack, this, this)
|
|
|
+ supportFragmentManager.setFragmentResultListener(keyOnHome, this, this)
|
|
|
setFragment(fragmentHolder)
|
|
|
+ }
|
|
|
|
|
|
+ private fun initFusion() {
|
|
|
FusionManager.onFusionEvent = this
|
|
|
lifecycle.addObserver(FusionManager)
|
|
|
}
|
|
|
|
|
|
private fun setFragment(fragment: Fragment, back: Boolean = false) {
|
|
|
val contain = supportFragmentManager.fragments.contains(fragment)
|
|
|
- val show = fragment.isHidden
|
|
|
+ val show = !fragment.isHidden
|
|
|
|
|
|
- if (contain && !show) return
|
|
|
+ if (contain && show) return
|
|
|
|
|
|
- val transaction = supportFragmentManager.beginTransaction()
|
|
|
- supportFragmentManager.fragments.forEach {
|
|
|
- if (fragment != it && !it.isHidden) transaction.hide(it)
|
|
|
- }
|
|
|
- if (!contain) {
|
|
|
- transaction.add(R.id.fragmentBox, fragment)
|
|
|
- } else if (fragment.isHidden) {
|
|
|
- transaction.show(fragment)
|
|
|
+ supportFragmentManager.beginTransaction().run {
|
|
|
+ supportFragmentManager.fragments.forEach {
|
|
|
+ if (fragment != it && !it.isHidden) hide(it)
|
|
|
+ }
|
|
|
+ if (!contain) {
|
|
|
+ add(R.id.fragmentBox, fragment)
|
|
|
+ } else if (fragment.isHidden) {
|
|
|
+ show(fragment)
|
|
|
+ }
|
|
|
+ if (back) {
|
|
|
+ addToBackStack(fragment.javaClass.simpleName)
|
|
|
+ }
|
|
|
+ commit()
|
|
|
}
|
|
|
- transaction.commit()
|
|
|
}
|
|
|
|
|
|
class MainViewModel : ViewModel() {
|