From e8db3d1206ad6fcae81c55d4c6fcb262f2f8dd6c Mon Sep 17 00:00:00 2001 From: septs Date: Wed, 13 Nov 2024 22:47:35 +0100 Subject: [PATCH 1/3] chore: simplify CompatibilityCheckActivity logical (#61) Reviewed-on: https://gitea.angry.im/PeterCxy/OpenEUICC/pulls/61 Co-authored-by: septs Co-committed-by: septs --- .../ui/CompatibilityCheckActivity.kt | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/app-unpriv/src/main/java/im/angry/openeuicc/ui/CompatibilityCheckActivity.kt b/app-unpriv/src/main/java/im/angry/openeuicc/ui/CompatibilityCheckActivity.kt index 06b46df..433f9c3 100644 --- a/app-unpriv/src/main/java/im/angry/openeuicc/ui/CompatibilityCheckActivity.kt +++ b/app-unpriv/src/main/java/im/angry/openeuicc/ui/CompatibilityCheckActivity.kt @@ -1,7 +1,6 @@ package im.angry.openeuicc.ui import android.os.Bundle -import android.util.Log import android.view.MenuItem import android.view.View import android.view.ViewGroup @@ -68,20 +67,13 @@ class CompatibilityCheckActivity: AppCompatActivity() { it.visibility = View.GONE } - when (item.state) { - CompatibilityCheck.State.SUCCESS -> { - root.requireViewById(R.id.compatibility_check_checkmark).visibility = View.VISIBLE - } - CompatibilityCheck.State.FAILURE -> { - root.requireViewById(R.id.compatibility_check_error).visibility = View.VISIBLE - } - CompatibilityCheck.State.FAILURE_UNKNOWN -> { - root.requireViewById(R.id.compatibility_check_unknown).visibility = View.VISIBLE - } - else -> { - root.requireViewById(R.id.compatibility_check_progress_bar).visibility = View.VISIBLE - } + val viewId = when (item.state) { + CompatibilityCheck.State.SUCCESS -> R.id.compatibility_check_checkmark + CompatibilityCheck.State.FAILURE -> R.id.compatibility_check_error + CompatibilityCheck.State.FAILURE_UNKNOWN -> R.id.compatibility_check_unknown + else -> R.id.compatibility_check_progress_bar } + root.requireViewById(viewId).visibility = View.VISIBLE } } From 506b0e530ac966ccfbe2dcd8b698b28959b822f4 Mon Sep 17 00:00:00 2001 From: septs Date: Thu, 14 Nov 2024 14:02:27 +0100 Subject: [PATCH 2/3] feat: low nvram alert (#62) If free nvram available is less 30 kib, then alert dialog Reviewed-on: https://gitea.angry.im/PeterCxy/OpenEUICC/pulls/62 Co-authored-by: septs Co-committed-by: septs --- .../openeuicc/ui/ProfileDownloadFragment.kt | 20 +++++++++++++++++-- app-common/src/main/res/values/strings.xml | 3 +++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/ProfileDownloadFragment.kt b/app-common/src/main/java/im/angry/openeuicc/ui/ProfileDownloadFragment.kt index 69ad1d0..85f120a 100644 --- a/app-common/src/main/java/im/angry/openeuicc/ui/ProfileDownloadFragment.kt +++ b/app-common/src/main/java/im/angry/openeuicc/ui/ProfileDownloadFragment.kt @@ -1,6 +1,7 @@ package im.angry.openeuicc.ui import android.annotation.SuppressLint +import android.app.AlertDialog import android.app.Dialog import android.content.DialogInterface import android.graphics.BitmapFactory @@ -25,13 +26,14 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import kotlin.Exception class ProfileDownloadFragment : BaseMaterialDialogFragment(), Toolbar.OnMenuItemClickListener, EuiccChannelFragmentMarker { companion object { const val TAG = "ProfileDownloadFragment" + const val LOW_NVRAM_THRESHOLD = 30 * 1024 // < 30 KiB, the alert may fail + fun newInstance(slotId: Int, portId: Int, finishWhenDone: Boolean = false): ProfileDownloadFragment = newInstanceEuicc(ProfileDownloadFragment::class.java, slotId, portId) { putBoolean("finishWhenDone", finishWhenDone) @@ -135,7 +137,21 @@ class ProfileDownloadFragment : BaseMaterialDialogFragment(), true } R.id.ok -> { - startDownloadProfile() + if (freeNvram > LOW_NVRAM_THRESHOLD) { + startDownloadProfile() + } else { + AlertDialog.Builder(requireContext()).apply { + setTitle(R.string.profile_download_low_nvram_title) + setMessage(R.string.profile_download_low_nvram_message) + setIcon(android.R.drawable.ic_dialog_alert) + setCancelable(true) + setPositiveButton(android.R.string.ok) { _, _ -> + startDownloadProfile() + } + setNegativeButton(android.R.string.cancel, null) + show() + } + } true } else -> false diff --git a/app-common/src/main/res/values/strings.xml b/app-common/src/main/res/values/strings.xml index cc8f220..05ea4c5 100644 --- a/app-common/src/main/res/values/strings.xml +++ b/app-common/src/main/res/values/strings.xml @@ -55,6 +55,9 @@ Download Failed to download eSIM. Check your activation / QR code. + This download may fail + This download may fail due to low remaining capacity. + New nickname Are you sure you want to delete the profile %s? This operation is irreversible. From e9f4d3d1f9d4557628bd9946ffb7f72101dca6bd Mon Sep 17 00:00:00 2001 From: septs Date: Thu, 14 Nov 2024 14:59:13 +0100 Subject: [PATCH 3/3] fix: unified alert dialog style (#65) see https://gitea.angry.im/PeterCxy/OpenEUICC/search/branch/master?q=.app.AlertDialog Reviewed-on: https://gitea.angry.im/PeterCxy/OpenEUICC/pulls/65 Co-authored-by: septs Co-committed-by: septs --- .../main/java/im/angry/openeuicc/ui/ProfileDownloadFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/ProfileDownloadFragment.kt b/app-common/src/main/java/im/angry/openeuicc/ui/ProfileDownloadFragment.kt index 85f120a..f590d36 100644 --- a/app-common/src/main/java/im/angry/openeuicc/ui/ProfileDownloadFragment.kt +++ b/app-common/src/main/java/im/angry/openeuicc/ui/ProfileDownloadFragment.kt @@ -1,7 +1,6 @@ package im.angry.openeuicc.ui import android.annotation.SuppressLint -import android.app.AlertDialog import android.app.Dialog import android.content.DialogInterface import android.graphics.BitmapFactory @@ -13,6 +12,7 @@ import android.widget.ProgressBar import android.widget.TextView import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.app.AlertDialog import androidx.appcompat.widget.Toolbar import androidx.lifecycle.lifecycleScope import com.google.android.material.textfield.TextInputLayout