package com.example.login2
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.example.login2.ui.theme.Login2Theme
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.unit.dp
import androidx.compose.ui.res.painterResource
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
Login2Theme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
Greeting(
name = "Android",
modifier = Modifier.padding(innerPadding)
)
}
}
}
}
}
@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Column() {
Text(
text = "Hello $name!",
modifier = modifier
)
var isLoggedIn by remember { mutableStateOf(false) }
if (isLoggedIn){
gallery()
} else {
LoginScreen(onLoginSuccess = { isLoggedIn = true })
}
}
}
// TODO
@Composable
fun gallery() {
Column() {
Text("Welcome! You are logged in.")
Image(
painter = painterResource(R.drawable._0220426_071357),
contentDescription = "kwiatek",
modifier = Modifier
.width(100.dp)
.padding(5.dp)
)
}
}
@Composable
fun LoginScreen(onLoginSuccess: () -> Unit) {
var username by remember { mutableStateOf("") } // login
var password by remember { mutableStateOf("") } // hasło
var errorMessage by remember { mutableStateOf("") } // komunikat błędu
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(text = "Login", style = MaterialTheme.typography.headlineMedium)
Spacer(modifier = Modifier.height(16.dp))
OutlinedTextField(
value = username,
onValueChange = { username = it },
label = { Text("Username") },
modifier = Modifier.fillMaxWidth(),
keyboardOptions = KeyboardOptions.Default.copy(
imeAction = ImeAction.Next
)
)
Spacer(modifier = Modifier.height(8.dp)) // pusta przestrzeń
OutlinedTextField(
value = password,
onValueChange = { password = it }, // po wpisaniu znaków pole sie nimi uzupełni
label = { Text("Password") },
modifier = Modifier.fillMaxWidth(),
visualTransformation = PasswordVisualTransformation(), // chowanie znaków hasła
keyboardOptions = KeyboardOptions.Default.copy( // po enterze focus przechodzi do następnego elementu formularze
imeAction = ImeAction.Done
)
)
Spacer(modifier = Modifier.height(16.dp))
Button(
onClick = {
errorMessage = "" // Resetujemy komunikat o błędzie
// Symulacja logowania
if (username.isBlank() || password.isBlank()) {
errorMessage = "Wszystkie pola są wymagane"
} else {
// Logika autoryzacji - przykładowa
if (username == "aaa" && password == "bbb") {
// Jeśli login się powiódł:
onLoginSuccess()
} else {
errorMessage = "Nieprawidłowy login lub hasło"
}
}
},
modifier = Modifier.fillMaxWidth()
){
Text("Login")
}
Spacer(modifier = Modifier.height(8.dp))
// tekst błedu logowania
if (errorMessage.isNotBlank()) {
Text(text = errorMessage, color = MaterialTheme.colorScheme.error)
}
}
}
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
Login2Theme {
Greeting("Android")
}
}
source https://deepai.org/chat