This commit is contained in:
2026-04-30 10:42:47 +01:00
parent 9ff7b5c972
commit dd80c8d9bb
19 changed files with 851 additions and 600 deletions

View File

@@ -19,6 +19,7 @@ import com.example.lifegrid.menu.AtivosFragment;
import com.example.lifegrid.menu.DefinicoesFragment;
import com.example.lifegrid.menu.DocumentosFragment;
import com.example.lifegrid.menu.GraficosFragment;
import com.example.lifegrid.menu.HomeFragment;
import com.example.lifegrid.menu.MetasFragment;
import com.example.lifegrid.menu.TransacoesFragment;
import com.example.lifegrid.models.Transacao;
@@ -48,16 +49,7 @@ import java.util.Locale;
*/
public class TelaInicialActivity extends AppCompatActivity {
private TextView tvValor;
private TextView tvTransacoes;
private TextView tvValor2;
private TextView tvTransacoes2;
private TextView tvValor3;
private TextView tvTransacoes3;
private TextView tvValor4;
private TextView tvTransacoes4;
private TextView tvTitulo;
private TextView tvTitulo2;
private ImageView ivHeaderProfilePicture;
private TextView tvHeaderUsername;
@@ -78,16 +70,6 @@ public class TelaInicialActivity extends AppCompatActivity {
return insets;
});
tvValor = findViewById(R.id.tvValor);
tvTransacoes = findViewById(R.id.tvTransacoes);
tvValor2 = findViewById(R.id.tvValor2);
tvTransacoes2 = findViewById(R.id.tvTransacoes2);
tvValor3 = findViewById(R.id.tvValor3);
tvTransacoes3 = findViewById(R.id.tvTransacoes3);
tvValor4 = findViewById(R.id.tvValor4);
tvTransacoes4 = findViewById(R.id.tvTransacoes4);
tvTitulo = findViewById(R.id.tvTitulo);
tvTitulo2 = findViewById(R.id.tvTitulo2);
ivHeaderProfilePicture = findViewById(R.id.ivHeaderProfilePicture);
tvHeaderUsername = findViewById(R.id.tvHeaderUsername);
@@ -97,50 +79,64 @@ public class TelaInicialActivity extends AppCompatActivity {
setupSpinners();
Fragment transacoesFragment2 = new TransacoesFragment();
Fragment homeFragment = new HomeFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainerView, transacoesFragment2)
.replace(R.id.fragmentContainerView, homeFragment)
.commit();
android.view.View.OnClickListener openTransacoesListener = v -> {
updateNavSelection(findViewById(R.id.carteiraImageView));
Fragment transacoesFragment = new TransacoesFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainerView, transacoesFragment)
.commit();
scrollToFragment();
};
findViewById(R.id.receitasCardView).setOnClickListener(openTransacoesListener);
findViewById(R.id.despesasCardView).setOnClickListener(openTransacoesListener);
android.view.View.OnClickListener openHomeListener = v -> {
updateNavSelection(findViewById(R.id.homeImageView));
Fragment newHomeFragment = new HomeFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainerView, newHomeFragment)
.commit();
};
ImageView homeImageView = findViewById(R.id.homeImageView);
homeImageView.setOnClickListener(openHomeListener);
ImageView carteiraImageView = findViewById(R.id.carteiraImageView);
carteiraImageView.setOnClickListener(openTransacoesListener);
ImageView setaImageView = findViewById(R.id.setaImageView);
setaImageView.setOnClickListener(v -> {
updateNavSelection(setaImageView);
Fragment ativosFragment = new AtivosFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainerView, ativosFragment)
.commit();
scrollToFragment();
});
ImageView graficoImageView = findViewById(R.id.graficoImageView);
graficoImageView.setOnClickListener(v -> {
updateNavSelection(graficoImageView);
Fragment graficosFragment = new GraficosFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainerView, graficosFragment)
.commit();
scrollToFragment();
});
ImageView alvoImageView = findViewById(R.id.alvoImageView);
alvoImageView.setOnClickListener(v -> {
updateNavSelection(alvoImageView);
Fragment metasFragment = new MetasFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainerView, metasFragment)
.commit();
scrollToFragment();
});
ImageView definicoesImageView = findViewById(R.id.definicoesImageView);
definicoesImageView.setOnClickListener(v -> {
updateNavSelection(definicoesImageView);
Intent intent = new Intent(TelaInicialActivity.this, DefinicoesActivity.class);
startActivity(intent);
});
@@ -204,7 +200,7 @@ public class TelaInicialActivity extends AppCompatActivity {
AdapterView.OnItemSelectedListener listener = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, android.view.View view, int position, long id) {
carregarDados();
atualizarDadosHome();
}
@Override
@@ -215,75 +211,28 @@ public class TelaInicialActivity extends AppCompatActivity {
spinnerAno.setOnItemSelectedListener(listener);
}
private void carregarDados() {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user == null) return;
int mesSelecionado = spinnerMes.getSelectedItemPosition() + 1; // 1 to 12
String anoSelecionado = spinnerAno.getSelectedItem().toString();
String mesNome = meses[spinnerMes.getSelectedItemPosition()];
tvTitulo.setText("Receitas (" + mesNome + " " + anoSelecionado + ")");
tvTitulo2.setText("Despesas (" + mesNome + " " + anoSelecionado + ")");
DatabaseReference transacoesRef = FirebaseDatabase.getInstance().getReference()
.child("users").child(user.getUid()).child("transacoes");
transacoesRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
double totalReceitas = 0;
double totalDespesas = 0;
int countReceitas = 0;
int countDespesas = 0;
for (DataSnapshot ds : snapshot.getChildren()) {
Transacao transacao = ds.getValue(Transacao.class);
if (transacao != null && transacao.getData() != null) {
String[] parts = transacao.getData().split("/");
if (parts.length == 3) {
try {
int mesTransacao = Integer.parseInt(parts[1]);
String anoTransacao = parts[2];
if (mesTransacao == mesSelecionado && anoTransacao.equals(anoSelecionado)) {
double valor = Double.parseDouble(transacao.getValor().replace(",", "."));
if ("Receita".equals(transacao.getTipo())) {
totalReceitas += valor;
countReceitas++;
} else if ("Despesa".equals(transacao.getTipo())) {
totalDespesas += valor;
countDespesas++;
}
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
}
}
tvValor.setText(String.format(Locale.getDefault(), "%.2f€", totalReceitas));
tvTransacoes.setText(countReceitas + " transações");
tvValor2.setText(String.format(Locale.getDefault(), "%.2f€", totalDespesas));
tvTransacoes2.setText(countDespesas + " transações");
double saldo = totalReceitas - totalDespesas;
tvValor3.setText(String.format(Locale.getDefault(), "%.2f€", saldo));
if (saldo >= 0) {
tvTransacoes3.setText("Poupança positiva");
tvTransacoes3.setTextColor(android.graphics.Color.parseColor("#8E8E8E"));
} else {
tvTransacoes3.setText("Poupança negativa");
tvTransacoes3.setTextColor(android.graphics.Color.parseColor("#FF0000"));
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(TelaInicialActivity.this, "Erro ao carregar dados", Toast.LENGTH_SHORT).show();
}
});
public void atualizarDadosHome() {
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.fragmentContainerView);
if (currentFragment instanceof HomeFragment) {
int mesSelecionado = spinnerMes.getSelectedItemPosition() + 1; // 1 to 12
String anoSelecionado = spinnerAno.getSelectedItem().toString();
String mesNome = meses[spinnerMes.getSelectedItemPosition()];
((HomeFragment) currentFragment).carregarDados(mesSelecionado, anoSelecionado, mesNome);
}
}
private void updateNavSelection(android.widget.ImageView selectedItem) {
int[] ids = {R.id.homeImageView, R.id.carteiraImageView, R.id.setaImageView, R.id.graficoImageView, R.id.alvoImageView, R.id.definicoesImageView};
for (int id : ids) {
android.widget.ImageView iv = findViewById(id);
if (iv != null) {
if (iv == selectedItem) {
iv.setBackgroundResource(R.drawable.nav_item_selected_bg);
} else {
iv.setBackground(null);
}
}
}
}
}