From df40aa8455eca5ee7b7af3aed34d1eb4b429e78b Mon Sep 17 00:00:00 2001 From: Leandro Schaguhn Date: Fri, 13 Jun 2025 13:42:04 +0200 Subject: [PATCH 1/3] Added API Key dialog logic --- .../java/de/lelehier/keeper/screens/home_screen.kt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/de/lelehier/keeper/screens/home_screen.kt b/app/src/main/java/de/lelehier/keeper/screens/home_screen.kt index e6928ab..374e3f3 100644 --- a/app/src/main/java/de/lelehier/keeper/screens/home_screen.kt +++ b/app/src/main/java/de/lelehier/keeper/screens/home_screen.kt @@ -100,7 +100,12 @@ fun HomeScreen(paddingValues: PaddingValues) { Spacer(modifier = Modifier.width(12.dp)) AnimatedVisibility(currentScreen == "passwordDialog") { OutlinedButton ( - onClick = {}, + onClick = { + when(currentScreen) { + "passwordDialog" -> {currentScreen = "apiDialog"} + "apidialog" -> {currentScreen = "passwordDialog"} + } + }, modifier = Modifier.padding(top = 24.dp) ) { Row() { @@ -229,11 +234,11 @@ fun PasswordDialog(username: String, password: String, updateUsername: (newUsern @Composable fun ApiDialog(apiKey: String, updateApiKey: (newApiKey: String) -> Unit) { - var dialogApiKey by remember { mutableStateOf("") } + var dialogApiKey by remember { mutableStateOf(apiKey) } Column { OutlinedTextField( modifier = Modifier.fillMaxWidth(), - label = { Text(text = "Password") }, + label = { Text(text = "API Key") }, textStyle = MaterialTheme.typography.bodySmall, value = dialogApiKey, onValueChange = { text -> @@ -245,6 +250,7 @@ fun ApiDialog(apiKey: String, updateApiKey: (newApiKey: String) -> Unit) { } } +@OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable fun LoadingDialog () { CircularWavyProgressIndicator() From 59158e10c7ee55fc85b800835b39a96715732c7c Mon Sep 17 00:00:00 2001 From: Leandro Schaguhn Date: Fri, 13 Jun 2025 13:56:40 +0200 Subject: [PATCH 2/3] remove login padding top/bottom --- .../de/lelehier/keeper/screens/home_screen.kt | 39 +++++++++++-------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/de/lelehier/keeper/screens/home_screen.kt b/app/src/main/java/de/lelehier/keeper/screens/home_screen.kt index 374e3f3..e05c5b6 100644 --- a/app/src/main/java/de/lelehier/keeper/screens/home_screen.kt +++ b/app/src/main/java/de/lelehier/keeper/screens/home_screen.kt @@ -11,6 +11,7 @@ import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.togetherWith import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row @@ -64,7 +65,7 @@ fun HomeScreen(paddingValues: PaddingValues) { .padding(paddingValues) .fillMaxSize() .imePadding() - .padding(all = 56.dp), + .padding(start = 56.dp, end = 56.dp), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center) { Greeting(serverURL, currentScreen); @@ -84,39 +85,42 @@ fun HomeScreen(paddingValues: PaddingValues) { } } - Row ( - horizontalArrangement = Arrangement.SpaceBetween - ) { - AnimatedVisibility(currentScreen == "passwordDialog") { - OutlinedButton ( - onClick = {currentScreen = "serverDialog"}, + AnimatedVisibility(currentScreen == "passwordDialog" || currentScreen == "apiDialog") { + Row( + horizontalArrangement = Arrangement.SpaceBetween + ) { + OutlinedButton( + onClick = { currentScreen = "serverDialog" }, modifier = Modifier.padding(top = 24.dp) ) { Row() { Text(text = "Change Server") } } - } - Spacer(modifier = Modifier.width(12.dp)) - AnimatedVisibility(currentScreen == "passwordDialog") { - OutlinedButton ( + Spacer(modifier = Modifier.width(12.dp)) + OutlinedButton( onClick = { - when(currentScreen) { - "passwordDialog" -> {currentScreen = "apiDialog"} - "apidialog" -> {currentScreen = "passwordDialog"} + when (currentScreen) { + "passwordDialog" -> { + currentScreen = "apiDialog" + } + + "apidialog" -> { + currentScreen = "passwordDialog" + } } }, modifier = Modifier.padding(top = 24.dp) ) { Row() { - when(currentScreen) { + when (currentScreen) { "passwordDialog" -> Text(text = "Use API Key") "apiDialog" -> Text(text = "Use Password") } } } } - } + } Button( onClick = {when(currentScreen) { "serverDialog" -> currentScreen = "passwordDialog" @@ -124,7 +128,8 @@ fun HomeScreen(paddingValues: PaddingValues) { "apiDialog" -> currentScreen = "loadingDialog" "loadingDialog" -> currentScreen = "loadingDialog" }}, - modifier = Modifier.padding(top = 24.dp) + modifier = Modifier + .padding(top = 24.dp) .fillMaxWidth() .height(128.dp), enabled = when(currentScreen) { From 8403bcf9c7382eba9045d221f820baf4de7ba831 Mon Sep 17 00:00:00 2001 From: Leandro Schaguhn Date: Fri, 13 Jun 2025 14:19:23 +0200 Subject: [PATCH 3/3] better padding buttons --- .../java/de/lelehier/keeper/screens/home_screen.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/de/lelehier/keeper/screens/home_screen.kt b/app/src/main/java/de/lelehier/keeper/screens/home_screen.kt index e05c5b6..84c6162 100644 --- a/app/src/main/java/de/lelehier/keeper/screens/home_screen.kt +++ b/app/src/main/java/de/lelehier/keeper/screens/home_screen.kt @@ -70,6 +70,7 @@ fun HomeScreen(paddingValues: PaddingValues) { verticalArrangement = Arrangement.Center) { Greeting(serverURL, currentScreen); AnimatedContent( + modifier = Modifier.padding(bottom = 24.dp), targetState = currentScreen, transitionSpec = { fadeIn( @@ -87,11 +88,13 @@ fun HomeScreen(paddingValues: PaddingValues) { AnimatedVisibility(currentScreen == "passwordDialog" || currentScreen == "apiDialog") { Row( + modifier = Modifier.padding(bottom = 12.dp) + .fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween ) { OutlinedButton( onClick = { currentScreen = "serverDialog" }, - modifier = Modifier.padding(top = 24.dp) + modifier = Modifier.weight(1f) ) { Row() { Text(text = "Change Server") @@ -99,6 +102,7 @@ fun HomeScreen(paddingValues: PaddingValues) { } Spacer(modifier = Modifier.width(12.dp)) OutlinedButton( + modifier = Modifier.weight(1f), onClick = { when (currentScreen) { "passwordDialog" -> { @@ -110,7 +114,6 @@ fun HomeScreen(paddingValues: PaddingValues) { } } }, - modifier = Modifier.padding(top = 24.dp) ) { Row() { when (currentScreen) { @@ -129,9 +132,8 @@ fun HomeScreen(paddingValues: PaddingValues) { "loadingDialog" -> currentScreen = "loadingDialog" }}, modifier = Modifier - .padding(top = 24.dp) .fillMaxWidth() - .height(128.dp), + .height(96.dp), enabled = when(currentScreen) { "serverDialog" -> isValidUrl(serverURL) "passwordDialog" -> username.isNotEmpty() && password.isNotEmpty()