瀏覽代碼

Show a different note when incompatible

Peter Cai 6 月之前
父節點
當前提交
52cf68d43d

+ 16 - 0
app-unpriv/src/main/java/im/angry/openeuicc/ui/QuickCompatibilityFragment.kt

@@ -9,6 +9,7 @@ import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.Button
+import android.widget.CheckBox
 import android.widget.TextView
 import androidx.core.view.isVisible
 import androidx.fragment.app.Fragment
@@ -48,6 +49,10 @@ open class QuickCompatibilityFragment : Fragment(), UnprivilegedEuiccContextMark
         requireView().requireViewById(R.id.quick_availability_result_notes)
     }
 
+    private val skipCheckBox: CheckBox by lazy {
+        requireView().requireViewById(R.id.quick_availability_skip)
+    }
+
     override fun onCreateView(
         inflater: LayoutInflater,
         container: ViewGroup?,
@@ -57,6 +62,15 @@ open class QuickCompatibilityFragment : Fragment(), UnprivilegedEuiccContextMark
             .text = formatDeviceInformation()
         requireViewById<Button>(R.id.quick_availability_button_continue)
             .setOnClickListener { onContinueToApp() }
+        // Can't use the lazy field yet
+        requireViewById<CheckBox>(R.id.quick_availability_skip).setOnCheckedChangeListener { compoundButton, b ->
+            if (compoundButton.isVisible) {
+                runBlocking {
+                    preferenceRepository.skipQuickAvailabilityFlow
+                        .updatePreference(b)
+                }
+            }
+        }
     }
 
     override fun onStart() {
@@ -75,6 +89,7 @@ open class QuickCompatibilityFragment : Fragment(), UnprivilegedEuiccContextMark
     private fun onCompatibilityUpdate(result: CompatibilityResult) {
         conclusion.text = formatConclusion(result)
         if (result.compatibility == Compatibility.COMPATIBLE) {
+            // Don't show the message again, ever, if the result is compatible
             runBlocking {
                 preferenceRepository.skipQuickAvailabilityFlow
                     .updatePreference(true)
@@ -88,6 +103,7 @@ open class QuickCompatibilityFragment : Fragment(), UnprivilegedEuiccContextMark
         } else {
             resultNotes.isVisible = true
             resultNotes.text = getString(R.string.quick_compatibility_result_notes_incompatible)
+            skipCheckBox.isVisible = true
         }
     }
 

+ 7 - 0
app-unpriv/src/main/res/layout/fragment_quick_compatibility.xml

@@ -38,6 +38,13 @@
         android:text="@string/quick_compatibility_result_notes"
         android:visibility="gone" />
 
+    <CheckBox
+        android:id="@+id/quick_availability_skip"
+        android:visibility="gone"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/quick_compatibility_skip" />
+
     <Button
         android:id="@+id/quick_availability_button_continue"
         android:layout_width="match_parent"

+ 1 - 0
app-unpriv/src/main/res/values/strings.xml

@@ -20,4 +20,5 @@
     <string name="quick_compatibility_result_notes">Note: these results are for reference only. Even if a SIM slot is not listed above, it <i>may</i> be compatible as well once a SIM card is inserted.</string>
     <string name="quick_compatibility_result_notes_incompatible">Note: if you currently do not have any SIM card inserted, try the compatibility check again after inserting one. Any SIM card will do.</string>
     <string name="quick_compatibility_button_continue">Continue</string>
+    <string name="quick_compatibility_skip">Don\'t show this message again</string>
 </resources>