Files
PAP/app/src/main/java/com/example/pap/HomeActivity.java
2026-03-10 15:34:35 +00:00

135 lines
5.5 KiB
Java

package com.example.pap;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.InputType;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
public class HomeActivity extends AppCompatActivity {
private SharedPreferences sharedPreferences;
// Agora são 6 cartões!
private CardView cardPerfil, cardEstatisticas, cardTirarFoto, cardChat, cardDesafios, cardDefinicoes;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
// 1. Iniciar a memória do telemóvel
sharedPreferences = getSharedPreferences("AppEmagrecimento", MODE_PRIVATE);
// 2. Ligar os cartões do XML ao código
cardPerfil = findViewById(R.id.cardPerfil);
cardEstatisticas = findViewById(R.id.cardEstatisticas);
cardTirarFoto = findViewById(R.id.cardTirarFoto);
cardChat = findViewById(R.id.cardChat);
cardDesafios = findViewById(R.id.cardDesafios);
cardDefinicoes = findViewById(R.id.cardDefinicoes);
// 3. Configurar os cliques para abrir os outros ecrãs
cardPerfil.setOnClickListener(v -> {
Toast.makeText(this, "A abrir O Meu Perfil...", Toast.LENGTH_SHORT).show();
// startActivity(new Intent(HomeActivity.this, PerfilActivity.class));
});
cardEstatisticas.setOnClickListener(v -> {
Toast.makeText(this, "A abrir Estatísticas...", Toast.LENGTH_SHORT).show();
// startActivity(new Intent(HomeActivity.this, EstatisticasActivity.class));
});
cardTirarFoto.setOnClickListener(v -> {
startActivity(new Intent(HomeActivity.this, FotoActivity.class));
});
cardChat.setOnClickListener(v -> {
startActivity(new Intent(HomeActivity.this, ChatActivity.class));
});
cardDesafios.setOnClickListener(v -> {
startActivity(new Intent(HomeActivity.this, DesafiosActivity.class));
});
cardDefinicoes.setOnClickListener(v -> {
Toast.makeText(this, "A abrir Definições...", Toast.LENGTH_SHORT).show();
// startActivity(new Intent(HomeActivity.this, DefinicoesActivity.class));
});
// 4. Verifica se já passou o tempo para pedir o novo peso
verificarAtualizacaoSemanal();
}
// Função que calcula se já passou o tempo (1 semana ou 10 segundos)
private void verificarAtualizacaoSemanal() {
long dataUltimaAtualizacao = sharedPreferences.getLong("data_ultima_atualizacao", 0);
long dataAtual = System.currentTimeMillis();
if (dataUltimaAtualizacao == 0) {
sharedPreferences.edit().putLong("data_ultima_atualizacao", dataAtual).apply();
} else {
// TEMPO CONFIGURADO PARA TESTES: 10 segundos!
// Para a PAP final usa: long tempoNecessario = 7L * 24 * 60 * 60 * 1000;
long tempoNecessario = 10 * 1000;
if (dataAtual - dataUltimaAtualizacao >= tempoNecessario) {
mostrarPopupAtualizacao();
}
}
}
// Função que cria o pop-up para atualizar o peso
private void mostrarPopupAtualizacao() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Hora da pesagem! ⚖️");
builder.setMessage("Já passou 1 semana! Atualiza o teu peso e altura para acompanharmos a tua evolução.");
builder.setCancelable(false);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setPadding(50, 40, 50, 10);
final EditText etNovoPeso = new EditText(this);
etNovoPeso.setHint("Novo Peso (ex: 75.5)");
etNovoPeso.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
layout.addView(etNovoPeso);
final EditText etNovaAltura = new EditText(this);
etNovaAltura.setHint("Nova Altura (ex: 1.75)");
etNovaAltura.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
layout.addView(etNovaAltura);
builder.setView(layout);
builder.setPositiveButton("Atualizar Dados", null);
AlertDialog dialog = builder.create();
dialog.show();
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> {
String pesoStr = etNovoPeso.getText().toString().trim();
String alturaStr = etNovaAltura.getText().toString().trim();
if (!pesoStr.isEmpty() && !alturaStr.isEmpty()) {
float novoPeso = Float.parseFloat(pesoStr);
float novaAltura = Float.parseFloat(alturaStr);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putFloat("pesoAtual", novoPeso);
editor.putFloat("alturaAtual", novaAltura);
editor.putLong("data_ultima_atualizacao", System.currentTimeMillis());
editor.apply();
Toast.makeText(HomeActivity.this, "Dados atualizados com sucesso! 💪", Toast.LENGTH_SHORT).show();
dialog.dismiss();
} else {
Toast.makeText(HomeActivity.this, "Tens de preencher os dois campos!", Toast.LENGTH_SHORT).show();
}
});
}
}