Skip to content

Commit 4ae90a9

Browse files
committed
refactor: improve landscape layout handling
1 parent 98e2134 commit 4ae90a9

File tree

5 files changed

+33
-9
lines changed

5 files changed

+33
-9
lines changed

app/src/main/kotlin/com/androidvip/sysctlgui/ui/main/MainScreen.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import androidx.compose.animation.slideOutHorizontally
1414
import androidx.compose.animation.slideOutVertically
1515
import androidx.compose.foundation.layout.Row
1616
import androidx.compose.foundation.layout.WindowInsets
17+
import androidx.compose.foundation.layout.navigationBarsPadding
1718
import androidx.compose.foundation.layout.padding
1819
import androidx.compose.material3.ExperimentalMaterial3Api
1920
import androidx.compose.material3.Scaffold
@@ -119,7 +120,9 @@ private fun MainScreenContent(
119120
}
120121

121122
AppNavHost(
122-
modifier = Modifier.weight(1f),
123+
modifier = Modifier
124+
.weight(1f)
125+
.then(if (isLandscape) Modifier.navigationBarsPadding() else Modifier),
123126
innerPadding = innerPadding,
124127
navController = navController,
125128
startDestination = startDestination

app/src/main/kotlin/com/androidvip/sysctlgui/ui/params/edit/EditParamLandscapeContent.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import androidx.compose.foundation.layout.Box
1111
import androidx.compose.foundation.layout.Column
1212
import androidx.compose.foundation.layout.Row
1313
import androidx.compose.foundation.layout.Spacer
14+
import androidx.compose.foundation.layout.displayCutoutPadding
1415
import androidx.compose.foundation.layout.fillMaxSize
1516
import androidx.compose.foundation.layout.padding
1617
import androidx.compose.foundation.layout.width
@@ -86,6 +87,7 @@ internal fun EditParamLandscapeContent(
8687
modifier = Modifier
8788
.fillMaxSize()
8889
.background(MaterialTheme.colorScheme.background)
90+
.displayCutoutPadding()
8991
.padding(16.dp),
9092
horizontalArrangement = Arrangement.spacedBy(16.dp)
9193
) {

app/src/main/kotlin/com/androidvip/sysctlgui/ui/params/edit/EditParamScreen.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ fun EditParamScreen(
9696
onNavigateBack: () -> Unit
9797
) {
9898
val context = LocalContext.current
99-
val state = viewModel.uiState.collectAsStateWithLifecycle()
99+
val state by viewModel.uiState.collectAsStateWithLifecycle()
100100
val taskerListOptions = stringArrayResource(R.array.tasker_lists).toList()
101101
var showSelectTaskerListDialog by rememberSaveable { mutableStateOf(false) }
102102
var selectedOptionIndex by rememberSaveable {
@@ -154,7 +154,7 @@ fun EditParamScreen(
154154

155155
if (isLandscape()) {
156156
EditParamLandscapeContent(
157-
state = state.value,
157+
state = state,
158158
showError = showError,
159159
errorMessage = errorMessage,
160160
onValueApply = {
@@ -177,7 +177,7 @@ fun EditParamScreen(
177177
)
178178
} else {
179179
EditParamContent(
180-
state = state.value,
180+
state = state,
181181
showError = showError,
182182
errorMessage = errorMessage,
183183
onValueApply = {

app/src/main/kotlin/com/androidvip/sysctlgui/ui/presets/ImportPresetScreen.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ import androidx.compose.foundation.layout.Box
1717
import androidx.compose.foundation.layout.Column
1818
import androidx.compose.foundation.layout.IntrinsicSize
1919
import androidx.compose.foundation.layout.Row
20+
import androidx.compose.foundation.layout.displayCutoutPadding
2021
import androidx.compose.foundation.layout.fillMaxHeight
2122
import androidx.compose.foundation.layout.fillMaxSize
2223
import androidx.compose.foundation.layout.fillMaxWidth
2324
import androidx.compose.foundation.layout.height
25+
import androidx.compose.foundation.layout.navigationBarsPadding
2426
import androidx.compose.foundation.layout.padding
2527
import androidx.compose.foundation.layout.size
2628
import androidx.compose.foundation.layout.width
@@ -254,6 +256,7 @@ private fun IncomingPresetsContent(
254256
modifier = Modifier
255257
.fillMaxWidth()
256258
.background(MaterialTheme.colorScheme.surfaceContainer)
259+
.navigationBarsPadding()
257260
.padding(16.dp),
258261
horizontalArrangement = Arrangement.spacedBy(16.dp, Alignment.CenterHorizontally)
259262
) {
@@ -286,7 +289,9 @@ private fun IncomingPresetsLandscapeContent(
286289
onCancelPressed: () -> Unit
287290
) {
288291
Row(
289-
modifier = Modifier.fillMaxSize(),
292+
modifier = Modifier
293+
.fillMaxSize()
294+
.displayCutoutPadding(),
290295
horizontalArrangement = Arrangement.spacedBy(16.dp)
291296
) {
292297
LazyColumn(

app/src/main/kotlin/com/androidvip/sysctlgui/ui/search/SearchScreen.kt

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ import androidx.compose.animation.shrinkHorizontally
1111
import androidx.compose.foundation.clickable
1212
import androidx.compose.foundation.layout.Box
1313
import androidx.compose.foundation.layout.PaddingValues
14+
import androidx.compose.foundation.layout.WindowInsets
15+
import androidx.compose.foundation.layout.asPaddingValues
16+
import androidx.compose.foundation.layout.calculateStartPadding
17+
import androidx.compose.foundation.layout.displayCutout
1418
import androidx.compose.foundation.layout.fillMaxSize
1519
import androidx.compose.foundation.layout.fillMaxWidth
1620
import androidx.compose.foundation.layout.offset
@@ -41,6 +45,7 @@ import androidx.compose.runtime.setValue
4145
import androidx.compose.ui.Alignment
4246
import androidx.compose.ui.Modifier
4347
import androidx.compose.ui.platform.LocalFocusManager
48+
import androidx.compose.ui.platform.LocalLayoutDirection
4449
import androidx.compose.ui.res.painterResource
4550
import androidx.compose.ui.res.stringResource
4651
import androidx.compose.ui.text.font.FontWeight
@@ -160,6 +165,12 @@ private fun SearchScreenContent(
160165
onSearch = onSearch,
161166
expanded = searchActive,
162167
onExpandedChange = onActiveChange,
168+
modifier = Modifier.padding(
169+
start = WindowInsets.displayCutout.asPaddingValues()
170+
.calculateStartPadding(
171+
LocalLayoutDirection.current
172+
)
173+
),
163174
placeholder = { Text(stringResource(R.string.search_title)) },
164175
leadingIcon = {
165176
AnimatedContent(
@@ -193,9 +204,7 @@ private fun SearchScreenContent(
193204
enter = expandHorizontally(expandFrom = Alignment.Start) + fadeIn(),
194205
exit = shrinkHorizontally(shrinkTowards = Alignment.Start) + fadeOut()
195206
) {
196-
IconButton(onClick = {
197-
onSearchQueryChange("")
198-
}) {
207+
IconButton(onClick = { onSearchQueryChange("") }) {
199208
Icon(
200209
painter = painterResource(R.drawable.ic_close),
201210
contentDescription = stringResource(R.string.clear_search)
@@ -266,7 +275,12 @@ private fun SearchViewContent(
266275

267276
LazyVerticalGrid(
268277
columns = hintItemColumns,
269-
modifier = Modifier.fillMaxWidth()
278+
modifier = Modifier
279+
.fillMaxWidth()
280+
.padding(
281+
start = WindowInsets.displayCutout.asPaddingValues()
282+
.calculateStartPadding(LocalLayoutDirection.current)
283+
)
270284
) {
271285
if (historyHints.isNotEmpty()) {
272286
item(

0 commit comments

Comments
 (0)