diff --git a/src/frontends/android/app/src/main/AndroidManifest.xml b/src/frontends/android/app/src/main/AndroidManifest.xml index 36043e64b..2265944ec 100644 --- a/src/frontends/android/app/src/main/AndroidManifest.xml +++ b/src/frontends/android/app/src/main/AndroidManifest.xml @@ -149,7 +149,7 @@ diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/compose/ImportScreen.kt b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/compose/ImportScreen.kt index cef7049d8..8c1bba17d 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/compose/ImportScreen.kt +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/compose/ImportScreen.kt @@ -52,6 +52,8 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp +import androidx.compose.material3.ModalBottomSheet +import androidx.compose.material3.rememberModalBottomSheetState import org.strongswan.android.R import org.strongswan.android.ui.compose.components.ShxCard import org.strongswan.android.ui.compose.theme.ShxSpacing @@ -89,19 +91,28 @@ class ImportUiModel var hideImport by mutableStateOf(false) } -/** Renders the import screen in the transparent import activity. */ +/** Renders the import UI as a bottom sheet in the transparent import activity. */ +@OptIn(ExperimentalMaterial3Api::class) fun ComponentActivity.installImportScreen(model: ImportUiModel, onImport: Runnable, onClose: Runnable, onImportPkcs12: Runnable, onSelectUserCert: Runnable) { setContent { ShxTheme { - ImportScreen( - model = model, - onImport = onImport::run, - onClose = onClose::run, - onImportPkcs12 = onImportPkcs12::run, - onSelectUserCert = onSelectUserCert::run, + /* the activity is a transparent host: the import UI is an Expressive bottom sheet */ + ModalBottomSheet( + onDismissRequest = onClose::run, + sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true), + containerColor = MaterialTheme.colorScheme.background, ) + { + ImportScreen( + model = model, + onImport = onImport::run, + onClose = onClose::run, + onImportPkcs12 = onImportPkcs12::run, + onSelectUserCert = onSelectUserCert::run, + ) + } } } }