1
Fork 0
mirror of https://github.com/Steffo99/twom.git synced 2024-11-21 23:54:26 +00:00

Start work on building the LoginActivity

This commit is contained in:
Steffo 2023-11-20 03:33:11 +01:00
parent 395ec102c8
commit 02d3fac1db
Signed by: steffo
GPG key ID: 2A24051445686895
6 changed files with 150 additions and 26 deletions

View file

@ -0,0 +1,8 @@
package eu.steffo.twom.ui
import androidx.compose.foundation.layout.padding
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
val BASE_PADDING = Modifier.padding(all = 10.dp)

View file

@ -20,6 +20,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import eu.steffo.twom.R
import eu.steffo.twom.matrix.TwoMMatrix
import eu.steffo.twom.ui.BASE_PADDING
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import org.matrix.android.sdk.api.auth.data.HomeServerConnectionConfig
@ -36,13 +37,11 @@ fun SelectHomeserverControl(
var homeserver by rememberSaveable { mutableStateOf("") }
var state by rememberSaveable { mutableStateOf(SelectHomeserverFieldState.Empty) }
val padding = Modifier.padding(all = 10.dp)
Column(modifier) {
Row(padding) {
Row(BASE_PADDING) {
Text(LocalContext.current.getString(R.string.selecthomeserver_text))
}
Row(padding) {
Row(BASE_PADDING) {
SelectHomeserverField(
modifier = Modifier.fillMaxWidth(),
value = homeserver,
@ -87,13 +86,13 @@ fun SelectHomeserverControl(
state = state,
)
}
Row(padding) {
Row(BASE_PADDING) {
Button(
modifier = Modifier.fillMaxWidth(),
onClick = {
onComplete(homeserver)
},
enabled = (state == SelectHomeserverFieldState.Valid),
modifier = Modifier.fillMaxWidth(),
) {
Text(LocalContext.current.getString(R.string.selecthomeserver_complete_text))
}

View file

@ -22,7 +22,6 @@ import eu.steffo.twom.ui.homeserver.SelectHomeserverActivity
import eu.steffo.twom.ui.theme.TwoMTheme
@OptIn(ExperimentalMaterial3Api::class)
class LoginActivity : ComponentActivity() {
private lateinit var homeserverLauncher: ActivityResultLauncher<Intent>
@ -38,26 +37,11 @@ class LoginActivity : ComponentActivity() {
super.onStart()
setContent {
TwoMTheme {
Scaffold(
topBar = {
TopAppBar (
title = { Text(LocalContext.current.getString(R.string.login_title)) }
)
}
) {
Row(Modifier.padding(it)) {
Button(
modifier = Modifier.fillMaxWidth(),
onClick = {
LoginActivityScaffold(
onSelectHomeserver = {
homeserverLauncher.launch(Intent(applicationContext, SelectHomeserverActivity::class.java))
}
) {
Text("")
}
}
}
}
)
}
}
}

View file

@ -0,0 +1,73 @@
package eu.steffo.twom.ui.login
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.material3.TextField
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview
import eu.steffo.twom.R
import eu.steffo.twom.ui.BASE_PADDING
@Composable
@Preview(showBackground = true)
fun LoginActivityControl(
modifier: Modifier = Modifier,
onSelectHomeserver: () -> Unit = {},
onComplete: () -> Unit = {},
) {
Column(modifier) {
Row(BASE_PADDING) {
Text(LocalContext.current.getString(R.string.login_text))
}
Row(BASE_PADDING) {
Button(
modifier = Modifier.fillMaxWidth(),
onClick = onSelectHomeserver,
enabled = true,
) {
Text(LocalContext.current.getString(R.string.login_selecthomeserver_text))
}
}
Row(BASE_PADDING) {
TextField(
modifier = Modifier.fillMaxWidth(),
value = "",
onValueChange = {},
placeholder = {
Text(LocalContext.current.getString(R.string.login_username_placeholder))
},
supportingText = {
Text(LocalContext.current.getString(R.string.login_username_supporting))
},
)
}
Row(BASE_PADDING) {
TextField(
modifier = Modifier.fillMaxWidth(),
value = "",
onValueChange = {},
placeholder = {
Text(LocalContext.current.getString(R.string.login_password_placeholder))
},
supportingText = {
Text(LocalContext.current.getString(R.string.login_password_supporting))
},
)
}
Row(BASE_PADDING) {
Button(
modifier = Modifier.fillMaxWidth(),
onClick = onComplete,
enabled = false,
) {
Text(LocalContext.current.getString(R.string.login_complete_text))
}
}
}
}

View file

@ -0,0 +1,53 @@
package eu.steffo.twom.ui.login
import android.content.Intent
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material3.Button
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview
import eu.steffo.twom.R
import eu.steffo.twom.ui.theme.TwoMTheme
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@Preview
fun LoginActivityScaffold(
onBack: () -> Unit = {},
onSelectHomeserver: () -> Unit = {},
) {
TwoMTheme {
Scaffold(
topBar = {
TopAppBar (
navigationIcon = {
IconButton(onClick = onBack) {
Icon(
imageVector = Icons.Filled.ArrowBack,
contentDescription = LocalContext.current.getString(R.string.back)
)
}
},
title = { Text(LocalContext.current.getString(R.string.login_title)) }
)
}
) {
LoginActivityControl(
modifier = Modifier.padding(it),
onSelectHomeserver = onSelectHomeserver,
)
}
}
}

View file

@ -20,4 +20,11 @@
<string name="homeserver_title">Select homeserver</string>
<string name="login_title">Log into Matrix</string>
<string name="back">Go back</string>
<string name="login_text">To use TwoM, you need to log into a Matrix homeserver.</string>
<string name="login_complete_text">Continue</string>
<string name="login_selecthomeserver_text">Select homeserver</string>
<string name="login_username_placeholder">\@steffo:candy.steffo.eu</string>
<string name="login_username_supporting">The Matrix ID to login as, including the @ symbol and the homeserver name.</string>
<string name="login_password_placeholder">••••••••</string>
<string name="login_password_supporting">The password of the Matrix account.</string>
</resources>