Skip to content

Commit 6081b7e

Browse files
Replace landscape and portrait logic with sceen width logic (#4915)
1 parent b4b4f75 commit 6081b7e

File tree

14 files changed

+186
-119
lines changed

14 files changed

+186
-119
lines changed

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ dependencies {
226226
implementation(platform(libs.androidx.compose.bom))
227227
implementation(libs.androidx.compose.animation)
228228
implementation(libs.androidx.compose.material3)
229+
implementation(libs.androidx.compose.material3.adaptive)
229230
implementation(libs.androidx.compose.runtime)
230231
implementation(libs.androidx.compose.ui)
231232
implementation(libs.androidx.compose.ui.graphics)

app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/accountsetup/SetupAutofillScreen.kt

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.x8bit.bitwarden.ui.auth.feature.accountsetup
22

3-
import android.content.res.Configuration
43
import androidx.compose.foundation.layout.Column
54
import androidx.compose.foundation.layout.Row
65
import androidx.compose.foundation.layout.Spacer
@@ -23,7 +22,6 @@ import androidx.compose.ui.Alignment
2322
import androidx.compose.ui.Modifier
2423
import androidx.compose.ui.draw.clip
2524
import androidx.compose.ui.input.nestedscroll.nestedScroll
26-
import androidx.compose.ui.platform.LocalConfiguration
2725
import androidx.compose.ui.res.stringResource
2826
import androidx.compose.ui.text.style.TextAlign
2927
import androidx.compose.ui.tooling.preview.Preview
@@ -48,8 +46,9 @@ import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenSwitch
4846
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
4947
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
5048
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
49+
import com.x8bit.bitwarden.ui.platform.model.WindowSize
5150
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
52-
import com.x8bit.bitwarden.ui.platform.util.isPortrait
51+
import com.x8bit.bitwarden.ui.platform.util.rememberWindowSize
5352

5453
/**
5554
* Top level composable for the Auto-fill setup screen.
@@ -198,21 +197,24 @@ private fun SetupAutoFillContent(
198197
@Composable
199198
private fun SetupAutoFillContentHeader(
200199
modifier: Modifier = Modifier,
201-
configuration: Configuration = LocalConfiguration.current,
202200
) {
203-
if (configuration.isPortrait) {
204-
Column(
205-
modifier = modifier,
206-
horizontalAlignment = Alignment.CenterHorizontally,
207-
) {
208-
OrderedHeaderContent()
201+
when (rememberWindowSize()) {
202+
WindowSize.Compact -> {
203+
Column(
204+
modifier = modifier,
205+
horizontalAlignment = Alignment.CenterHorizontally,
206+
) {
207+
OrderedHeaderContent()
208+
}
209209
}
210-
} else {
211-
Row(
212-
modifier = modifier,
213-
verticalAlignment = Alignment.CenterVertically,
214-
) {
215-
OrderedHeaderContent()
210+
211+
WindowSize.Medium -> {
212+
Row(
213+
modifier = modifier,
214+
verticalAlignment = Alignment.CenterVertically,
215+
) {
216+
OrderedHeaderContent()
217+
}
216218
}
217219
}
218220
}

app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/accountsetup/SetupUnlockScreen.kt

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.x8bit.bitwarden.ui.auth.feature.accountsetup
22

3-
import android.content.res.Configuration
43
import androidx.compose.foundation.Image
54
import androidx.compose.foundation.layout.Column
65
import androidx.compose.foundation.layout.ColumnScope
@@ -28,7 +27,6 @@ import androidx.compose.runtime.setValue
2827
import androidx.compose.ui.Alignment
2928
import androidx.compose.ui.Modifier
3029
import androidx.compose.ui.input.nestedscroll.nestedScroll
31-
import androidx.compose.ui.platform.LocalConfiguration
3230
import androidx.compose.ui.platform.testTag
3331
import androidx.compose.ui.res.stringResource
3432
import androidx.compose.ui.text.style.TextAlign
@@ -54,8 +52,9 @@ import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
5452
import com.x8bit.bitwarden.ui.platform.composition.LocalBiometricsManager
5553
import com.x8bit.bitwarden.ui.platform.manager.biometrics.BiometricSupportStatus
5654
import com.x8bit.bitwarden.ui.platform.manager.biometrics.BiometricsManager
55+
import com.x8bit.bitwarden.ui.platform.model.WindowSize
5756
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
58-
import com.x8bit.bitwarden.ui.platform.util.isPortrait
57+
import com.x8bit.bitwarden.ui.platform.util.rememberWindowSize
5958

6059
/**
6160
* Top level composable for the setup unlock screen.
@@ -146,15 +145,13 @@ private fun SetupUnlockScreenContent(
146145
handler: SetupUnlockHandler,
147146
modifier: Modifier = Modifier,
148147
biometricsManager: BiometricsManager,
149-
config: Configuration = LocalConfiguration.current,
150148
) {
151149
Column(
152150
modifier = modifier.verticalScroll(state = rememberScrollState()),
153151
) {
154-
if (config.isPortrait) {
155-
SetupUnlockHeaderPortrait()
156-
} else {
157-
SetupUnlockHeaderLandscape()
152+
when (rememberWindowSize()) {
153+
WindowSize.Compact -> SetupUnlockHeaderCompact()
154+
WindowSize.Medium -> SetupUnlockHeaderMedium()
158155
}
159156

160157
Spacer(modifier = Modifier.height(height = 24.dp))
@@ -243,7 +240,7 @@ private fun SetUpLaterButton(
243240
}
244241

245242
@Composable
246-
private fun ColumnScope.SetupUnlockHeaderPortrait() {
243+
private fun ColumnScope.SetupUnlockHeaderCompact() {
247244
Spacer(modifier = Modifier.height(height = 32.dp))
248245
Image(
249246
painter = rememberVectorPainter(id = R.drawable.account_setup),
@@ -281,7 +278,7 @@ private fun ColumnScope.SetupUnlockHeaderPortrait() {
281278
}
282279

283280
@Composable
284-
private fun SetupUnlockHeaderLandscape(
281+
private fun SetupUnlockHeaderMedium(
285282
modifier: Modifier = Modifier,
286283
) {
287284
Row(

app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/completeregistration/CompleteRegistrationScreen.kt

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.x8bit.bitwarden.ui.auth.feature.completeregistration
22

3-
import android.content.res.Configuration
43
import android.widget.Toast
54
import androidx.activity.compose.BackHandler
65
import androidx.compose.foundation.Image
@@ -27,7 +26,6 @@ import androidx.compose.runtime.setValue
2726
import androidx.compose.ui.Alignment
2827
import androidx.compose.ui.Modifier
2928
import androidx.compose.ui.input.nestedscroll.nestedScroll
30-
import androidx.compose.ui.platform.LocalConfiguration
3129
import androidx.compose.ui.platform.LocalContext
3230
import androidx.compose.ui.platform.testTag
3331
import androidx.compose.ui.res.stringResource
@@ -57,8 +55,9 @@ import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
5755
import com.x8bit.bitwarden.ui.platform.components.text.BitwardenClickableText
5856
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenSwitch
5957
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
58+
import com.x8bit.bitwarden.ui.platform.model.WindowSize
6059
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
61-
import com.x8bit.bitwarden.ui.platform.util.isPortrait
60+
import com.x8bit.bitwarden.ui.platform.util.rememberWindowSize
6261

6362
/**
6463
* Top level composable for the complete registration screen.
@@ -341,21 +340,24 @@ private fun CompleteRegistrationContent(
341340
@Composable
342341
private fun CompleteRegistrationContentHeader(
343342
modifier: Modifier = Modifier,
344-
configuration: Configuration = LocalConfiguration.current,
345343
) {
346-
if (configuration.isPortrait) {
347-
Column(
348-
modifier = modifier,
349-
horizontalAlignment = Alignment.CenterHorizontally,
350-
) {
351-
OrderedHeaderContent()
344+
when (rememberWindowSize()) {
345+
WindowSize.Compact -> {
346+
Column(
347+
modifier = modifier,
348+
horizontalAlignment = Alignment.CenterHorizontally,
349+
) {
350+
OrderedHeaderContent()
351+
}
352352
}
353-
} else {
354-
Row(
355-
modifier = modifier,
356-
verticalAlignment = Alignment.CenterVertically,
357-
) {
358-
OrderedHeaderContent()
353+
354+
WindowSize.Medium -> {
355+
Row(
356+
modifier = modifier,
357+
verticalAlignment = Alignment.CenterVertically,
358+
) {
359+
OrderedHeaderContent()
360+
}
359361
}
360362
}
361363
}

app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/welcome/WelcomeScreen.kt

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import androidx.compose.runtime.remember
3030
import androidx.compose.ui.Alignment
3131
import androidx.compose.ui.Modifier
3232
import androidx.compose.ui.draw.clip
33-
import androidx.compose.ui.platform.LocalConfiguration
3433
import androidx.compose.ui.platform.testTag
3534
import androidx.compose.ui.res.stringResource
3635
import androidx.compose.ui.semantics.clearAndSetSemantics
@@ -48,13 +47,14 @@ import com.x8bit.bitwarden.ui.platform.components.button.BitwardenFilledButton
4847
import com.x8bit.bitwarden.ui.platform.components.button.BitwardenOutlinedButton
4948
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
5049
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
50+
import com.x8bit.bitwarden.ui.platform.model.WindowSize
5151
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
52-
import com.x8bit.bitwarden.ui.platform.util.isPortrait
52+
import com.x8bit.bitwarden.ui.platform.util.rememberWindowSize
5353

5454
/**
5555
* The custom horizontal margin that is specific to this screen.
5656
*/
57-
private val LANDSCAPE_HORIZONTAL_MARGIN: Dp = 128.dp
57+
private val HORIZONTAL_MARGIN_MEDIUM: Dp = 128.dp
5858

5959
/**
6060
* Top level composable for the welcome screen.
@@ -106,6 +106,7 @@ fun WelcomeScreen(
106106
}
107107
}
108108

109+
@Suppress("LongMethod")
109110
@Composable
110111
private fun WelcomeScreenContent(
111112
state: WelcomeState,
@@ -119,7 +120,6 @@ private fun WelcomeScreenContent(
119120
LaunchedEffect(pagerState.currentPage) {
120121
onPagerSwipe(pagerState.currentPage)
121122
}
122-
123123
Column(
124124
horizontalAlignment = Alignment.CenterHorizontally,
125125
modifier = modifier.verticalScroll(rememberScrollState()),
@@ -132,17 +132,21 @@ private fun WelcomeScreenContent(
132132
val pagerSemanticsModifier = Modifier.semantics(mergeDescendants = true) {
133133
contentDescription = pageNumberContentDescription
134134
}
135-
if (LocalConfiguration.current.isPortrait) {
136-
WelcomeCardPortrait(
137-
state = state.pages[index],
138-
modifier = pagerSemanticsModifier.standardHorizontalMargin(),
139-
)
140-
} else {
141-
WelcomeCardLandscape(
142-
state = state.pages[index],
143-
modifier = pagerSemanticsModifier
144-
.standardHorizontalMargin(landscape = LANDSCAPE_HORIZONTAL_MARGIN),
145-
)
135+
when (rememberWindowSize()) {
136+
WindowSize.Compact -> {
137+
WelcomeCardCompact(
138+
state = state.pages[index],
139+
modifier = pagerSemanticsModifier.standardHorizontalMargin(),
140+
)
141+
}
142+
143+
WindowSize.Medium -> {
144+
WelcomeCardMedium(
145+
state = state.pages[index],
146+
modifier = pagerSemanticsModifier
147+
.standardHorizontalMargin(medium = HORIZONTAL_MARGIN_MEDIUM),
148+
)
149+
}
146150
}
147151
}
148152

@@ -161,7 +165,7 @@ private fun WelcomeScreenContent(
161165
label = stringResource(id = R.string.create_account),
162166
onClick = onCreateAccountClick,
163167
modifier = Modifier
164-
.standardHorizontalMargin(landscape = LANDSCAPE_HORIZONTAL_MARGIN)
168+
.standardHorizontalMargin(medium = HORIZONTAL_MARGIN_MEDIUM)
165169
.fillMaxWidth()
166170
.testTag("ChooseAccountCreationButton"),
167171
)
@@ -170,7 +174,7 @@ private fun WelcomeScreenContent(
170174
label = stringResource(id = R.string.log_in_verb),
171175
onClick = onLoginClick,
172176
modifier = Modifier
173-
.standardHorizontalMargin(landscape = LANDSCAPE_HORIZONTAL_MARGIN)
177+
.standardHorizontalMargin(medium = HORIZONTAL_MARGIN_MEDIUM)
174178
.fillMaxWidth()
175179
.testTag("ChooseLoginButton"),
176180
)
@@ -181,7 +185,7 @@ private fun WelcomeScreenContent(
181185
}
182186

183187
@Composable
184-
private fun WelcomeCardLandscape(
188+
private fun WelcomeCardMedium(
185189
state: WelcomeState.WelcomeCard,
186190
modifier: Modifier = Modifier,
187191
) {
@@ -218,7 +222,7 @@ private fun WelcomeCardLandscape(
218222
}
219223

220224
@Composable
221-
private fun WelcomeCardPortrait(
225+
private fun WelcomeCardCompact(
222226
state: WelcomeState.WelcomeCard,
223227
modifier: Modifier = Modifier,
224228
) {

0 commit comments

Comments
 (0)