135 lines
5.5 KiB
Java
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();
|
|
}
|
|
});
|
|
}
|
|
} |