diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ac43dbd..9682db4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -29,7 +29,6 @@ android:theme="@style/Theme.TpFilRouge"> - diff --git a/app/src/main/java/com/example/tpfilrouge/LoginActivity.kt b/app/src/main/java/com/example/tpfilrouge/LoginActivity.kt index 2367895..8cc8b9c 100644 --- a/app/src/main/java/com/example/tpfilrouge/LoginActivity.kt +++ b/app/src/main/java/com/example/tpfilrouge/LoginActivity.kt @@ -1,5 +1,6 @@ package com.example.tpfilrouge +import android.content.Intent import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent @@ -8,6 +9,7 @@ import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer @@ -28,6 +30,7 @@ import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.pointer.motionEventSpy import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle @@ -39,6 +42,7 @@ import com.example.tpfilrouge.ui.theme.TpFilRougeTheme import com.example.tpfilrouge.R import com.example.tpfilrouge.ui.theme.EniBackgroundPage import com.example.tpfilrouge.ui.theme.EniButton +import com.example.tpfilrouge.ui.theme.EniPage import com.example.tpfilrouge.ui.theme.EniTextField class LoginActivity : ComponentActivity() { @@ -53,42 +57,53 @@ class LoginActivity : ComponentActivity() { @Composable fun LoginActivityPage() { - TpFilRougeTheme { - Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> - Box(modifier = Modifier.padding(innerPadding)) { - EniBackgroundPage() - Column( - horizontalAlignment = Alignment.CenterHorizontally, - modifier = Modifier.padding(40.dp)) { - Image( - painter = painterResource(id=R.drawable.login_user), - contentDescription = "Logo Login", - modifier = Modifier.padding(vertical = 40.dp)) - Text(text = stringResource(R.string.aware_login), - modifier = Modifier.padding(vertical = 40.dp), - textAlign = TextAlign.Center, - style = TextStyle(color = Color(0xCCFFFFFF)) - ) - EniTextField(stringResource(R.string.email)) - EniTextField(stringResource(R.string.password)) - EniButton(stringResource(R.string.connection)) - EniButton(stringResource(R.string.forget_password)) - Spacer(modifier = Modifier.weight(1f)) - Text(text = stringResource(R.string.dont_account), - modifier = Modifier.padding(vertical = 10.dp), - textAlign = TextAlign.Center, - style = TextStyle(color = Color(0xCCFFFFFF)) - ) - EniButton(stringResource(R.string.register_now)) - } - } + + val context = LocalContext.current; + + EniPage { + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier.padding(40.dp) + ) { + Image( + painter = painterResource(id = R.drawable.login_user), + contentDescription = "Logo Login", + modifier = Modifier.padding(vertical = 40.dp) + ) + Text( + text = stringResource(R.string.aware_login), + modifier = Modifier.padding(vertical = 40.dp), + textAlign = TextAlign.Center, + style = TextStyle(color = Color(0xCCFFFFFF)) + ) + EniTextField(stringResource(R.string.email)) + EniTextField(stringResource(R.string.password)) + EniButton(stringResource(R.string.connection), onClick = {}) + EniButton(stringResource(R.string.forget_password), + onClick = { + // Changer de page (d'activity) + context.startActivity(Intent(context, ResetPasswordActivity::class.java)) + }) + Spacer(modifier = Modifier.weight(1f)) + Text( + text = stringResource(R.string.dont_account), + modifier = Modifier.padding(vertical = 10.dp), + textAlign = TextAlign.Center, + style = TextStyle(color = Color(0xCCFFFFFF)) + ) + EniButton(stringResource(R.string.register_now), + onClick = { + // Changer de page (d'activity) + context.startActivity(Intent(context, SignUpActivity::class.java)) + }) } } + } @Preview( showBackground = true, - locale = "zh" + locale = "en" ) @Composable fun LoginActivityPreview() { diff --git a/app/src/main/java/com/example/tpfilrouge/ResetPasswordActivity.kt b/app/src/main/java/com/example/tpfilrouge/ResetPasswordActivity.kt index 25b71fa..fea3c7b 100644 --- a/app/src/main/java/com/example/tpfilrouge/ResetPasswordActivity.kt +++ b/app/src/main/java/com/example/tpfilrouge/ResetPasswordActivity.kt @@ -4,6 +4,7 @@ import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize @@ -13,12 +14,15 @@ import androidx.compose.material3.ElevatedButton import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.example.tpfilrouge.ui.theme.EniButton +import com.example.tpfilrouge.ui.theme.EniPage import com.example.tpfilrouge.ui.theme.EniTextField import com.example.tpfilrouge.ui.theme.TpFilRougeTheme @@ -35,21 +39,16 @@ class ResetPasswordActivity : ComponentActivity() { @Composable fun ResetPasswordActivityPage() { - TpFilRougeTheme { - Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> - Box(modifier = Modifier.padding(innerPadding)) { - Column(modifier = Modifier.padding(40.dp)) { - Text( - text = "Récupération de mot de passe", textAlign = TextAlign.Center, - fontSize = 28.sp, - modifier = Modifier - .fillMaxWidth() - .padding(vertical = 80.dp) - ) - EniTextField("Email") - EniButton("Envoyer le lien de récupération") - } - } + EniPage { + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier.padding(40.dp)) { + Image( + painter = painterResource(id = R.drawable.reset_password_ic), + contentDescription = "Logo SignUp", + modifier = Modifier.padding(vertical = 40.dp)) + EniTextField("Email") + EniButton("Envoyer le lien de récupération", onClick = {}) } } } diff --git a/app/src/main/java/com/example/tpfilrouge/SignUpActivity.kt b/app/src/main/java/com/example/tpfilrouge/SignUpActivity.kt index 4e15a5d..7de1c9d 100644 --- a/app/src/main/java/com/example/tpfilrouge/SignUpActivity.kt +++ b/app/src/main/java/com/example/tpfilrouge/SignUpActivity.kt @@ -4,6 +4,7 @@ import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize @@ -13,12 +14,15 @@ import androidx.compose.material3.ElevatedButton import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.example.tpfilrouge.ui.theme.EniButton +import com.example.tpfilrouge.ui.theme.EniPage import com.example.tpfilrouge.ui.theme.EniTextField import com.example.tpfilrouge.ui.theme.TpFilRougeTheme @@ -34,27 +38,22 @@ class SignUpActivity : ComponentActivity() { @Composable fun SignUpActivityPage() { - TpFilRougeTheme { - Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> - Box(modifier = Modifier.padding(innerPadding)) { - Column(modifier = Modifier.padding(40.dp)) { - Text( - text = "Sign Up", textAlign = TextAlign.Center, - fontSize = 46.sp, - modifier = Modifier - .fillMaxWidth() - .padding(vertical = 80.dp) - ) - EniTextField("Pseudo") - EniTextField("Email") - EniTextField("Password") - EniTextField("Password Confirmation") - EniTextField("City Code") - EniTextField("City") - EniTextField("Phone Number") - EniButton("Sign Up") - } - } + EniPage { + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier.padding(40.dp)) { + Image( + painter = painterResource(id = R.drawable.sign_up), + contentDescription = "Logo SignUp", + modifier = Modifier.padding(vertical = 40.dp)) + EniTextField("Pseudo") + EniTextField("Email") + EniTextField("Password") + EniTextField("Password Confirmation") + EniTextField("City Code") + EniTextField("City") + EniTextField("Phone Number") + EniButton("Sign Up", onClick = {}) } } } diff --git a/app/src/main/java/com/example/tpfilrouge/ui/theme/AppTheme.kt b/app/src/main/java/com/example/tpfilrouge/ui/theme/AppTheme.kt index b270952..fa17c84 100644 --- a/app/src/main/java/com/example/tpfilrouge/ui/theme/AppTheme.kt +++ b/app/src/main/java/com/example/tpfilrouge/ui/theme/AppTheme.kt @@ -11,6 +11,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TextField import androidx.compose.material3.TextFieldDefaults @@ -28,14 +29,27 @@ import com.example.tpfilrouge.R class AppTheme { } +@Composable +fun EniPage(content: @Composable () -> Unit){ + TpFilRougeTheme { + Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> + Box(modifier = Modifier.padding(innerPadding)) { + EniBackgroundPage() + // Inserer un composant dynamiquement + content() + } + } + } +} + @Composable fun HintText(label : String){ Text(text = label, style = TextStyle(color = Color.Gray)) } @Composable -fun EniButton(label: String){ - Button(onClick = {}, +fun EniButton(label: String, onClick: () -> Unit){ + Button(onClick = onClick, border = BorderStroke(3.dp, Color(0x77FFFFFF)), modifier = Modifier.fillMaxWidth() .padding(vertical = 10.dp), diff --git a/app/src/main/res/drawable/reset_password_ic.png b/app/src/main/res/drawable/reset_password_ic.png new file mode 100644 index 0000000..b047a2a Binary files /dev/null and b/app/src/main/res/drawable/reset_password_ic.png differ diff --git a/app/src/main/res/drawable/sign_up.png b/app/src/main/res/drawable/sign_up.png new file mode 100644 index 0000000..7006508 Binary files /dev/null and b/app/src/main/res/drawable/sign_up.png differ