Pārlūkot izejas kodu

feat 点击油站logo和名称将刷新油站名称,logo和电话

RobinTan1024 4 gadi atpakaļ
vecāks
revīzija
8a5d29169c

+ 39 - 4
app/src/main/java/com/doverfuelingsolutions/issp/view/MainActivity.kt

@@ -4,6 +4,7 @@ import android.content.Context
 import android.content.Intent
 import android.net.Uri
 import android.os.Bundle
+import android.view.View
 import androidx.activity.viewModels
 import androidx.appcompat.app.AlertDialog
 import androidx.appcompat.app.AppCompatActivity
@@ -13,6 +14,7 @@ import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.lifecycleScope
 import com.doverfuelingsolutions.issp.R
+import com.doverfuelingsolutions.issp.api.SystemApi
 import com.doverfuelingsolutions.issp.data.GlobalData
 import com.doverfuelingsolutions.issp.databinding.ActivityMainBinding
 import com.doverfuelingsolutions.issp.fusion.FusionManager
@@ -33,6 +35,7 @@ import java.io.File
 import java.util.*
 
 class MainActivity : AppCompatActivity(),
+    View.OnClickListener,
     OnFusionStatus {
 
     companion object {
@@ -57,7 +60,11 @@ class MainActivity : AppCompatActivity(),
         super.onCreate(savedInstanceState)
         binding.lifecycleOwner = this
         binding.mainViewModel = mainViewModel
+        binding.handler = this
+
+        supportActionBar?.hide()
         initView()
+        initBanner()
 
         FusionManager.onFusionStatus = this
         lifecycle.addObserver(FusionManager)
@@ -81,8 +88,10 @@ class MainActivity : AppCompatActivity(),
             when (requestCode) {
                 PreferenceActivity.codeRequestResult -> {
                     data?.let {
-                        val isMiddleModified = it.getBooleanExtra(PreferenceActivity.isMiddleModified, false)
-                        val isFuelModified = it.getBooleanExtra(PreferenceActivity.isFuelModified, false)
+                        val isMiddleModified =
+                            it.getBooleanExtra(PreferenceActivity.isMiddleModified, false)
+                        val isFuelModified =
+                            it.getBooleanExtra(PreferenceActivity.isFuelModified, false)
                         if (!isFuelModified && !isMiddleModified) return@let
 
                         if (isMiddleModified || FusionManager.stateFusion != FdcClient.FdcClientState.Connected) {
@@ -110,6 +119,29 @@ class MainActivity : AppCompatActivity(),
         if (!isBlockBackPress) super.onBackPressed()
     }
 
+    override fun onClick(v: View?) {
+        when (v) {
+            binding.stationLogo,
+            binding.stationName -> {
+                DFSLog.i("refresh station info")
+                lifecycleScope.launch {
+                    val resultPhone = SystemApi.sessionInfo()
+                    if (resultPhone.success && resultPhone.data != null) {
+                        GlobalData.stationTel.set(resultPhone.data.phoneNumber)
+                        GlobalData.businessName.set(resultPhone.data.currentbuName)
+                    }
+
+                    val resultLogo = SystemApi.stationLogo()
+                    if (resultLogo.success && !resultLogo.data.isNullOrBlank()) {
+                        GlobalData.stationLogoFileName.set(resultLogo.data)
+                    }
+
+                    initView()
+                }
+            }
+        }
+    }
+
     override fun onFusionStatus(status: FusionStatus) {
         DFSLog.i("Fusion status: ${status.name.toLowerCase(Locale.CHINESE)}")
         lifecycleScope.launch {
@@ -146,10 +178,13 @@ class MainActivity : AppCompatActivity(),
     }
 
     private fun initView() {
-        supportActionBar?.hide()
         mainViewModel.stationName.value = GlobalData.businessName.get()
-        if (GlobalData.stationLogoFileName.get().isNotEmpty())
+        if (GlobalData.stationLogoFileName.get().isNotEmpty()) {
             binding.stationLogo.setImageURI(Uri.fromFile(File(filesDir, GlobalData.stationLogoFileName.get())))
+        }
+    }
+
+    private fun initBanner() {
         binding.banner.run {
             addBannerLifecycleObserver(this@MainActivity)
             scrollTime = 500

+ 11 - 0
app/src/main/res/layout/activity_main.xml

@@ -8,6 +8,10 @@
         <variable
             name="mainViewModel"
             type="com.doverfuelingsolutions.issp.view.MainActivity.MainViewModel" />
+
+        <variable
+            name="handler"
+            type="com.doverfuelingsolutions.issp.view.MainActivity" />
     </data>
 
     <LinearLayout
@@ -31,14 +35,21 @@
                 android:id="@+id/stationLogo"
                 android:layout_width="100dp"
                 android:layout_height="100dp"
+                android:clickable="true"
                 android:contentDescription="@string/app_name"
+                android:focusable="true"
+                android:onClick="@{handler}"
                 android:src="@mipmap/ic_launcher" />
 
             <TextView
+                android:id="@+id/stationName"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_marginStart="30dp"
                 android:layout_weight="1"
+                android:clickable="true"
+                android:focusable="true"
+                android:onClick="@{handler}"
                 android:text="@{mainViewModel.stationName, default=@string/example_company_name}"
                 android:textColor="@color/color333"
                 android:textSize="32sp" />