diff options
7 files changed, 66 insertions, 68 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/LocationProviderDialogScreen.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/LocationProviderDialogScreen.kt index 691ceae25..ff3c2cbc1 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/LocationProviderDialogScreen.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/LocationProviderDialogScreen.kt @@ -18,49 +18,39 @@ package com.android.permissioncontroller.permission.ui.wear import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import androidx.wear.compose.foundation.SwipeToDismissValue -import androidx.wear.compose.foundation.rememberSwipeToDismissBoxState -import androidx.wear.compose.material.ChipDefaults -import androidx.wear.compose.material.MaterialTheme -import androidx.wear.compose.material.SwipeToDismissBox -import com.android.permissioncontroller.permission.ui.wear.elements.material2.Chip +import androidx.wear.compose.material3.Dialog +import com.android.permissioncontroller.permission.ui.wear.elements.material3.WearPermissionButton +import com.android.permissioncontroller.permission.ui.wear.elements.material3.WearPermissionButtonStyle import com.android.permissioncontroller.permission.ui.wear.elements.material3.WearPermissionScaffold import com.android.permissioncontroller.permission.ui.wear.model.LocationProviderInterceptDialogArgs -import com.android.permissioncontroller.permission.ui.wear.theme.WearPermissionMaterialUIVersion @Composable -fun LocationProviderDialogScreen(args: LocationProviderInterceptDialogArgs?) { - args?.apply { - val state = rememberSwipeToDismissBoxState() - LaunchedEffect(state.currentValue) { - // If the swipe is complete - if (state.currentValue == SwipeToDismissValue.Dismissed) { - onOkButtonClick() - } - } - SwipeToDismissBox(state = state) { isBackground -> +fun LocationProviderDialogScreen( + showDialog: Boolean, + onDismissRequest: () -> Unit, + args: LocationProviderInterceptDialogArgs?, +) { + Dialog(show = showDialog, onDismissRequest = onDismissRequest) { + args?.run { WearPermissionScaffold( - materialUIVersion = WearPermissionMaterialUIVersion.MATERIAL2_5, showTimeText = false, image = iconId, title = stringResource(titleId), subtitle = message, - isLoading = isBackground, + isLoading = false, content = { item { - Chip( + WearPermissionButton( label = stringResource(locationSettingsId), - onClick = onLocationSettingsClick, modifier = Modifier.fillMaxWidth(), - textColor = MaterialTheme.colors.surface, - colors = ChipDefaults.primaryChipColors(), + onClick = onLocationSettingsClick, + style = WearPermissionButtonStyle.Primary, ) } item { - Chip( + WearPermissionButton( label = stringResource(okButtonTitleId), onClick = onOkButtonClick, modifier = Modifier.fillMaxWidth(), diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearAppPermissionGroupsScreen.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearAppPermissionGroupsScreen.kt index 686dd1b62..f21cb7ac2 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearAppPermissionGroupsScreen.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearAppPermissionGroupsScreen.kt @@ -46,6 +46,9 @@ fun WearAppPermissionGroupsScreen(helper: WearAppPermissionGroupsHelper) { helper.locationProviderInterceptDialogViewModel.dialogVisibilityLiveData.observeAsState( false ) + val locationProviderDialogArgs = + helper.locationProviderInterceptDialogViewModel.locationProviderInterceptDialogArgs + .observeAsState(null) var isLoading by remember { mutableStateOf(true) } @@ -60,11 +63,11 @@ fun WearAppPermissionGroupsScreen(helper: WearAppPermissionGroupsHelper) { showDialog = showRevokeDialog.value, args = helper.revokeDialogViewModel.revokeDialogArgs, ) - if (showLocationProviderDialog.value) { - LocationProviderDialogScreen( - helper.locationProviderInterceptDialogViewModel.locationProviderInterceptDialogArgs - ) - } + LocationProviderDialogScreen( + showDialog = showLocationProviderDialog.value, + onDismissRequest = { helper.locationProviderInterceptDialogViewModel.dismissDialog() }, + args = locationProviderDialogArgs.value, + ) } if (isLoading && !packagePermGroups.value.isNullOrEmpty()) { diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearPermissionAppsScreen.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearPermissionAppsScreen.kt index 00ebf2f34..99dffb866 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearPermissionAppsScreen.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearPermissionAppsScreen.kt @@ -46,6 +46,10 @@ fun WearPermissionAppsScreen(helper: WearPermissionAppsHelper) { helper.locationProviderDialogViewModel.dialogVisibilityLiveData.observeAsState(false) val appPermissionUsages = helper.wearViewModel.appPermissionUsages.observeAsState(emptyList()) var isLoading by remember { mutableStateOf(true) } + val dialogArgs = + helper.locationProviderDialogViewModel.locationProviderInterceptDialogArgs.observeAsState( + null + ) val title = helper.getTitle() val subTitle = helper.getSubTitle() @@ -53,21 +57,21 @@ fun WearPermissionAppsScreen(helper: WearPermissionAppsHelper) { val chipsByCategory = helper.getChipsByCategory(categorizedApps.value, appPermissionUsages.value) Box(modifier = Modifier.fillMaxSize()) { - val dialogArgs = helper.locationProviderDialogViewModel.locationProviderInterceptDialogArgs - if (showLocationProviderDialog.value && dialogArgs != null) { - LocationProviderDialogScreen(dialogArgs) - } else { - WearPermissionAppsContent( - chipsByCategory = chipsByCategory, - showSystem = showSystem.value, - hasSystemApps = hasSystemApps.value, - title = title, - subtitle = subTitle, - showAlways = showAlways, - isLoading = isLoading, - onShowSystemClick = helper.onShowSystemClick, - ) - } + WearPermissionAppsContent( + chipsByCategory = chipsByCategory, + showSystem = showSystem.value, + hasSystemApps = hasSystemApps.value, + title = title, + subtitle = subTitle, + showAlways = showAlways, + isLoading = isLoading, + onShowSystemClick = helper.onShowSystemClick, + ) + LocationProviderDialogScreen( + showDialog = showLocationProviderDialog.value, + onDismissRequest = { helper.locationProviderDialogViewModel.dismissDialog() }, + args = dialogArgs.value, + ) } if (isLoading && categorizedApps.value.isNotEmpty()) { isLoading = false @@ -150,6 +154,7 @@ internal fun getCategoryString(category: String, showAlways: Boolean) = } else { R.string.allowed_header } + Category.ALLOWED_FOREGROUND.categoryName -> R.string.allowed_foreground_header Category.ASK.categoryName -> R.string.ask_header Category.DENIED.categoryName -> R.string.denied_header diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material2/Wear2Scaffold.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material2/Wear2Scaffold.kt index 3575b3cff..866b7f012 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material2/Wear2Scaffold.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material2/Wear2Scaffold.kt @@ -142,11 +142,7 @@ fun Wear2Scaffold( if (isLoading) { CircularProgressIndicator(modifier = Modifier.align(Alignment.Center)) } else { - val iconColor = - com.android.permissioncontroller.permission.ui.wear.elements.material2 - .chipDefaultColors() - .iconColor(true) - .value + val iconColor = chipDefaultColors().iconColor(true).value ScalingLazyColumn( modifier = Modifier.fillMaxWidth(), state = listState, @@ -194,15 +190,13 @@ fun Wear2Scaffold( if (titleTestTag != null) { modifier = modifier.testTag(titleTestTag) } - com.android.permissioncontroller.permission.ui.wear.elements - .material2 - .ListHeader(modifier = Modifier.padding(titlePaddingValues)) { - Text( - text = title, - textAlign = TextAlign.Center, - modifier = modifier, - ) - } + ListHeader(modifier = Modifier.padding(titlePaddingValues)) { + Text( + text = title, + textAlign = TextAlign.Center, + modifier = modifier, + ) + } } } if (subtitle != null) { diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionButton.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionButton.kt index 942a420a8..9a89e0809 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionButton.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionButton.kt @@ -34,6 +34,7 @@ import androidx.wear.compose.material3.LocalTextConfiguration import androidx.wear.compose.material3.LocalTextStyle import androidx.wear.compose.material3.Text import com.android.permissioncontroller.permission.ui.wear.elements.material2.Chip +import com.android.permissioncontroller.permission.ui.wear.theme.ResourceHelper import com.android.permissioncontroller.permission.ui.wear.theme.WearPermissionMaterialUIVersion /** @@ -45,8 +46,7 @@ import com.android.permissioncontroller.permission.ui.wear.theme.WearPermissionM fun WearPermissionButton( label: String, modifier: Modifier = Modifier, - materialUIVersion: WearPermissionMaterialUIVersion = - WearPermissionMaterialUIVersion.MATERIAL2_5, + materialUIVersion: WearPermissionMaterialUIVersion = ResourceHelper.materialUIVersionInSettings, iconBuilder: WearPermissionIconBuilder? = null, labelMaxLines: Int? = null, secondaryLabel: String? = null, diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionScaffold.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionScaffold.kt index 98b8facf7..58a14ad5d 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionScaffold.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/material3/WearPermissionScaffold.kt @@ -56,6 +56,7 @@ import com.android.permissioncontroller.permission.ui.wear.elements.AnnotatedTex import com.android.permissioncontroller.permission.ui.wear.elements.ListScopeWrapper import com.android.permissioncontroller.permission.ui.wear.elements.material2.Wear2Scaffold import com.android.permissioncontroller.permission.ui.wear.elements.rememberDrawablePainter +import com.android.permissioncontroller.permission.ui.wear.theme.ResourceHelper import com.android.permissioncontroller.permission.ui.wear.theme.WearPermissionMaterialUIVersion import com.android.permissioncontroller.permission.ui.wear.theme.WearPermissionMaterialUIVersion.MATERIAL2_5 import com.android.permissioncontroller.permission.ui.wear.theme.WearPermissionTheme @@ -79,7 +80,7 @@ private class ScalingScopeConverter(private val scope: ScalingLazyListScope) : L */ @Composable internal fun WearPermissionScaffold( - materialUIVersion: WearPermissionMaterialUIVersion = MATERIAL2_5, + materialUIVersion: WearPermissionMaterialUIVersion = ResourceHelper.materialUIVersionInSettings, showTimeText: Boolean, title: String?, subtitle: CharSequence?, diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/model/WearLocationProviderInterceptDialogViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/model/WearLocationProviderInterceptDialogViewModel.kt index 009ff952c..ec7647f3c 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/model/WearLocationProviderInterceptDialogViewModel.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/model/WearLocationProviderInterceptDialogViewModel.kt @@ -32,10 +32,14 @@ import com.android.permissioncontroller.permission.utils.Utils class WearLocationProviderInterceptDialogViewModel : ViewModel() { private val showDialogLiveData = MutableLiveData<Boolean>() val dialogVisibilityLiveData: LiveData<Boolean> = showDialogLiveData - var locationProviderInterceptDialogArgs: LocationProviderInterceptDialogArgs? = null + private val _locationProviderInterceptDialogArgs = + MutableLiveData<LocationProviderInterceptDialogArgs?>() + var locationProviderInterceptDialogArgs: LiveData<LocationProviderInterceptDialogArgs?> = + _locationProviderInterceptDialogArgs init { showDialogLiveData.value = false + _locationProviderInterceptDialogArgs.value = null } private fun applicationInfo(context: Context, packageName: String): ApplicationInfo? { @@ -51,7 +55,7 @@ class WearLocationProviderInterceptDialogViewModel : ViewModel() { fun showDialog(context: Context, packageName: String) { val applicationInfo = applicationInfo(context, packageName) ?: return val appLabel = Utils.getAppLabel(applicationInfo, context) - locationProviderInterceptDialogArgs = + _locationProviderInterceptDialogArgs.value = LocationProviderInterceptDialogArgs( iconId = R.drawable.ic_dialog_alert_material, titleId = android.R.string.dialog_alert_title, @@ -61,13 +65,13 @@ class WearLocationProviderInterceptDialogViewModel : ViewModel() { onOkButtonClick = { dismissDialog() }, onLocationSettingsClick = { context.startActivity(Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)) - } + }, ) showDialogLiveData.value = true } fun dismissDialog() { - locationProviderInterceptDialogArgs = null + _locationProviderInterceptDialogArgs.value = null showDialogLiveData.value = false } } @@ -75,7 +79,8 @@ class WearLocationProviderInterceptDialogViewModel : ViewModel() { /** Factory for an AppPermissionGroupsRevokeDialogViewModel */ class WearLocationProviderInterceptDialogViewModelFactory : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>): T { - @Suppress("UNCHECKED_CAST") return WearLocationProviderInterceptDialogViewModel() as T + @Suppress("UNCHECKED_CAST") + return WearLocationProviderInterceptDialogViewModel() as T } } @@ -86,5 +91,5 @@ data class LocationProviderInterceptDialogArgs( val okButtonTitleId: Int, val locationSettingsId: Int, val onOkButtonClick: () -> Unit, - val onLocationSettingsClick: () -> Unit + val onLocationSettingsClick: () -> Unit, ) |