From e70c10adbd8e20f42f68b0d0b3de27aa5f84e03a Mon Sep 17 00:00:00 2001 From: Ax333l Date: Fri, 20 Oct 2023 23:02:35 +0200 Subject: [PATCH] feat: add checkboxes to the downloaded apps page --- .../settings/DownloadsSettingsScreen.kt | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/app/revanced/manager/ui/screen/settings/DownloadsSettingsScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/settings/DownloadsSettingsScreen.kt index f13a5dfd..aef44091 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/settings/DownloadsSettingsScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/settings/DownloadsSettingsScreen.kt @@ -8,6 +8,7 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Delete +import androidx.compose.material3.Checkbox import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -66,12 +67,20 @@ fun DownloadsSettingsScreen( GroupHeader(stringResource(R.string.downloaded_apps)) - downloadedApps.forEach { + downloadedApps.forEach { app -> + val selected = app in viewModel.selection + ListItem( - modifier = Modifier.clickable { viewModel.toggleItem(it) }, - headlineContent = { Text(it.packageName) }, - supportingContent = { Text(it.version) }, - tonalElevation = if (viewModel.selection.contains(it)) 8.dp else 0.dp + modifier = Modifier.clickable { viewModel.toggleItem(app) }, + headlineContent = { Text(app.packageName) }, + leadingContent = (@Composable { + Checkbox( + checked = selected, + onCheckedChange = { viewModel.toggleItem(app) } + ) + }).takeIf { viewModel.selection.isNotEmpty() }, + supportingContent = { Text(app.version) }, + tonalElevation = if (selected) 8.dp else 0.dp ) } }