Use getStorageSize from SpaPrivilegedLib
Bug: 236346018 Test: Manual with "All App" App List Change-Id: If05f334eea365f23e8fc7d7452aed4603c9cdc30
This commit is contained in:
@@ -16,13 +16,10 @@
|
|||||||
|
|
||||||
package com.android.settings.spa.app
|
package com.android.settings.spa.app
|
||||||
|
|
||||||
import android.app.usage.StorageStatsManager
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.pm.ApplicationInfo
|
import android.content.pm.ApplicationInfo
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.text.format.Formatter
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.State
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import com.android.settings.R
|
import com.android.settings.R
|
||||||
import com.android.settings.spa.app.appsettings.AppSettingsProvider
|
import com.android.settings.spa.app.appsettings.AppSettingsProvider
|
||||||
@@ -30,16 +27,14 @@ import com.android.settingslib.spa.framework.common.SettingsEntryBuilder
|
|||||||
import com.android.settingslib.spa.framework.common.SettingsPage
|
import com.android.settingslib.spa.framework.common.SettingsPage
|
||||||
import com.android.settingslib.spa.framework.common.SettingsPageProvider
|
import com.android.settingslib.spa.framework.common.SettingsPageProvider
|
||||||
import com.android.settingslib.spa.framework.compose.navigator
|
import com.android.settingslib.spa.framework.compose.navigator
|
||||||
import com.android.settingslib.spa.framework.compose.rememberContext
|
|
||||||
import com.android.settingslib.spa.framework.compose.toState
|
|
||||||
import com.android.settingslib.spa.framework.util.asyncMapItem
|
import com.android.settingslib.spa.framework.util.asyncMapItem
|
||||||
import com.android.settingslib.spa.widget.preference.Preference
|
import com.android.settingslib.spa.widget.preference.Preference
|
||||||
import com.android.settingslib.spa.widget.preference.PreferenceModel
|
import com.android.settingslib.spa.widget.preference.PreferenceModel
|
||||||
import com.android.settingslib.spaprivileged.model.app.AppListModel
|
import com.android.settingslib.spaprivileged.model.app.AppListModel
|
||||||
import com.android.settingslib.spaprivileged.model.app.AppRecord
|
import com.android.settingslib.spaprivileged.model.app.AppRecord
|
||||||
import com.android.settingslib.spaprivileged.model.app.userHandle
|
|
||||||
import com.android.settingslib.spaprivileged.template.app.AppListItem
|
import com.android.settingslib.spaprivileged.template.app.AppListItem
|
||||||
import com.android.settingslib.spaprivileged.template.app.AppListPage
|
import com.android.settingslib.spaprivileged.template.app.AppListPage
|
||||||
|
import com.android.settingslib.spaprivileged.template.app.getStorageSize
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
object AllAppListPageProvider : SettingsPageProvider {
|
object AllAppListPageProvider : SettingsPageProvider {
|
||||||
@@ -65,7 +60,7 @@ object AllAppListPageProvider : SettingsPageProvider {
|
|||||||
private fun AllAppListPage() {
|
private fun AllAppListPage() {
|
||||||
AppListPage(
|
AppListPage(
|
||||||
title = stringResource(R.string.all_apps),
|
title = stringResource(R.string.all_apps),
|
||||||
listModel = rememberContext(::AllAppListModel),
|
listModel = remember { AllAppListModel() },
|
||||||
showInstantApps = true,
|
showInstantApps = true,
|
||||||
) { itemModel ->
|
) { itemModel ->
|
||||||
AppListItem(
|
AppListItem(
|
||||||
@@ -77,11 +72,9 @@ private fun AllAppListPage() {
|
|||||||
|
|
||||||
data class AppRecordWithSize(
|
data class AppRecordWithSize(
|
||||||
override val app: ApplicationInfo,
|
override val app: ApplicationInfo,
|
||||||
var sizeBytes: Long? = null,
|
|
||||||
) : AppRecord
|
) : AppRecord
|
||||||
|
|
||||||
private class AllAppListModel(private val context: Context) : AppListModel<AppRecordWithSize> {
|
private class AllAppListModel : AppListModel<AppRecordWithSize> {
|
||||||
private val storageStatsManager = context.getSystemService(StorageStatsManager::class.java)!!
|
|
||||||
|
|
||||||
override fun transform(userIdFlow: Flow<Int>, appListFlow: Flow<List<ApplicationInfo>>) =
|
override fun transform(userIdFlow: Flow<Int>, appListFlow: Flow<List<ApplicationInfo>>) =
|
||||||
appListFlow.asyncMapItem { app ->
|
appListFlow.asyncMapItem { app ->
|
||||||
@@ -95,16 +88,5 @@ private class AllAppListModel(private val context: Context) : AppListModel<AppRe
|
|||||||
) = recordListFlow
|
) = recordListFlow
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
override fun getSummary(option: Int, record: AppRecordWithSize): State<String> =
|
override fun getSummary(option: Int, record: AppRecordWithSize) = record.app.getStorageSize()
|
||||||
Formatter.formatFileSize(context, record.calculateSizeBytes()).toState()
|
|
||||||
|
|
||||||
private fun AppRecordWithSize.calculateSizeBytes(): Long {
|
|
||||||
sizeBytes?.let { return it }
|
|
||||||
val stats = storageStatsManager.queryStatsForPackage(
|
|
||||||
app.storageUuid, app.packageName, app.userHandle
|
|
||||||
)
|
|
||||||
return (stats.codeBytes + stats.dataBytes + stats.cacheBytes).also {
|
|
||||||
sizeBytes = it
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user