Refresh the DataUsageList when resume

Like when back from AppDataUsage page.

Bug: 295260929
Test: manual - on DataUsageList
Change-Id: I0b1698e47f06cbe731794a2a6b04e9c9ac9450d8
This commit is contained in:
Chaohui Wang
2023-10-14 13:09:24 +08:00
parent 55b8e79016
commit d9a372204b
7 changed files with 33 additions and 58 deletions

View File

@@ -45,7 +45,7 @@ open class DataUsageListHeaderController(
sourceMetricsCategory: Int,
viewLifecycleOwner: LifecycleOwner,
private val onCyclesLoad: (usageDataList: List<NetworkUsageData>) -> Unit,
private val onItemSelected: (usageData: NetworkUsageData) -> Unit,
private val updateSelectedCycle: (usageData: NetworkUsageData) -> Unit,
private val repository: INetworkCycleDataRepository =
NetworkCycleDataRepository(header.context, template),
) {
@@ -53,6 +53,17 @@ open class DataUsageListHeaderController(
private val configureButton: View = header.requireViewById(R.id.filter_settings)
private val cycleSpinner: Spinner = header.requireViewById(R.id.filter_spinner)
private val cycleListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
setSelectedCycle(position)
}
override fun onNothingSelected(parent: AdapterView<*>?) {
// ignored
}
}
private val cycleAdapter = CycleAdapter(context, object : SpinnerInterface {
override fun setAdapter(cycleAdapter: CycleAdapter) {
cycleSpinner.adapter = cycleAdapter
@@ -62,21 +73,15 @@ open class DataUsageListHeaderController(
override fun setSelection(position: Int) {
cycleSpinner.setSelection(position)
}
})
private var cycles: List<NetworkUsageData> = emptyList()
private val cycleListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
if (0 <= position && position < cycleAdapter.count) {
cycles.getOrNull(position)?.let(onItemSelected)
if (cycleSpinner.onItemSelectedListener == null) {
cycleSpinner.onItemSelectedListener = cycleListener
} else {
setSelectedCycle(position)
}
}
})
override fun onNothingSelected(parent: AdapterView<*>?) {
// ignored
}
}
private var cycles: List<NetworkUsageData> = emptyList()
init {
configureButton.setOnClickListener {
@@ -114,11 +119,12 @@ open class DataUsageListHeaderController(
}
private fun updateCycleData() {
cycleSpinner.onItemSelectedListener = cycleListener
// calculate policy cycles based on available data
// generate cycle list based on policy and available history
cycleAdapter.updateCycleList(cycles.map { Range(it.startTime, it.endTime) })
cycleSpinner.visibility = View.VISIBLE
onCyclesLoad(cycles)
}
private fun setSelectedCycle(position: Int) {
cycles.getOrNull(position)?.let(updateSelectedCycle)
}
}