diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/BunkerMultiEventHomeScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/BunkerMultiEventHomeScreen.kt index dd800f07..0a79e4a5 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/BunkerMultiEventHomeScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/BunkerMultiEventHomeScreen.kt @@ -18,6 +18,7 @@ import androidx.compose.material3.Checkbox import androidx.compose.material3.CheckboxDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text +import androidx.compose.material3.TriStateCheckbox import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -29,6 +30,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource +import androidx.compose.ui.state.ToggleableState import androidx.compose.ui.text.capitalize import androidx.compose.ui.text.intl.Locale import androidx.compose.ui.text.toLowerCase @@ -113,6 +115,30 @@ fun BunkerMultiEventHomeScreen( SigningAs(accountParam) + val allCheckedState = when { + bunkerRequests.all { it.checked.value } -> ToggleableState.On + bunkerRequests.none { it.checked.value } -> ToggleableState.Off + else -> ToggleableState.Indeterminate + } + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .fillMaxWidth() + .clickable { + val newValue = allCheckedState != ToggleableState.On + bunkerRequests.forEach { it.checked.value = newValue } + }, + ) { + TriStateCheckbox( + state = allCheckedState, + onClick = { + val newValue = allCheckedState != ToggleableState.On + bunkerRequests.forEach { it.checked.value = newValue } + }, + ) + Text(stringResource(R.string.select_deselect_all)) + } + Column( Modifier .weight(1f) diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/IntentMultiEventHomeScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/IntentMultiEventHomeScreen.kt index 719f48c7..a707e1be 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/IntentMultiEventHomeScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/IntentMultiEventHomeScreen.kt @@ -20,6 +20,7 @@ import androidx.compose.material3.Checkbox import androidx.compose.material3.CheckboxDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text +import androidx.compose.material3.TriStateCheckbox import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -31,6 +32,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource +import androidx.compose.ui.state.ToggleableState import androidx.compose.ui.text.capitalize import androidx.compose.ui.text.intl.Locale import androidx.compose.ui.text.toLowerCase @@ -121,6 +123,30 @@ fun IntentMultiEventHomeScreen( SigningAs(accountParam) + val allCheckedState = when { + intents.all { it.checked.value } -> ToggleableState.On + intents.none { it.checked.value } -> ToggleableState.Off + else -> ToggleableState.Indeterminate + } + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .fillMaxWidth() + .clickable { + val newValue = allCheckedState != ToggleableState.On + intents.forEach { it.checked.value = newValue } + }, + ) { + TriStateCheckbox( + state = allCheckedState, + onClick = { + val newValue = allCheckedState != ToggleableState.On + intents.forEach { it.checked.value = newValue } + }, + ) + Text(stringResource(R.string.select_deselect_all)) + } + Column( Modifier .weight(1f)