This commit is contained in:
2026-06-15 15:32:58 +01:00
parent 53f77a852e
commit 196487a2e2
19 changed files with 200 additions and 54 deletions

View File

@@ -19,6 +19,7 @@ import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.Toast;
import com.example.lifegrid.utils.CustomToast;
import java.util.Calendar;
import java.util.Locale;
@@ -159,18 +160,18 @@ public class AtivosFragment extends Fragment {
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(requireContext(), "Erro ao carregar ativos.", Toast.LENGTH_SHORT).show();
CustomToast.error(requireContext(), "Erro ao carregar ativos.");
}
});
}
private void refreshAtivoPrice(Ativos ativo, String key) {
if (ativo.getTicker() == null || ativo.getTicker().isEmpty()) {
Toast.makeText(requireContext(), "Este ativo não tem um Ticker definido.", Toast.LENGTH_SHORT).show();
CustomToast.info(requireContext(), "Este ativo não tem um Ticker definido.");
return;
}
Toast.makeText(requireContext(), "A atualizar " + ativo.getTicker() + "...", Toast.LENGTH_SHORT).show();
CustomToast.info(requireContext(), "A atualizar " + ativo.getTicker() + "...");
ExecutorService executor = Executors.newSingleThreadExecutor();
Handler handler = new Handler(Looper.getMainLooper());
@@ -205,14 +206,14 @@ public class AtivosFragment extends Fragment {
handler.post(() -> {
String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
databaseReference.child("users").child(userId).child("ativos").child(key).child("precoAtual").setValue(regularMarketPrice);
Toast.makeText(requireContext(), "Preço atualizado: " + regularMarketPrice + "", Toast.LENGTH_SHORT).show();
CustomToast.success(requireContext(), "Preço atualizado: " + regularMarketPrice + "");
});
} else {
handler.post(() -> Toast.makeText(requireContext(), "Erro ao contactar a API.", Toast.LENGTH_SHORT).show());
handler.post(() -> CustomToast.error(requireContext(), "Erro ao contactar a API."));
}
} catch (Exception e) {
e.printStackTrace();
handler.post(() -> Toast.makeText(requireContext(), "Ativo não encontrado ou erro de rede.", Toast.LENGTH_SHORT).show());
handler.post(() -> CustomToast.error(requireContext(), "Ativo não encontrado ou erro de rede."));
}
});
}
@@ -283,9 +284,9 @@ public class AtivosFragment extends Fragment {
boolean isCriptomoeda = "Criptomoedas".equals(tipo);
if (nome.isEmpty() || quantidade.isEmpty() || precoCompra.isEmpty() || dataCompra.isEmpty() || spinnerTipoAtivo.getSelectedItemPosition() == 0) {
Toast.makeText(requireContext(), "Por favor, preencha os campos obrigatórios.", Toast.LENGTH_SHORT).show();
CustomToast.info(requireContext(), "Por favor, preencha os campos obrigatórios.");
} else if (isCriptomoeda && ticker.isEmpty()) {
Toast.makeText(requireContext(), "Por favor, preencha o Símbolo da Criptomoeda.", Toast.LENGTH_SHORT).show();
CustomToast.info(requireContext(), "Por favor, preencha o Símbolo da Criptomoeda.");
} else {
Ativos ativos = new Ativos(nome, quantidade, Double.parseDouble(precoCompra), Double.parseDouble(precoCompra), dataCompra, tipo, ticker);
@@ -298,7 +299,7 @@ public class AtivosFragment extends Fragment {
dialog.dismiss();
Toast.makeText(requireContext(), "Ativo adicionado com sucesso!", Toast.LENGTH_SHORT).show();
CustomToast.success(requireContext(), "Ativo adicionado com sucesso!");
}
});

View File

@@ -10,6 +10,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.example.lifegrid.utils.CustomToast;
import com.example.lifegrid.R;
import com.example.lifegrid.models.Transacao;
@@ -135,9 +136,7 @@ public class GraficosFragment extends Fragment {
@Override
public void onCancelled(@NonNull DatabaseError error) {
if (getContext() != null) {
Toast.makeText(getContext(), "Erro ao carregar transações.", Toast.LENGTH_SHORT).show();
}
CustomToast.error(requireContext(), "Erro ao carregar transações.");
}
});
}

View File

@@ -10,6 +10,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.example.lifegrid.utils.CustomToast;
import com.example.lifegrid.R;
import com.example.lifegrid.models.Transacao;
@@ -218,7 +219,7 @@ public class HomeFragment extends Fragment {
@Override
public void onCancelled(@NonNull DatabaseError error) {
if (isAdded()) {
Toast.makeText(getContext(), "Erro ao carregar dados", Toast.LENGTH_SHORT).show();
CustomToast.error(requireContext(), "Erro ao carregar dados");
}
}
});

View File

@@ -16,6 +16,7 @@ import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.lifegrid.utils.CustomToast;
import java.util.Calendar;
import java.util.Locale;
@@ -87,7 +88,7 @@ public class MetasFragment extends Fragment {
.setPositiveButton("Sim", (dialog, which) -> {
if (databaseReference != null && userId != null && meta.getId() != null) {
databaseReference.child("users").child(userId).child("metas").child(meta.getId()).removeValue();
Toast.makeText(requireContext(), "Meta excluída.", Toast.LENGTH_SHORT).show();
CustomToast.success(requireContext(), "Meta excluída.");
}
})
.setNegativeButton("Não", null)
@@ -117,8 +118,17 @@ public class MetasFragment extends Fragment {
databaseReference.child("users").child(userId).child("transacoes").child(key).setValue(transacao);
}
double targetVal = 0;
try {
targetVal = Double.parseDouble(meta.getValor().replace(",", "."));
} catch (Exception ignored) {}
editText.setText("");
Toast.makeText(requireContext(), "Valor adicionado e despesa registada!", Toast.LENGTH_SHORT).show();
if (targetVal > 0 && novoValor >= targetVal) {
CustomToast.success(requireContext(), "Parabéns! Alcançou a sua meta: " + meta.getNome() + "!");
} else {
CustomToast.success(requireContext(), "Valor adicionado e despesa registada!");
}
}
}
});
@@ -161,7 +171,7 @@ public class MetasFragment extends Fragment {
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(requireContext(), "Erro ao carregar metas.", Toast.LENGTH_SHORT).show();
CustomToast.error(requireContext(), "Erro ao carregar metas.");
}
});
}
@@ -212,7 +222,7 @@ public class MetasFragment extends Fragment {
if (nome.isEmpty() || categoria.isEmpty() || valor.isEmpty() || data.isEmpty()) {
Toast.makeText(requireContext(), "Por favor, preencha todos os campos.", Toast.LENGTH_SHORT).show();
CustomToast.info(requireContext(), "Por favor, preencha todos os campos.");
} else {
// Aqui seria a lógica para guardar na Firebase
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
@@ -223,7 +233,7 @@ public class MetasFragment extends Fragment {
dialog.dismiss();
Toast.makeText(requireContext(), "Meta criada com sucesso!", Toast.LENGTH_SHORT).show();
CustomToast.success(requireContext(), "Meta criada com sucesso!");
}
});

View File

@@ -20,6 +20,7 @@ import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.example.lifegrid.utils.CustomToast;
import java.util.Calendar;
import java.util.Locale;
@@ -108,7 +109,7 @@ public class TransacoesFragment extends Fragment {
.setPositiveButton("Sim", (dialog, which) -> {
if (databaseReference != null && userId != null && transacao.getId() != null) {
databaseReference.child("users").child(userId).child("transacoes").child(transacao.getId()).removeValue();
Toast.makeText(requireContext(), "Transação excluída.", Toast.LENGTH_SHORT).show();
CustomToast.success(requireContext(), "Transação excluída.");
}
})
.setNegativeButton("Não", null)
@@ -144,7 +145,7 @@ public class TransacoesFragment extends Fragment {
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(requireContext(), "Erro ao carregar transações.", Toast.LENGTH_SHORT).show();
CustomToast.error(requireContext(), "Erro ao carregar transações.");
}
});
}
@@ -295,7 +296,7 @@ public class TransacoesFragment extends Fragment {
if (valor.isEmpty() || descricao.isEmpty() || data.isEmpty() || spinnerCategoria.getSelectedItemPosition() == 0) {
Toast.makeText(requireContext(), "Por favor, preencha todos os campos.", Toast.LENGTH_SHORT).show();
CustomToast.info(requireContext(), "Por favor, preencha todos os campos.");
} else {
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
@@ -305,7 +306,7 @@ public class TransacoesFragment extends Fragment {
dialog.dismiss();
Toast.makeText(requireContext(), "Transação adicionada com sucesso!", Toast.LENGTH_SHORT).show();
CustomToast.success(requireContext(), "Transação adicionada com sucesso!");
}
});