Skip to content

Commit c869a2c

Browse files
committed
Review: Factorize top padding and window insets of top bars
1 parent c656960 commit c869a2c

File tree

10 files changed

+44
-32
lines changed

10 files changed

+44
-32
lines changed

app/src/main/java/com/orange/ouds/app/ui/about/AboutFileScreen.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,18 @@ import android.webkit.WebViewClient
2020
import androidx.compose.foundation.isSystemInDarkTheme
2121
import androidx.compose.foundation.layout.WindowInsets
2222
import androidx.compose.foundation.layout.WindowInsetsSides
23-
import androidx.compose.foundation.layout.asPaddingValues
2423
import androidx.compose.foundation.layout.consumeWindowInsets
2524
import androidx.compose.foundation.layout.fillMaxSize
2625
import androidx.compose.foundation.layout.only
2726
import androidx.compose.foundation.layout.statusBars
28-
import androidx.compose.material3.TopAppBarDefaults
2927
import androidx.compose.runtime.Composable
3028
import androidx.compose.ui.Modifier
3129
import androidx.compose.ui.platform.LocalContext
3230
import androidx.compose.ui.viewinterop.AndroidView
3331
import com.orange.ouds.app.ui.utilities.composable.Screen
3432
import com.orange.ouds.app.ui.utilities.injectLightDarkModeCss
3533
import com.orange.ouds.app.ui.utilities.launchUrl
34+
import com.orange.ouds.app.ui.utilities.topBarsTopPadding
3635
import com.orange.ouds.core.theme.OudsTheme
3736
import java.io.BufferedReader
3837
import java.nio.charset.StandardCharsets
@@ -44,7 +43,7 @@ private const val FilePath = "file:///android_res/$FileResourceDir/"
4443
internal fun AboutFileScreen(fileMenuItem: AboutFileMenuItem) {
4544
val context = LocalContext.current
4645
val horizontalPadding = OudsTheme.grids.margin.value
47-
val topPadding = WindowInsets.statusBars.asPaddingValues().calculateTopPadding() + TopAppBarDefaults.TopAppBarExpandedHeight + OudsTheme.spaces.fixed.medium
46+
val topPadding = topBarsTopPadding + OudsTheme.spaces.fixed.medium
4847
val bottomPadding = OudsTheme.spaces.fixed.medium.value
4948
val isSystemInDarkTheme = isSystemInDarkTheme()
5049
Screen {

app/src/main/java/com/orange/ouds/app/ui/about/AboutMaterialComponentsScreen.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,9 @@ import androidx.compose.ui.tooling.preview.PreviewLightDark
146146
import androidx.compose.ui.unit.dp
147147
import com.orange.ouds.app.ui.utilities.composable.AppPreview
148148
import com.orange.ouds.app.ui.utilities.composable.Screen
149+
import com.orange.ouds.app.ui.utilities.consumeTopBarsTopWindowInsets
149150
import com.orange.ouds.app.ui.utilities.listItemHorizontalPadding
150-
import com.orange.ouds.app.ui.utilities.topBarsHeightPadding
151+
import com.orange.ouds.app.ui.utilities.topBarsTopPadding
151152
import com.orange.ouds.core.theme.OudsTheme
152153
import kotlinx.coroutines.CoroutineScope
153154
import kotlinx.coroutines.launch
@@ -168,8 +169,8 @@ fun AboutMaterialComponentsScreen() {
168169
modifier = Modifier
169170
.fillMaxSize()
170171
.verticalScroll(rememberScrollState())
171-
.topBarsHeightPadding()
172-
.padding(bottom = OudsTheme.spaces.fixed.medium)
172+
.consumeTopBarsTopWindowInsets()
173+
.padding(top = topBarsTopPadding, bottom = OudsTheme.spaces.fixed.medium)
173174
) {
174175

175176
// APP BARS

app/src/main/java/com/orange/ouds/app/ui/about/AboutScreen.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@ import com.orange.ouds.app.BuildConfig
4949
import com.orange.ouds.app.R
5050
import com.orange.ouds.app.ui.utilities.composable.AppPreview
5151
import com.orange.ouds.app.ui.utilities.composable.Screen
52+
import com.orange.ouds.app.ui.utilities.consumeTopBarsTopWindowInsets
5253
import com.orange.ouds.app.ui.utilities.listItemHorizontalPadding
54+
import com.orange.ouds.app.ui.utilities.topBarsTopPadding
5355
import com.orange.ouds.core.component.OudsNavigationBarHeight
5456
import com.orange.ouds.core.theme.OudsTheme
5557

@@ -88,9 +90,9 @@ fun AboutScreen(onMenuItemClick: (id: Int) -> Unit) {
8890
val context = LocalContext.current
8991
Screen {
9092
LazyColumn(
91-
modifier = Modifier.consumeWindowInsets(WindowInsets.statusBars.only(WindowInsetsSides.Top)),
93+
modifier = Modifier.consumeTopBarsTopWindowInsets(),
9294
contentPadding = PaddingValues(
93-
top = WindowInsets.statusBars.asPaddingValues().calculateTopPadding() + TopAppBarDefaults.TopAppBarExpandedHeight,
95+
top = topBarsTopPadding,
9496
bottom = OudsTheme.spaces.fixed.medium + OudsNavigationBarHeight
9597
)
9698
) {

app/src/main/java/com/orange/ouds/app/ui/about/AboutVersionsScreen.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ import androidx.compose.ui.tooling.preview.PreviewLightDark
3333
import com.orange.ouds.app.R
3434
import com.orange.ouds.app.ui.utilities.composable.AppPreview
3535
import com.orange.ouds.app.ui.utilities.composable.Screen
36+
import com.orange.ouds.app.ui.utilities.consumeTopBarsTopWindowInsets
3637
import com.orange.ouds.app.ui.utilities.listItemHorizontalPadding
38+
import com.orange.ouds.app.ui.utilities.topBarsTopPadding
3739
import com.orange.ouds.core.theme.OudsTheme
3840
import com.orange.ouds.theme.OudsVersion
3941
import kotlin.reflect.full.declaredMemberProperties
@@ -42,9 +44,9 @@ import kotlin.reflect.full.declaredMemberProperties
4244
fun AboutVersionsScreen() {
4345
Screen {
4446
LazyColumn(
45-
modifier = Modifier.consumeWindowInsets(WindowInsets.statusBars.only(WindowInsetsSides.Top)),
47+
modifier = Modifier.consumeTopBarsTopWindowInsets(),
4648
contentPadding = PaddingValues(
47-
top = WindowInsets.statusBars.asPaddingValues().calculateTopPadding() + TopAppBarDefaults.TopAppBarExpandedHeight,
49+
top = topBarsTopPadding,
4850
bottom = OudsTheme.spaces.fixed.medium
4951
)
5052
) {

app/src/main/java/com/orange/ouds/app/ui/components/ComponentVariantsScreen.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,18 @@ import androidx.compose.ui.tooling.preview.PreviewParameter
3535
import com.orange.ouds.app.ui.utilities.composable.AppPreview
3636
import com.orange.ouds.app.ui.utilities.composable.DetailScreenHeader
3737
import com.orange.ouds.app.ui.utilities.composable.Screen
38+
import com.orange.ouds.app.ui.utilities.consumeTopBarsTopWindowInsets
39+
import com.orange.ouds.app.ui.utilities.topBarsTopPadding
3840
import com.orange.ouds.core.theme.OudsTheme
3941
import com.orange.ouds.foundation.utilities.BasicPreviewParameterProvider
4042

4143
@Composable
4244
fun ComponentVariantsScreen(component: Component, onVariantClick: (id: Long) -> Unit) {
4345
Screen {
4446
LazyColumn(
45-
modifier = Modifier.consumeWindowInsets(WindowInsets.statusBars.only(WindowInsetsSides.Top)),
47+
modifier = Modifier.consumeTopBarsTopWindowInsets(),
4648
contentPadding = PaddingValues(
47-
top = WindowInsets.statusBars.asPaddingValues().calculateTopPadding() + TopAppBarDefaults.TopAppBarExpandedHeight,
49+
top = topBarsTopPadding,
4850
bottom = OudsTheme.spaces.fixed.medium
4951
)
5052
) {

app/src/main/java/com/orange/ouds/app/ui/components/ComponentsScreen.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ import androidx.compose.ui.tooling.preview.PreviewLightDark
2525
import com.orange.ouds.app.ui.utilities.composable.AppPreview
2626
import com.orange.ouds.app.ui.utilities.composable.LargeCard
2727
import com.orange.ouds.app.ui.utilities.composable.Screen
28-
import com.orange.ouds.app.ui.utilities.topBarsHeightPadding
28+
import com.orange.ouds.app.ui.utilities.consumeTopBarsTopWindowInsets
29+
import com.orange.ouds.app.ui.utilities.topBarsTopPadding
2930
import com.orange.ouds.core.component.OudsNavigationBarHeight
3031
import com.orange.ouds.core.theme.OudsTheme
3132

@@ -44,7 +45,8 @@ private fun ComponentsScreen(components: List<Component>, onComponentClick: (Lon
4445
modifier = Modifier
4546
.fillMaxSize()
4647
.verticalScroll(rememberScrollState())
47-
.topBarsHeightPadding()
48+
.consumeTopBarsTopWindowInsets()
49+
.padding(top = topBarsTopPadding)
4850
.padding(vertical = OudsTheme.spaces.fixed.medium, horizontal = OudsTheme.grids.margin)
4951
.padding(bottom = OudsNavigationBarHeight),
5052
verticalArrangement = Arrangement.spacedBy(OudsTheme.spaces.fixed.medium)

app/src/main/java/com/orange/ouds/app/ui/tokens/TokenCategoryDetailScreen.kt

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,16 @@ import androidx.compose.foundation.layout.Column
2727
import androidx.compose.foundation.layout.PaddingValues
2828
import androidx.compose.foundation.layout.Row
2929
import androidx.compose.foundation.layout.Spacer
30-
import androidx.compose.foundation.layout.WindowInsets
31-
import androidx.compose.foundation.layout.WindowInsetsSides
32-
import androidx.compose.foundation.layout.asPaddingValues
33-
import androidx.compose.foundation.layout.consumeWindowInsets
3430
import androidx.compose.foundation.layout.fillMaxWidth
3531
import androidx.compose.foundation.layout.height
36-
import androidx.compose.foundation.layout.only
3732
import androidx.compose.foundation.layout.padding
38-
import androidx.compose.foundation.layout.statusBars
3933
import androidx.compose.foundation.lazy.LazyColumn
4034
import androidx.compose.foundation.lazy.items
4135
import androidx.compose.foundation.shape.RoundedCornerShape
4236
import androidx.compose.material3.ExperimentalMaterial3Api
4337
import androidx.compose.material3.Icon
4438
import androidx.compose.material3.LocalRippleConfiguration
4539
import androidx.compose.material3.Text
46-
import androidx.compose.material3.TopAppBarDefaults
4740
import androidx.compose.runtime.Composable
4841
import androidx.compose.runtime.CompositionLocalProvider
4942
import androidx.compose.runtime.getValue
@@ -73,6 +66,8 @@ import com.orange.ouds.app.ui.utilities.composable.CodeSnippet
7366
import com.orange.ouds.app.ui.utilities.composable.DetailScreenHeader
7467
import com.orange.ouds.app.ui.utilities.composable.ImageIllustration
7568
import com.orange.ouds.app.ui.utilities.composable.Screen
69+
import com.orange.ouds.app.ui.utilities.consumeTopBarsTopWindowInsets
70+
import com.orange.ouds.app.ui.utilities.topBarsTopPadding
7671
import com.orange.ouds.core.theme.OudsBorderStyle
7772
import com.orange.ouds.core.theme.OudsTheme
7873
import com.orange.ouds.core.theme.OudsTypography
@@ -84,9 +79,9 @@ import com.orange.ouds.foundation.utilities.BasicPreviewParameterProvider
8479
fun TokenCategoryDetailScreen(tokenCategory: TokenCategory<*>, onSubcategoryClick: (Long) -> Unit) {
8580
Screen {
8681
LazyColumn(
87-
modifier = Modifier.consumeWindowInsets(WindowInsets.statusBars.only(WindowInsetsSides.Top)),
82+
modifier = Modifier.consumeTopBarsTopWindowInsets(),
8883
contentPadding = PaddingValues(
89-
top = WindowInsets.statusBars.asPaddingValues().calculateTopPadding() + TopAppBarDefaults.TopAppBarExpandedHeight,
84+
top = topBarsTopPadding,
9085
bottom = OudsTheme.spaces.fixed.medium
9186
)
9287
) {

app/src/main/java/com/orange/ouds/app/ui/tokens/TokensScreen.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ import com.orange.ouds.app.ui.utilities.composable.AppPreview
2727
import com.orange.ouds.app.ui.utilities.composable.ImageIllustration
2828
import com.orange.ouds.app.ui.utilities.composable.LargeCard
2929
import com.orange.ouds.app.ui.utilities.composable.Screen
30-
import com.orange.ouds.app.ui.utilities.topBarsHeightPadding
30+
import com.orange.ouds.app.ui.utilities.consumeTopBarsTopWindowInsets
31+
import com.orange.ouds.app.ui.utilities.topBarsTopPadding
3132
import com.orange.ouds.core.component.OudsNavigationBarHeight
3233
import com.orange.ouds.core.theme.OudsTheme
3334

@@ -46,7 +47,8 @@ private fun TokensScreen(tokenCategories: List<TokenCategory<*>>, onTokenCategor
4647
modifier = Modifier
4748
.fillMaxSize()
4849
.verticalScroll(rememberScrollState())
49-
.topBarsHeightPadding()
50+
.consumeTopBarsTopWindowInsets()
51+
.padding(top = topBarsTopPadding)
5052
.padding(vertical = OudsTheme.spaces.fixed.medium, horizontal = OudsTheme.grids.margin)
5153
.padding(bottom = OudsNavigationBarHeight),
5254
verticalArrangement = Arrangement.spacedBy(OudsTheme.spaces.fixed.medium)

app/src/main/java/com/orange/ouds/app/ui/utilities/ModifierExt.kt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@ import androidx.compose.foundation.indication
2020
import androidx.compose.foundation.interaction.MutableInteractionSource
2121
import androidx.compose.foundation.interaction.PressInteraction
2222
import androidx.compose.foundation.layout.WindowInsets
23+
import androidx.compose.foundation.layout.WindowInsetsSides
24+
import androidx.compose.foundation.layout.asPaddingValues
25+
import androidx.compose.foundation.layout.consumeWindowInsets
26+
import androidx.compose.foundation.layout.only
2327
import androidx.compose.foundation.layout.padding
2428
import androidx.compose.foundation.layout.statusBars
25-
import androidx.compose.foundation.layout.windowInsetsPadding
2629
import androidx.compose.material3.TopAppBarDefaults
2730
import androidx.compose.runtime.Composable
2831
import androidx.compose.runtime.getValue
@@ -38,6 +41,7 @@ import androidx.compose.ui.semantics.disabled
3841
import androidx.compose.ui.semantics.onClick
3942
import androidx.compose.ui.semantics.role
4043
import androidx.compose.ui.semantics.semantics
44+
import androidx.compose.ui.unit.Dp
4145
import androidx.compose.ui.unit.dp
4246
import androidx.compose.ui.unit.max
4347
import com.orange.ouds.core.theme.OudsTheme
@@ -101,7 +105,8 @@ fun Modifier.priorityClickable(
101105
}
102106

103107
@Composable
104-
fun Modifier.topBarsHeightPadding(): Modifier {
105-
return windowInsetsPadding(WindowInsets.statusBars)
106-
.padding(top = TopAppBarDefaults.TopAppBarExpandedHeight)
107-
}
108+
fun Modifier.consumeTopBarsTopWindowInsets() = consumeWindowInsets(WindowInsets.statusBars.only(WindowInsetsSides.Top))
109+
110+
val topBarsTopPadding: Dp
111+
@Composable
112+
get() = WindowInsets.statusBars.asPaddingValues().calculateTopPadding() + TopAppBarDefaults.TopAppBarExpandedHeight

app/src/main/java/com/orange/ouds/app/ui/utilities/composable/CustomizationBottomSheet.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@ import androidx.compose.ui.unit.dp
6060
import androidx.lifecycle.compose.LifecycleResumeEffect
6161
import com.orange.ouds.app.R
6262
import com.orange.ouds.app.ui.utilities.LocalThemeDrawableResources
63-
import com.orange.ouds.app.ui.utilities.topBarsHeightPadding
63+
import com.orange.ouds.app.ui.utilities.consumeTopBarsTopWindowInsets
64+
import com.orange.ouds.app.ui.utilities.topBarsTopPadding
6465
import com.orange.ouds.core.theme.OudsTheme
6566
import kotlinx.coroutines.CancellationException
6667
import kotlinx.coroutines.CoroutineScope
@@ -163,7 +164,8 @@ fun CustomizationBottomSheetScaffold(
163164
.verticalScroll(rememberScrollState())
164165
.consumeWindowInsets(innerPadding)
165166
.padding(innerPadding)
166-
.topBarsHeightPadding(),
167+
.consumeTopBarsTopWindowInsets()
168+
.padding(top = topBarsTopPadding),
167169
) {
168170
content()
169171
}

0 commit comments

Comments
 (0)