mirror of
https://github.com/home-assistant/android
synced 2024-10-15 12:32:54 +00:00
Make more onboarding screens scrollable (#2987)
- Fixes not being able to continue as the buttons are off screen
This commit is contained in:
parent
6da455f1be
commit
326ab94652
|
@ -1,12 +1,15 @@
|
||||||
package io.homeassistant.companion.android.onboarding.integration
|
package io.homeassistant.companion.android.onboarding.integration
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.Spacer
|
import androidx.compose.foundation.layout.fillMaxHeight
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.text.KeyboardActions
|
import androidx.compose.foundation.text.KeyboardActions
|
||||||
import androidx.compose.foundation.text.KeyboardOptions
|
import androidx.compose.foundation.text.KeyboardOptions
|
||||||
|
import androidx.compose.foundation.verticalScroll
|
||||||
import androidx.compose.material.Button
|
import androidx.compose.material.Button
|
||||||
import androidx.compose.material.Switch
|
import androidx.compose.material.Switch
|
||||||
import androidx.compose.material.SwitchDefaults
|
import androidx.compose.material.SwitchDefaults
|
||||||
|
@ -37,66 +40,77 @@ fun MobileAppIntegrationView(
|
||||||
onLocationTrackingChanged: (Boolean) -> Unit,
|
onLocationTrackingChanged: (Boolean) -> Unit,
|
||||||
onFinishClicked: () -> Unit
|
onFinishClicked: () -> Unit
|
||||||
) {
|
) {
|
||||||
|
val scrollState = rememberScrollState()
|
||||||
val keyboardController = LocalSoftwareKeyboardController.current
|
val keyboardController = LocalSoftwareKeyboardController.current
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
|
.fillMaxHeight()
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.padding(16.dp)
|
.padding(16.dp)
|
||||||
) {
|
) {
|
||||||
|
Column(
|
||||||
OnboardingHeaderView(
|
modifier = Modifier
|
||||||
icon = if (onboardingViewModel.deviceIsWatch) {
|
.verticalScroll(scrollState)
|
||||||
CommunityMaterial.Icon3.cmd_watch
|
.fillMaxWidth()
|
||||||
} else if (LocalConfiguration.current.screenWidthDp.dp >= 600.dp) {
|
.weight(1f)
|
||||||
CommunityMaterial.Icon3.cmd_tablet
|
) {
|
||||||
} else {
|
OnboardingHeaderView(
|
||||||
CommunityMaterial.Icon.cmd_cellphone
|
icon = if (onboardingViewModel.deviceIsWatch) {
|
||||||
},
|
CommunityMaterial.Icon3.cmd_watch
|
||||||
title = stringResource(id = commonR.string.connect_to_home_assistant)
|
} else if (LocalConfiguration.current.screenWidthDp.dp >= 600.dp) {
|
||||||
)
|
CommunityMaterial.Icon3.cmd_tablet
|
||||||
|
} else {
|
||||||
TextField(
|
CommunityMaterial.Icon.cmd_cellphone
|
||||||
value = onboardingViewModel.deviceName.value,
|
},
|
||||||
onValueChange = { onboardingViewModel.onDeviceNameUpdated(it) },
|
title = stringResource(id = commonR.string.connect_to_home_assistant)
|
||||||
modifier = Modifier.align(Alignment.CenterHorizontally),
|
|
||||||
label = { Text(stringResource(id = commonR.string.device_name)) },
|
|
||||||
singleLine = true,
|
|
||||||
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
|
|
||||||
keyboardActions = KeyboardActions(
|
|
||||||
onDone = {
|
|
||||||
keyboardController?.hide()
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
|
||||||
if (onboardingViewModel.locationTrackingPossible.value) {
|
TextField(
|
||||||
Row {
|
value = onboardingViewModel.deviceName.value,
|
||||||
Text(
|
onValueChange = { onboardingViewModel.onDeviceNameUpdated(it) },
|
||||||
text = stringResource(commonR.string.enable_location_tracking),
|
modifier = Modifier.align(Alignment.CenterHorizontally),
|
||||||
modifier = Modifier
|
label = { Text(stringResource(id = commonR.string.device_name)) },
|
||||||
.align(Alignment.CenterVertically)
|
singleLine = true,
|
||||||
.weight(1f)
|
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
|
||||||
|
keyboardActions = KeyboardActions(
|
||||||
|
onDone = {
|
||||||
|
keyboardController?.hide()
|
||||||
|
}
|
||||||
)
|
)
|
||||||
Switch(
|
)
|
||||||
checked = onboardingViewModel.locationTrackingEnabled,
|
if (onboardingViewModel.locationTrackingPossible.value) {
|
||||||
onCheckedChange = onLocationTrackingChanged,
|
Row {
|
||||||
colors = SwitchDefaults.colors(uncheckedThumbColor = colorResource(commonR.color.colorSwitchUncheckedThumb))
|
Text(
|
||||||
|
text = stringResource(commonR.string.enable_location_tracking),
|
||||||
|
modifier = Modifier
|
||||||
|
.align(Alignment.CenterVertically)
|
||||||
|
.weight(1f)
|
||||||
|
)
|
||||||
|
Switch(
|
||||||
|
checked = onboardingViewModel.locationTrackingEnabled,
|
||||||
|
onCheckedChange = onLocationTrackingChanged,
|
||||||
|
colors = SwitchDefaults.colors(uncheckedThumbColor = colorResource(commonR.color.colorSwitchUncheckedThumb))
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Text(
|
||||||
|
text = stringResource(id = commonR.string.enable_location_tracking_description),
|
||||||
|
fontWeight = FontWeight.Light
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Text(
|
TextButton(onClick = openPrivacyPolicy) {
|
||||||
text = stringResource(id = commonR.string.enable_location_tracking_description),
|
Text(stringResource(id = commonR.string.privacy_url))
|
||||||
fontWeight = FontWeight.Light
|
}
|
||||||
)
|
|
||||||
}
|
}
|
||||||
TextButton(onClick = openPrivacyPolicy) {
|
|
||||||
Text(stringResource(id = commonR.string.privacy_url))
|
Row(
|
||||||
}
|
modifier = Modifier
|
||||||
Spacer(modifier = Modifier.weight(1f))
|
.padding(top = 16.dp)
|
||||||
Button(
|
.fillMaxWidth(),
|
||||||
onClick = onFinishClicked,
|
horizontalArrangement = Arrangement.End
|
||||||
modifier = Modifier.align(Alignment.End)
|
|
||||||
) {
|
) {
|
||||||
Text(stringResource(id = commonR.string.continue_connect))
|
Button(onClick = onFinishClicked) {
|
||||||
|
Text(stringResource(id = commonR.string.continue_connect))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,8 +3,10 @@ package io.homeassistant.companion.android.onboarding.manual
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.text.KeyboardActions
|
import androidx.compose.foundation.text.KeyboardActions
|
||||||
import androidx.compose.foundation.text.KeyboardOptions
|
import androidx.compose.foundation.text.KeyboardOptions
|
||||||
|
import androidx.compose.foundation.verticalScroll
|
||||||
import androidx.compose.material.Button
|
import androidx.compose.material.Button
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
import androidx.compose.material.TextField
|
import androidx.compose.material.TextField
|
||||||
|
@ -28,10 +30,12 @@ fun ManualSetupView(
|
||||||
onboardingViewModel: OnboardingViewModel,
|
onboardingViewModel: OnboardingViewModel,
|
||||||
connectedClicked: () -> Unit
|
connectedClicked: () -> Unit
|
||||||
) {
|
) {
|
||||||
|
val scrollState = rememberScrollState()
|
||||||
val keyboardController = LocalSoftwareKeyboardController.current
|
val keyboardController = LocalSoftwareKeyboardController.current
|
||||||
|
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
|
.verticalScroll(scrollState)
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.padding(16.dp)
|
.padding(16.dp)
|
||||||
) {
|
) {
|
||||||
|
|
Loading…
Reference in a new issue