From 85a64eb15fa48e32b37f529dc63d1252e7cada9c Mon Sep 17 00:00:00 2001 From: 230415 <230415@epvc.pt> Date: Tue, 9 Dec 2025 17:18:15 +0000 Subject: [PATCH] =?UTF-8?q?Login=20feito,=20Criar=20Conta=20feito=20e=20co?= =?UTF-8?q?me=C3=A7o=20da=20recupera=C3=A7=C3=A3o=20da=20password?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 3 + .../example/lifegrid/CriarContaActivity.java | 151 ++++++++++++++++++ .../com/example/lifegrid/LoginActivity.java | 8 +- .../example/lifegrid/TelaInicialActivity.java | 24 +++ app/src/main/res/drawable/logo.png | Bin 0 -> 16373 bytes .../main/res/layout/activity_criar_conta.xml | 33 +++- app/src/main/res/layout/activity_login.xml | 17 +- .../res/layout/activity_recupear_password.xml | 72 +++++++++ .../main/res/layout/activity_tela_inicial.xml | 10 ++ 9 files changed, 309 insertions(+), 9 deletions(-) create mode 100644 app/src/main/java/com/example/lifegrid/TelaInicialActivity.java create mode 100644 app/src/main/res/drawable/logo.png create mode 100644 app/src/main/res/layout/activity_tela_inicial.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a5fcac4..5a2581e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,6 +13,9 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.LifeGrid"> + diff --git a/app/src/main/java/com/example/lifegrid/CriarContaActivity.java b/app/src/main/java/com/example/lifegrid/CriarContaActivity.java index d0b0c40..d3c142e 100644 --- a/app/src/main/java/com/example/lifegrid/CriarContaActivity.java +++ b/app/src/main/java/com/example/lifegrid/CriarContaActivity.java @@ -1,6 +1,14 @@ package com.example.lifegrid; +import android.content.Intent; import android.os.Bundle; +import android.text.TextUtils; +import android.util.Patterns; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ProgressBar; +import android.widget.Toast; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; @@ -8,8 +16,21 @@ import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; +import com.google.firebase.FirebaseApp; +import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.auth.FirebaseUser; + public class CriarContaActivity extends AppCompatActivity { + private EditText nomeEditText; + private EditText emailEditText2; + private EditText passwordEditText3; + private EditText passwordEditText2; + private Button loginButton2; + private Button googleButton2; + private ProgressBar loadingProgressBar; + private FirebaseAuth firebaseAuth; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -20,5 +41,135 @@ public class CriarContaActivity extends AppCompatActivity { v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); + + nomeEditText = findViewById(R.id.emailEditText3); + emailEditText2 = findViewById(R.id.emailEditText2); + passwordEditText3 = findViewById(R.id.passwordEditText3); + passwordEditText2 = findViewById(R.id.passwordEditText2); + loginButton2 = findViewById(R.id.loginButton2); + googleButton2 = findViewById(R.id.googleButton2); + loadingProgressBar = findViewById(R.id.loadingProgressBar); + + FirebaseApp.initializeApp(this); + firebaseAuth = FirebaseAuth.getInstance(); + + loginButton2.setOnClickListener(v -> criarConta()); + googleButton2.setOnClickListener(v -> + Toast.makeText(this, "Login com Google disponível em breve.", Toast.LENGTH_SHORT).show() + ); + } + + private void criarConta() { + String nome = nomeEditText.getText().toString().trim(); + String email = emailEditText2.getText().toString().trim(); + String password = passwordEditText3.getText().toString(); + String confirmarPassword = passwordEditText2.getText().toString(); + + if (!validarDados(nome, email, password, confirmarPassword)) { + return; + } + + toggleLoading(true); + + firebaseAuth.createUserWithEmailAndPassword(email, password) + .addOnCompleteListener(this, task -> { + toggleLoading(false); + if (task.isSuccessful()) { + FirebaseUser user = firebaseAuth.getCurrentUser(); + if (user != null) { + // Conta criada com sucesso - redirecionar para TelaInicialActivity + Toast.makeText(this, + "Conta criada com sucesso! Bem-vindo, " + nome, + Toast.LENGTH_SHORT).show(); + + // Redirecionar para TelaInicialActivity apenas após sucesso + Intent intent = new Intent(CriarContaActivity.this, TelaInicialActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); + startActivity(intent); + finish(); // Fechar esta atividade + } + } else { + // Erro ao criar conta - mostrar mensagem de erro + String errorMessage = "Erro ao criar conta."; + if (task.getException() != null) { + errorMessage = task.getException().getMessage(); + // Traduzir alguns erros comuns para português + if (errorMessage.contains("email address is already in use")) { + errorMessage = "Este email já está em uso. Por favor, use outro email."; + } else if (errorMessage.contains("network")) { + errorMessage = "Erro de conexão. Verifique sua internet."; + } else if (errorMessage.contains("weak password")) { + errorMessage = "Palavra-passe muito fraca. Use uma palavra-passe mais forte."; + } + } + Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show(); + } + }); + } + + private boolean validarDados(String nome, String email, String password, String confirmarPassword) { + // Validar nome + if (TextUtils.isEmpty(nome)) { + nomeEditText.setError("Nome obrigatório."); + nomeEditText.requestFocus(); + return false; + } + + if (nome.length() < 2) { + nomeEditText.setError("Nome deve ter pelo menos 2 caracteres."); + nomeEditText.requestFocus(); + return false; + } + + // Validar email + if (TextUtils.isEmpty(email)) { + emailEditText2.setError("Email obrigatório."); + emailEditText2.requestFocus(); + return false; + } + + if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) { + emailEditText2.setError("Formato de email inválido."); + emailEditText2.requestFocus(); + return false; + } + + // Validar password + if (TextUtils.isEmpty(password)) { + passwordEditText3.setError("Palavra-passe obrigatória."); + passwordEditText3.requestFocus(); + return false; + } + + if (password.length() < 6) { + passwordEditText3.setError("Palavra-passe deve ter pelo menos 6 caracteres."); + passwordEditText3.requestFocus(); + return false; + } + + // Validar confirmação de password + if (TextUtils.isEmpty(confirmarPassword)) { + passwordEditText2.setError("Por favor, confirme a palavra-passe."); + passwordEditText2.requestFocus(); + return false; + } + + if (!password.equals(confirmarPassword)) { + passwordEditText2.setError("As palavras-passe não coincidem."); + passwordEditText2.requestFocus(); + return false; + } + + return true; + } + + private void toggleLoading(boolean show) { + loadingProgressBar.setVisibility(show ? View.VISIBLE : View.GONE); + loginButton2.setEnabled(!show); + googleButton2.setEnabled(!show); + nomeEditText.setEnabled(!show); + emailEditText2.setEnabled(!show); + passwordEditText3.setEnabled(!show); + passwordEditText2.setEnabled(!show); } } \ No newline at end of file diff --git a/app/src/main/java/com/example/lifegrid/LoginActivity.java b/app/src/main/java/com/example/lifegrid/LoginActivity.java index d29b8ba..a3515ee 100644 --- a/app/src/main/java/com/example/lifegrid/LoginActivity.java +++ b/app/src/main/java/com/example/lifegrid/LoginActivity.java @@ -101,7 +101,13 @@ public class LoginActivity extends AppCompatActivity { String welcome = user != null && !TextUtils.isEmpty(user.getEmail()) ? "Bem-vindo, " + user.getEmail() : "Login realizado com sucesso!"; - Toast.makeText(this, welcome, Toast.LENGTH_LONG).show(); + Toast.makeText(this, welcome, Toast.LENGTH_SHORT).show(); + + // Redirecionar para TelaInicialActivity após login bem-sucedido + Intent intent = new Intent(LoginActivity.this, TelaInicialActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); + startActivity(intent); + finish(); // Fechar LoginActivity para não poder voltar com back button } else { Toast.makeText(this, task.getException() != null ? task.getException().getMessage() : "Falha no login", diff --git a/app/src/main/java/com/example/lifegrid/TelaInicialActivity.java b/app/src/main/java/com/example/lifegrid/TelaInicialActivity.java new file mode 100644 index 0000000..863b7b2 --- /dev/null +++ b/app/src/main/java/com/example/lifegrid/TelaInicialActivity.java @@ -0,0 +1,24 @@ +package com.example.lifegrid; + +import android.os.Bundle; + +import androidx.activity.EdgeToEdge; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; + +public class TelaInicialActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + EdgeToEdge.enable(this); + setContentView(R.layout.activity_tela_inicial); + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { + Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); + return insets; + }); + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/logo.png b/app/src/main/res/drawable/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..646959202644ce1c4f8638b928a5cc8213e08086 GIT binary patch literal 16373 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 MHM&!H%kJ&}0WrQX6#xJL literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_criar_conta.xml b/app/src/main/res/layout/activity_criar_conta.xml index 6e549d0..805af91 100644 --- a/app/src/main/res/layout/activity_criar_conta.xml +++ b/app/src/main/res/layout/activity_criar_conta.xml @@ -3,10 +3,22 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" + android:background="#FFFFFF" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".CriarContaActivity"> + + @@ -24,14 +36,14 @@ android:id="@+id/textView6" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="160dp" + android:layout_marginTop="24dp" android:text="Criar conta" android:textSize="25sp" android:textStyle="bold" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.166" + app:layout_constraintHorizontal_bias="0.128" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toBottomOf="@+id/logoImageView" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index baf1204..2944149 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -13,14 +13,14 @@ android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="192dp" + android:layout_marginTop="24dp" android:text="Bem-vindo/a de volta" android:textSize="25sp" android:textStyle="bold" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.113" + app:layout_constraintHorizontal_bias="0.154" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toBottomOf="@+id/logoImageView" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_recupear_password.xml b/app/src/main/res/layout/activity_recupear_password.xml index 42ddf10..99cf01d 100644 --- a/app/src/main/res/layout/activity_recupear_password.xml +++ b/app/src/main/res/layout/activity_recupear_password.xml @@ -7,4 +7,76 @@ android:layout_height="match_parent" tools:context=".RecupearPasswordActivity"> +