From 293266bb6e27ac64b9c813ee10eea82ce8581841 Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Sat, 6 Jul 2024 20:46:52 -0400 Subject: [PATCH] ui: Allow disabling the only remaining profile through USB readers --- .../java/im/angry/openeuicc/ui/EuiccManagementFragment.kt | 7 +++++++ .../im/angry/openeuicc/util/EuiccChannelFragmentUtils.kt | 3 +++ 2 files changed, 10 insertions(+) diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt b/app-common/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt index 00d7629..c547204 100644 --- a/app-common/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt +++ b/app-common/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt @@ -216,6 +216,13 @@ open class EuiccManagementFragment : Fragment(), EuiccProfilesChangedListener, if (profile.isEnabled) { popup.menu.findItem(R.id.enable).isVisible = false popup.menu.findItem(R.id.delete).isVisible = false + + // We hide the disable option by default to avoid "bricking" some cards that won't get + // recognized again by the phone's modem. However we don't have that worry if we are + // accessing it through a USB card reader + if (isUsb) { + popup.menu.findItem(R.id.disable).isVisible = true + } } } diff --git a/app-common/src/main/java/im/angry/openeuicc/util/EuiccChannelFragmentUtils.kt b/app-common/src/main/java/im/angry/openeuicc/util/EuiccChannelFragmentUtils.kt index 8b2aadb..5df1a0a 100644 --- a/app-common/src/main/java/im/angry/openeuicc/util/EuiccChannelFragmentUtils.kt +++ b/app-common/src/main/java/im/angry/openeuicc/util/EuiccChannelFragmentUtils.kt @@ -28,6 +28,9 @@ val T.slotId: Int where T: Fragment, T: EuiccChannelFragmentMarker val T.portId: Int where T: Fragment, T: EuiccChannelFragmentMarker get() = requireArguments().getInt("portId") +val T.isUsb: Boolean where T: Fragment, T: EuiccChannelFragmentMarker + get() = requireArguments().getInt("slotId") == EuiccChannelManager.USB_CHANNEL_ID + val T.euiccChannelManager: EuiccChannelManager where T: Fragment, T: EuiccChannelFragmentMarker get() = (requireActivity() as BaseEuiccAccessActivity).euiccChannelManager val T.channel: EuiccChannel where T: Fragment, T: EuiccChannelFragmentMarker