|
@@ -4,9 +4,11 @@ import android.content.Context
|
|
import android.content.Intent
|
|
import android.content.Intent
|
|
import android.net.Uri
|
|
import android.net.Uri
|
|
import android.os.Bundle
|
|
import android.os.Bundle
|
|
|
|
+import android.view.View
|
|
import androidx.activity.viewModels
|
|
import androidx.activity.viewModels
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
import androidx.databinding.DataBindingUtil
|
|
import androidx.databinding.DataBindingUtil
|
|
|
|
+import androidx.fragment.app.Fragment
|
|
import androidx.lifecycle.MutableLiveData
|
|
import androidx.lifecycle.MutableLiveData
|
|
import androidx.lifecycle.ViewModel
|
|
import androidx.lifecycle.ViewModel
|
|
import androidx.lifecycle.lifecycleScope
|
|
import androidx.lifecycle.lifecycleScope
|
|
@@ -18,15 +20,16 @@ import com.doverfuelingsolutions.issp.fusion.FusionManager
|
|
import com.doverfuelingsolutions.issp.fusion.callback.OnFusionEvent
|
|
import com.doverfuelingsolutions.issp.fusion.callback.OnFusionEvent
|
|
import com.doverfuelingsolutions.issp.utils.ActivityUtil
|
|
import com.doverfuelingsolutions.issp.utils.ActivityUtil
|
|
import com.doverfuelingsolutions.issp.utils.StringUtil
|
|
import com.doverfuelingsolutions.issp.utils.StringUtil
|
|
-import com.doverfuelingsolutions.issp.view.fragment.FragmentInit
|
|
|
|
|
|
+import com.doverfuelingsolutions.issp.utils.log.DFSLog
|
|
|
|
+import com.doverfuelingsolutions.issp.view.fragment.FragmentHolder
|
|
import com.doverfuelingsolutions.issp.view.fragment.FragmentSelect
|
|
import com.doverfuelingsolutions.issp.view.fragment.FragmentSelect
|
|
-import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|
|
|
|
|
+import com.wayne.www.waynelib.fdc.FdcClient
|
|
import com.youth.banner.adapter.BannerImageAdapter
|
|
import com.youth.banner.adapter.BannerImageAdapter
|
|
import com.youth.banner.holder.BannerImageHolder
|
|
import com.youth.banner.holder.BannerImageHolder
|
|
import kotlinx.coroutines.launch
|
|
import kotlinx.coroutines.launch
|
|
import java.io.File
|
|
import java.io.File
|
|
|
|
|
|
-class MainActivity : AppCompatActivity(), OnFusionEvent {
|
|
|
|
|
|
+class MainActivity : AppCompatActivity(), OnFusionEvent, View.OnLongClickListener {
|
|
|
|
|
|
companion object {
|
|
companion object {
|
|
fun start(context: Context) {
|
|
fun start(context: Context) {
|
|
@@ -37,7 +40,8 @@ class MainActivity : AppCompatActivity(), OnFusionEvent {
|
|
private val binding: ActivityMainBinding by lazy { DataBindingUtil.setContentView(this, R.layout.activity_main) }
|
|
private val binding: ActivityMainBinding by lazy { DataBindingUtil.setContentView(this, R.layout.activity_main) }
|
|
private val mainViewModel: MainViewModel by viewModels()
|
|
private val mainViewModel: MainViewModel by viewModels()
|
|
|
|
|
|
- private val fragmentInit = FragmentInit()
|
|
|
|
|
|
+ private val fragmentHolder = FragmentHolder()
|
|
|
|
+ private val fragmentSelect = FragmentSelect()
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
super.onCreate(savedInstanceState)
|
|
@@ -52,23 +56,80 @@ class MainActivity : AppCompatActivity(), OnFusionEvent {
|
|
ActivityUtil.setFullscreen(this)
|
|
ActivityUtil.setFullscreen(this)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ override fun onDestroy() {
|
|
|
|
+ super.onDestroy()
|
|
|
|
+
|
|
|
|
+ FusionManager.onFusionEvent = null
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ 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()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ override fun onLongClick(v: View?): Boolean {
|
|
|
|
+ when (v) {
|
|
|
|
+ binding.clock -> {
|
|
|
|
+ PreferenceActivity.startForResult(this)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return false
|
|
|
|
+ }
|
|
|
|
+
|
|
override fun onFusionInit(code: FusionError, msg: String) {
|
|
override fun onFusionInit(code: FusionError, msg: String) {
|
|
lifecycleScope.launch {
|
|
lifecycleScope.launch {
|
|
- if (code != FusionError.Success) {
|
|
|
|
- fragmentInit.fail(msg)
|
|
|
|
- return@launch
|
|
|
|
- MaterialAlertDialogBuilder(this@MainActivity)
|
|
|
|
- .setTitle(R.string.tip_opt_fail)
|
|
|
|
- .setCancelable(false)
|
|
|
|
- .setMessage(StringUtil.get(R.string.tip_connect_fail_reason_config, msg))
|
|
|
|
- .setPositiveButton(R.string.go_check) { _, _ ->
|
|
|
|
- PreferenceActivity.start(this@MainActivity)
|
|
|
|
|
|
+ // WrongAddress Timeout 需要修改中控信息,返回时如已修改则重启Fusion
|
|
|
|
+ // GetNozzleInfo 不重启Fusion,重新请求加油信息即可
|
|
|
|
+ when (code) {
|
|
|
|
+ FusionError.Success -> {
|
|
|
|
+ setFragment(fragmentSelect)
|
|
|
|
+ }
|
|
|
|
+ FusionError.WrongAddress, FusionError.Timeout, FusionError.GetNozzleInfo -> {
|
|
|
|
+ setFragment(fragmentHolder)
|
|
|
|
+ val buttonText = if (code == FusionError.GetNozzleInfo) {
|
|
|
|
+ StringUtil.get(R.string.go_check_fuel)
|
|
|
|
+ } else {
|
|
|
|
+ StringUtil.get(R.string.go_check_fusion)
|
|
|
|
+ }
|
|
|
|
+ fragmentHolder.action(StringUtil.get(R.string.connect_fail_reason, msg), buttonText) {
|
|
|
|
+ PreferenceActivity.startForResult(this@MainActivity)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ FusionError.Login -> {
|
|
|
|
+ setFragment(fragmentHolder)
|
|
|
|
+ fragmentHolder.action(StringUtil.get(R.string.connect_fail_reason, msg), StringUtil.get(R.string.retry_login)) {
|
|
|
|
+ FusionManager.loginFetchInfo()
|
|
}
|
|
}
|
|
- .show()
|
|
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ override fun onFusionReconnect() {
|
|
|
|
+ lifecycleScope.launch {
|
|
|
|
+ setFragment(fragmentHolder)
|
|
|
|
+ fragmentHolder.loading(StringUtil.get(R.string.in_reconnect_fusion))
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
private fun initView() {
|
|
private fun initView() {
|
|
supportActionBar?.hide()
|
|
supportActionBar?.hide()
|
|
mainViewModel.stationName.value = GlobalData.businessName.get()
|
|
mainViewModel.stationName.value = GlobalData.businessName.get()
|
|
@@ -84,17 +145,34 @@ class MainActivity : AppCompatActivity(), OnFusionEvent {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ binding.clock.setOnLongClickListener(this)
|
|
}
|
|
}
|
|
|
|
|
|
private fun initFusion() {
|
|
private fun initFusion() {
|
|
- supportFragmentManager.beginTransaction()
|
|
|
|
- .add(R.id.fragmentBox, fragmentInit)
|
|
|
|
- .commit()
|
|
|
|
|
|
+ setFragment(fragmentHolder)
|
|
|
|
|
|
FusionManager.onFusionEvent = this
|
|
FusionManager.onFusionEvent = this
|
|
lifecycle.addObserver(FusionManager)
|
|
lifecycle.addObserver(FusionManager)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private fun setFragment(fragment: Fragment, back: Boolean = false) {
|
|
|
|
+ val contain = supportFragmentManager.fragments.contains(fragment)
|
|
|
|
+ val show = fragment.isHidden
|
|
|
|
+
|
|
|
|
+ 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)
|
|
|
|
+ }
|
|
|
|
+ transaction.commit()
|
|
|
|
+ }
|
|
|
|
+
|
|
class MainViewModel : ViewModel() {
|
|
class MainViewModel : ViewModel() {
|
|
val stationName = MutableLiveData("")
|
|
val stationName = MutableLiveData("")
|
|
}
|
|
}
|