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 0000000..6469592
Binary files /dev/null and b/app/src/main/res/drawable/logo.png differ
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">
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_tela_inicial.xml b/app/src/main/res/layout/activity_tela_inicial.xml
new file mode 100644
index 0000000..93275a6
--- /dev/null
+++ b/app/src/main/res/layout/activity_tela_inicial.xml
@@ -0,0 +1,10 @@
+
+
+
+
\ No newline at end of file