Compare commits

...

2 commits

Author SHA1 Message Date
e7a0482281 ui: wizard: Save current state to bundle
All checks were successful
/ build-debug (push) Successful in 4m48s
2024-11-19 20:40:53 -05:00
81f34f9b1c ui: wizard: Sort by slot ID 2024-11-19 20:14:30 -05:00
2 changed files with 39 additions and 2 deletions

View file

@ -16,6 +16,7 @@ import im.angry.openeuicc.util.*
class DownloadWizardActivity: BaseEuiccAccessActivity() {
data class DownloadWizardState(
var currentStepFragmentClassName: String?,
var selectedLogicalSlot: Int,
var smdp: String,
var matchingId: String,
@ -30,6 +31,12 @@ class DownloadWizardActivity: BaseEuiccAccessActivity() {
private lateinit var prevButton: Button
private var currentFragment: DownloadWizardStepFragment? = null
set(value) {
if (this::state.isInitialized) {
state.currentStepFragmentClassName = value?.javaClass?.name
}
field = value
}
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
@ -43,6 +50,7 @@ class DownloadWizardActivity: BaseEuiccAccessActivity() {
})
state = DownloadWizardState(
null,
intent.getIntExtra("selectedLogicalSlot", 0),
"",
"",
@ -88,6 +96,29 @@ class DownloadWizardActivity: BaseEuiccAccessActivity() {
}
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putString("currentStepFragmentClassName", state.currentStepFragmentClassName)
outState.putInt("selectedLogicalSlot", state.selectedLogicalSlot)
outState.putString("smdp", state.smdp)
outState.putString("matchingId", state.matchingId)
outState.putString("confirmationCode", state.confirmationCode)
outState.putString("imei", state.imei)
}
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
state.currentStepFragmentClassName = savedInstanceState.getString(
"currentStepFragmentClassName",
state.currentStepFragmentClassName
)
state.selectedLogicalSlot =
savedInstanceState.getInt("selectedLogicalSlot", state.selectedLogicalSlot)
state.smdp = savedInstanceState.getString("smdp", state.smdp)
state.matchingId = savedInstanceState.getString("matchingId", state.matchingId)
state.imei = savedInstanceState.getString("imei", state.imei)
}
private fun onPrevPressed() {
if (currentFragment?.hasPrev == true) {
val prevFrag = currentFragment?.createPrevFragment()
@ -112,7 +143,13 @@ class DownloadWizardActivity: BaseEuiccAccessActivity() {
override fun onInit() {
progressBar.visibility = View.GONE
showFragment(DownloadWizardSlotSelectFragment())
if (state.currentStepFragmentClassName != null) {
val clazz = Class.forName(state.currentStepFragmentClassName!!)
showFragment(clazz.getDeclaredConstructor().newInstance() as DownloadWizardStepFragment)
} else {
showFragment(DownloadWizardSlotSelectFragment())
}
}
private fun showFragment(

View file

@ -87,7 +87,7 @@ class DownloadWizardSlotSelectFragment : DownloadWizardActivity.DownloadWizardSt
channel.lpa.profiles.find { it.state == LocalProfileInfo.State.Enabled }?.displayName
)
}
}.toList()
}.toList().sortedBy { it.logicalSlotId }
adapter.slots = slots
// Ensure we always have a selected slot by default