Compare commits

..

4 commits

Author SHA1 Message Date
4fb59a4b01 ui: Fixup strings for eSIM slot selection
All checks were successful
/ build-debug (push) Successful in 5m4s
2024-11-17 19:17:29 -05:00
16636988b0 ui: Fixup loaded state 2024-11-17 19:15:42 -05:00
93e7297caa ui: Implement single selection for new wizard 2024-11-17 19:14:00 -05:00
1087a676d4 ui: Fix slot item alignment in new wizard 2024-11-17 19:04:41 -05:00
4 changed files with 37 additions and 9 deletions

View file

@ -80,7 +80,7 @@ class DownloadWizardActivity: BaseEuiccAccessActivity() {
} else { } else {
View.GONE View.GONE
} }
prevButton.visibility = if (it.hasNext) { prevButton.visibility = if (it.hasPrev) {
View.VISIBLE View.VISIBLE
} else { } else {
View.GONE View.GONE

View file

@ -5,8 +5,10 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.CheckBox
import android.widget.TextView import android.widget.TextView
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.recyclerview.widget.RecyclerView.ViewHolder
@ -51,6 +53,7 @@ class DownloadWizardSlotSelectFragment : DownloadWizardActivity.DownloadWizardSt
recyclerView.adapter = adapter recyclerView.adapter = adapter
recyclerView.layoutManager = recyclerView.layoutManager =
LinearLayoutManager(view.context, LinearLayoutManager.VERTICAL, false) LinearLayoutManager(view.context, LinearLayoutManager.VERTICAL, false)
recyclerView.addItemDecoration(DividerItemDecoration(requireContext(), LinearLayoutManager.VERTICAL))
return view return view
} }
@ -76,33 +79,55 @@ class DownloadWizardSlotSelectFragment : DownloadWizardActivity.DownloadWizardSt
adapter.slots = slots adapter.slots = slots
adapter.notifyDataSetChanged() adapter.notifyDataSetChanged()
hideProgressBar() hideProgressBar()
loaded = true
refreshButtons() refreshButtons()
} }
private class SlotItemHolder(val root: View) : ViewHolder(root) { private class SlotItemHolder(val adapter: SlotInfoAdapter, val root: View) : ViewHolder(root) {
private val title = root.requireViewById<TextView>(R.id.slot_item_title) private val title = root.requireViewById<TextView>(R.id.slot_item_title)
private val eID = root.requireViewById<TextView>(R.id.slot_item_eid) private val eID = root.requireViewById<TextView>(R.id.slot_item_eid)
private val activeProfile = root.requireViewById<TextView>(R.id.slot_item_active_profile) private val activeProfile = root.requireViewById<TextView>(R.id.slot_item_active_profile)
private val checkBox = root.requireViewById<CheckBox>(R.id.slot_checkbox)
fun bind(item: SlotInfo) { private var curIdx = -1
init {
root.setOnClickListener(this::onSelect)
checkBox.setOnClickListener(this::onSelect)
}
@Suppress("UNUSED_PARAMETER")
fun onSelect(view: View) {
if (curIdx < 0) return
if (adapter.currentSelectedIdx == curIdx) return
val lastIdx = adapter.currentSelectedIdx
adapter.currentSelectedIdx = curIdx
adapter.notifyItemChanged(lastIdx)
adapter.notifyItemChanged(curIdx)
}
fun bind(item: SlotInfo, idx: Int) {
curIdx = idx
title.text = root.context.getString(R.string.download_wizard_slot_title, item.logicalSlotId) title.text = root.context.getString(R.string.download_wizard_slot_title, item.logicalSlotId)
eID.text = item.eID eID.text = item.eID
activeProfile.text = item.enabledProfileName ?: root.context.getString(R.string.unknown) activeProfile.text = item.enabledProfileName ?: root.context.getString(R.string.unknown)
checkBox.isChecked = adapter.currentSelectedIdx == idx
} }
} }
private class SlotInfoAdapter : RecyclerView.Adapter<SlotItemHolder>() { private class SlotInfoAdapter : RecyclerView.Adapter<SlotItemHolder>() {
var slots: List<SlotInfo> = listOf() var slots: List<SlotInfo> = listOf()
var currentSelectedIdx = 0
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SlotItemHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SlotItemHolder {
val root = LayoutInflater.from(parent.context).inflate(R.layout.download_slot_item, parent, false) val root = LayoutInflater.from(parent.context).inflate(R.layout.download_slot_item, parent, false)
return SlotItemHolder(root) return SlotItemHolder(this, root)
} }
override fun getItemCount(): Int = slots.size override fun getItemCount(): Int = slots.size
override fun onBindViewHolder(holder: SlotItemHolder, position: Int) { override fun onBindViewHolder(holder: SlotItemHolder, position: Int) {
holder.bind(slots[position]) holder.bind(slots[position], position)
} }
} }
} }

View file

@ -3,10 +3,11 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="10sp" android:paddingBottom="20sp"
android:layout_marginTop="10sp" android:paddingTop="10sp"
android:paddingStart="20sp" android:paddingStart="20sp"
android:paddingEnd="20sp"> android:paddingEnd="20sp"
android:background="?attr/selectableItemBackground">
<TextView <TextView
android:id="@+id/slot_item_title" android:id="@+id/slot_item_title"
@ -22,6 +23,7 @@
android:id="@+id/slot_item_eid_label" android:id="@+id/slot_item_eid_label"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minWidth="100dp"
android:text="@string/download_wizard_slot_eid" android:text="@string/download_wizard_slot_eid"
android:textSize="14sp" /> android:textSize="14sp" />
@ -35,6 +37,7 @@
android:id="@+id/slot_item_active_profile_label" android:id="@+id/slot_item_active_profile_label"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minWidth="100dp"
android:text="@string/download_wizard_slot_active_profile" android:text="@string/download_wizard_slot_active_profile"
android:textSize="14sp" /> android:textSize="14sp" />

View file

@ -61,7 +61,7 @@
<string name="download_wizard">Download Wizard</string> <string name="download_wizard">Download Wizard</string>
<string name="download_wizard_back">Back</string> <string name="download_wizard_back">Back</string>
<string name="download_wizard_next">Next</string> <string name="download_wizard_next">Next</string>
<string name="download_wizard_slot_select">Select an eSIM slot:</string> <string name="download_wizard_slot_select">Confirm the eSIM slot:</string>
<string name="download_wizard_slot_title">Logical slot %d</string> <string name="download_wizard_slot_title">Logical slot %d</string>
<string name="download_wizard_slot_eid">eID:</string> <string name="download_wizard_slot_eid">eID:</string>
<string name="download_wizard_slot_active_profile">Active Profile:</string> <string name="download_wizard_slot_active_profile">Active Profile:</string>