Apply display cutout for chat list.

This commit is contained in:
Alex Hart
2025-04-15 15:24:09 -03:00
parent 250ac481c8
commit efac6990c8
3 changed files with 41 additions and 17 deletions

View File

@@ -23,13 +23,17 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.BoxWithConstraintsScope
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.displayCutoutPadding
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi
import androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole
import androidx.compose.material3.adaptive.navigation.rememberListDetailPaneScaffoldNavigator
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.key
@@ -39,7 +43,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.RectangleShape
import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
import androidx.fragment.app.DialogFragment
import androidx.fragment.compose.AndroidFragment
@@ -245,7 +248,7 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
}
}
SignalTheme(isDarkMode = DynamicTheme.isDarkTheme(LocalContext.current)) {
MainContainer {
AppScaffold(
navigator = scaffoldNavigator,
bottomNavContent = {
@@ -339,6 +342,32 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
lifecycleDisposable += vitalsViewModel.vitalsState.subscribe(this::presentVitalsState)
}
@Composable
private fun MainContainer(content: @Composable BoxWithConstraintsScope.() -> Unit) {
val windowSizeClass = WindowSizeClass.rememberWindowSizeClass()
val modifier = if (windowSizeClass.isLandscape()) {
Modifier.displayCutoutPadding()
} else {
Modifier
}
val backgroundColor = if (windowSizeClass.isCompact()) {
MaterialTheme.colorScheme.surface
} else {
SignalTheme.colors.colorSurface1
}
SignalTheme(isDarkMode = DynamicTheme.isDarkTheme(this)) {
BoxWithConstraints(
modifier = Modifier
.background(color = backgroundColor)
.then(modifier)
) {
content()
}
}
}
override fun getIntent(): Intent {
return super.getIntent().setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_SINGLE_TOP)
}