Compare commits

..

3 commits

View file

@ -11,6 +11,7 @@ import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut import androidx.compose.animation.fadeOut
import androidx.compose.animation.togetherWith import androidx.compose.animation.togetherWith
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
@ -64,11 +65,12 @@ fun HomeScreen(paddingValues: PaddingValues) {
.padding(paddingValues) .padding(paddingValues)
.fillMaxSize() .fillMaxSize()
.imePadding() .imePadding()
.padding(all = 56.dp), .padding(start = 56.dp, end = 56.dp),
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center) { verticalArrangement = Arrangement.Center) {
Greeting(serverURL, currentScreen); Greeting(serverURL, currentScreen);
AnimatedContent( AnimatedContent(
modifier = Modifier.padding(bottom = 24.dp),
targetState = currentScreen, targetState = currentScreen,
transitionSpec = { transitionSpec = {
fadeIn( fadeIn(
@ -84,27 +86,37 @@ fun HomeScreen(paddingValues: PaddingValues) {
} }
} }
Row ( AnimatedVisibility(currentScreen == "passwordDialog" || currentScreen == "apiDialog") {
Row(
modifier = Modifier.padding(bottom = 12.dp)
.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween horizontalArrangement = Arrangement.SpaceBetween
) { ) {
AnimatedVisibility(currentScreen == "passwordDialog") { OutlinedButton(
OutlinedButton ( onClick = { currentScreen = "serverDialog" },
onClick = {currentScreen = "serverDialog"}, modifier = Modifier.weight(1f)
modifier = Modifier.padding(top = 24.dp)
) { ) {
Row() { Row() {
Text(text = "Change Server") Text(text = "Change Server")
} }
} }
}
Spacer(modifier = Modifier.width(12.dp)) Spacer(modifier = Modifier.width(12.dp))
AnimatedVisibility(currentScreen == "passwordDialog") { OutlinedButton(
OutlinedButton ( modifier = Modifier.weight(1f),
onClick = {}, onClick = {
modifier = Modifier.padding(top = 24.dp) when (currentScreen) {
"passwordDialog" -> {
currentScreen = "apiDialog"
}
"apidialog" -> {
currentScreen = "passwordDialog"
}
}
},
) { ) {
Row() { Row() {
when(currentScreen) { when (currentScreen) {
"passwordDialog" -> Text(text = "Use API Key") "passwordDialog" -> Text(text = "Use API Key")
"apiDialog" -> Text(text = "Use Password") "apiDialog" -> Text(text = "Use Password")
} }
@ -119,9 +131,9 @@ fun HomeScreen(paddingValues: PaddingValues) {
"apiDialog" -> currentScreen = "loadingDialog" "apiDialog" -> currentScreen = "loadingDialog"
"loadingDialog" -> currentScreen = "loadingDialog" "loadingDialog" -> currentScreen = "loadingDialog"
}}, }},
modifier = Modifier.padding(top = 24.dp) modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.height(128.dp), .height(96.dp),
enabled = when(currentScreen) { enabled = when(currentScreen) {
"serverDialog" -> isValidUrl(serverURL) "serverDialog" -> isValidUrl(serverURL)
"passwordDialog" -> username.isNotEmpty() && password.isNotEmpty() "passwordDialog" -> username.isNotEmpty() && password.isNotEmpty()
@ -229,11 +241,11 @@ fun PasswordDialog(username: String, password: String, updateUsername: (newUsern
@Composable @Composable
fun ApiDialog(apiKey: String, updateApiKey: (newApiKey: String) -> Unit) { fun ApiDialog(apiKey: String, updateApiKey: (newApiKey: String) -> Unit) {
var dialogApiKey by remember { mutableStateOf("") } var dialogApiKey by remember { mutableStateOf(apiKey) }
Column { Column {
OutlinedTextField( OutlinedTextField(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
label = { Text(text = "Password") }, label = { Text(text = "API Key") },
textStyle = MaterialTheme.typography.bodySmall, textStyle = MaterialTheme.typography.bodySmall,
value = dialogApiKey, value = dialogApiKey,
onValueChange = { text -> onValueChange = { text ->
@ -245,6 +257,7 @@ fun ApiDialog(apiKey: String, updateApiKey: (newApiKey: String) -> Unit) {
} }
} }
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
@Composable @Composable
fun LoadingDialog () { fun LoadingDialog () {
CircularWavyProgressIndicator() CircularWavyProgressIndicator()