vamos
This commit is contained in:
@@ -10,11 +10,14 @@ import android.view.ViewGroup;
|
||||
|
||||
import com.example.lifegrid.R;
|
||||
|
||||
|
||||
/**
|
||||
* AtivosFragment diz respeito à janela do ecossistema dedicada à gestão
|
||||
* do património estático ou em avaliação progressiva na bolsa/bancos.
|
||||
*/
|
||||
public class AtivosFragment extends Fragment {
|
||||
|
||||
public AtivosFragment() {
|
||||
// Required empty public constructor
|
||||
// Construtor público vazio obrigatório
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -25,7 +28,7 @@ public class AtivosFragment extends Fragment {
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
// Inflaciona o layout para este fragmento
|
||||
View root = inflater.inflate(R.layout.fragment_ativos, container, false);
|
||||
|
||||
|
||||
|
||||
@@ -10,11 +10,14 @@ import android.view.ViewGroup;
|
||||
|
||||
import com.example.lifegrid.R;
|
||||
|
||||
|
||||
/**
|
||||
* DefinicoesFragment carrega os menus base de configurações do utilizador,
|
||||
* sendo o local ideal para definir opções de acessibilidade, mudança de password e logout.
|
||||
*/
|
||||
public class DefinicoesFragment extends Fragment {
|
||||
|
||||
public DefinicoesFragment() {
|
||||
// Required empty public constructor
|
||||
// Construtor público vazio obrigatório
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -25,7 +28,7 @@ public class DefinicoesFragment extends Fragment {
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
// Inflaciona o layout para este fragmento
|
||||
View root = inflater.inflate(R.layout.fragment_definicoes, container, false);
|
||||
|
||||
|
||||
|
||||
@@ -10,11 +10,14 @@ import android.view.ViewGroup;
|
||||
|
||||
import com.example.lifegrid.R;
|
||||
|
||||
|
||||
/**
|
||||
* DocumentosFragment é a área orientada ao scan, compilação de faturas e arquivo seguro.
|
||||
* Foca-se unicamente nas componentes não contabéis mas sim em anotações em anexo faturado.
|
||||
*/
|
||||
public class DocumentosFragment extends Fragment {
|
||||
|
||||
public DocumentosFragment() {
|
||||
// Required empty public constructor
|
||||
// Construtor público vazio obrigatório
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -25,7 +28,7 @@ public class DocumentosFragment extends Fragment {
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
// Inflaciona o layout para este fragmento
|
||||
View root = inflater.inflate(R.layout.fragment_documentos, container, false);
|
||||
|
||||
|
||||
|
||||
@@ -10,10 +10,14 @@ import android.view.ViewGroup;
|
||||
|
||||
import com.example.lifegrid.R;
|
||||
|
||||
/**
|
||||
* GraficosFragment tem como único propósito compilar a informação da aplicação sob uma
|
||||
* componente puramente matemática exibida de forma ilustrativa. Tarta da visão de Dashboard de estatística.
|
||||
*/
|
||||
public class GraficosFragment extends Fragment {
|
||||
|
||||
public GraficosFragment() {
|
||||
// Required empty public constructor
|
||||
// Construtor público vazio obrigatório
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -24,7 +28,7 @@ public class GraficosFragment extends Fragment {
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
// Inflaciona o layout para este fragmento
|
||||
View root = inflater.inflate(R.layout.fragment_graficos, container, false);
|
||||
|
||||
|
||||
|
||||
@@ -10,10 +10,14 @@ import android.view.ViewGroup;
|
||||
|
||||
import com.example.lifegrid.R;
|
||||
|
||||
/**
|
||||
* MetasFragment projeta objetivos futuros onde o utilizador fixa montantes e datas a alcançar
|
||||
* sendo apresentada percentagem de sucesso à medida que deposita fundos dedicados.
|
||||
*/
|
||||
public class MetasFragment extends Fragment {
|
||||
|
||||
public MetasFragment() {
|
||||
// Required empty public constructor
|
||||
// Construtor público vazio obrigatório
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -24,7 +28,7 @@ public class MetasFragment extends Fragment {
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
// Inflaciona o layout para este fragmento
|
||||
View root = inflater.inflate(R.layout.fragment_metas, container, false);
|
||||
|
||||
|
||||
|
||||
@@ -8,15 +8,40 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.app.DatePickerDialog;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Locale;
|
||||
|
||||
import com.example.lifegrid.R;
|
||||
import com.example.lifegrid.models.Transacao;
|
||||
import com.google.firebase.Firebase;
|
||||
import com.google.firebase.auth.FirebaseAuth;
|
||||
import com.google.firebase.auth.FirebaseUser;
|
||||
import com.google.firebase.database.DatabaseReference;
|
||||
import com.google.firebase.database.FirebaseDatabase;
|
||||
|
||||
|
||||
/**
|
||||
* TransacoesFragment controla a aba pertencente às listagens e histórico de carteira e gestão de dados base.
|
||||
* É responsável por permitir o lançamento do pop-up para a construção de novas entradas financeiras (receitas/despesas).
|
||||
*/
|
||||
public class TransacoesFragment extends Fragment {
|
||||
|
||||
|
||||
|
||||
public TransacoesFragment() {
|
||||
// Required empty public constructor
|
||||
// Construtor público vazio obrigatório
|
||||
}
|
||||
|
||||
|
||||
@@ -29,10 +54,93 @@ public class TransacoesFragment extends Fragment {
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
// Inflaciona o layout para este fragmento
|
||||
View root = inflater.inflate(R.layout.fragment_transacoes, container, false);
|
||||
|
||||
Button novaTransacaoButton = root.findViewById(R.id.novaTransacaoButton);
|
||||
novaTransacaoButton.setOnClickListener(v -> showNovaTransacaoDialog());
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria e monta manualmente uma janela Modal (Pop-up) a fim do utilizador preencher
|
||||
* os detalhes referentes a uma recém aquisição de receita ou encargo para alimentar a base de dados.
|
||||
*/
|
||||
private void showNovaTransacaoDialog() {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext());
|
||||
View dialogView = getLayoutInflater().inflate(R.layout.dialog_nova_transacao, null);
|
||||
builder.setView(dialogView);
|
||||
|
||||
AlertDialog dialog = builder.create();
|
||||
if (dialog.getWindow() != null) {
|
||||
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
}
|
||||
|
||||
ImageView btnFechar = dialogView.findViewById(R.id.btnFechar);
|
||||
btnFechar.setOnClickListener(v -> dialog.dismiss());
|
||||
|
||||
EditText etData = dialogView.findViewById(R.id.etData);
|
||||
etData.setOnClickListener(v -> {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
int year = calendar.get(Calendar.YEAR);
|
||||
int month = calendar.get(Calendar.MONTH);
|
||||
int day = calendar.get(Calendar.DAY_OF_MONTH);
|
||||
|
||||
DatePickerDialog datePickerDialog = new DatePickerDialog(requireContext(),
|
||||
(view, selectedYear, selectedMonth, selectedDay) -> {
|
||||
String formattedDate = String.format(Locale.getDefault(), "%02d/%02d/%04d", selectedDay, selectedMonth + 1, selectedYear);
|
||||
etData.setText(formattedDate);
|
||||
}, year, month, day);
|
||||
datePickerDialog.show();
|
||||
});
|
||||
|
||||
Button btnAdicionarTransacao = dialogView.findViewById(R.id.btnAdicionarTransacao);
|
||||
EditText etValor = dialogView.findViewById(R.id.etValor);
|
||||
EditText etDescricao = dialogView.findViewById(R.id.etDescricao);
|
||||
Spinner spinnerCategoria = dialogView.findViewById(R.id.spinnerCategoria);
|
||||
Spinner spinnerTipo = dialogView.findViewById(R.id.spinnerTipo);
|
||||
|
||||
spinnerTipo.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
int arrayResId = position == 0 ? R.array.categoria_receita : R.array.categoria_despesa;
|
||||
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(requireContext(),
|
||||
arrayResId, android.R.layout.simple_spinner_item);
|
||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
spinnerCategoria.setAdapter(adapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {
|
||||
}
|
||||
});
|
||||
|
||||
btnAdicionarTransacao.setOnClickListener(v -> {
|
||||
String valor = etValor.getText().toString().trim();
|
||||
String descricao = etDescricao.getText().toString().trim();
|
||||
String data = etData.getText().toString().trim();
|
||||
String tipo = spinnerTipo.getSelectedItem().toString();
|
||||
String categoria = spinnerCategoria.getSelectedItem().toString();
|
||||
|
||||
Transacao transacao = new Transacao(tipo, valor, categoria, descricao, data);
|
||||
|
||||
|
||||
if (valor.isEmpty() || descricao.isEmpty() || data.isEmpty() || spinnerCategoria.getSelectedItemPosition() == 0) {
|
||||
Toast.makeText(requireContext(), "Por favor, preencha todos os campos.", Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
|
||||
String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
|
||||
String key = databaseReference.child("users").child(userId).child("transacoes").push().getKey();
|
||||
|
||||
databaseReference.child("users").child(userId).child("transacoes").child(key).setValue(transacao);
|
||||
|
||||
|
||||
dialog.dismiss();
|
||||
Toast.makeText(requireContext(), "Transação adicionada com sucesso!", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
|
||||
dialog.show();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user