This commit is contained in:
2026-05-08 10:44:12 +01:00
parent cdd000b88d
commit cd75d3acfc
11 changed files with 427 additions and 206 deletions

View File

@@ -16,13 +16,10 @@ import androidx.core.view.WindowInsetsCompat;
import androidx.fragment.app.Fragment;
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;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
@@ -30,17 +27,12 @@ import android.widget.Spinner;
import android.widget.Toast;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import androidx.annotation.NonNull;
import java.util.Calendar;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
/**
* TelaInicialActivity funciona como a janela mestre (Container) de navegação da aplicação.
@@ -182,8 +174,8 @@ public class TelaInicialActivity extends AppCompatActivity {
}
transFragment.showNovaTransacaoDialog(valor, descricao, categoria, data);
// Save document to shared preferences or database
saveDocument(imageUri.toString(), descricao, data);
// Save document to Firebase
uploadDocumentoToFirebase(imageUri, descricao, data);
});
}
@@ -194,15 +186,37 @@ public class TelaInicialActivity extends AppCompatActivity {
});
}
private void saveDocument(String uriString, String descricao, String data) {
SharedPreferences prefs = getSharedPreferences("LifeGridDocs", Context.MODE_PRIVATE);
int count = prefs.getInt("doc_count", 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("doc_uri_" + count, uriString);
editor.putString("doc_desc_" + count, descricao);
editor.putString("doc_data_" + count, data);
editor.putInt("doc_count", count + 1);
editor.apply();
private void uploadDocumentoToFirebase(android.net.Uri imageUri, String descricao, String data) {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user == null) {
Toast.makeText(this, "Utilizador não autenticado.", Toast.LENGTH_SHORT).show();
return;
}
Toast.makeText(this, "A guardar documento na Cloud...", Toast.LENGTH_SHORT).show();
String fileName = "invoice_" + System.currentTimeMillis() + ".jpg";
com.google.firebase.storage.StorageReference storageRef = com.google.firebase.storage.FirebaseStorage.getInstance().getReference()
.child("users/" + user.getUid() + "/documentos/" + fileName);
storageRef.putFile(imageUri).addOnSuccessListener(taskSnapshot -> {
storageRef.getDownloadUrl().addOnSuccessListener(uri -> {
String downloadUrl = uri.toString();
DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference("users")
.child(user.getUid()).child("documentos").push();
com.example.lifegrid.models.Documento doc = new com.example.lifegrid.models.Documento(descricao, data, downloadUrl);
dbRef.setValue(doc).addOnCompleteListener(task -> {
if (task.isSuccessful()) {
Toast.makeText(TelaInicialActivity.this, "Documento guardado com sucesso!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(TelaInicialActivity.this, "Erro ao guardar dados na Cloud.", Toast.LENGTH_SHORT).show();
}
});
});
}).addOnFailureListener(e -> {
Toast.makeText(this, "Erro ao enviar imagem para a Cloud.", Toast.LENGTH_SHORT).show();
});
}
@Override
@@ -276,11 +290,14 @@ public class TelaInicialActivity extends AppCompatActivity {
public void atualizarDadosHome() {
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.fragmentContainerView);
int mesSelecionado = spinnerMes.getSelectedItemPosition() + 1; // 1 to 12
String anoSelecionado = spinnerAno.getSelectedItem().toString();
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);
} else if (currentFragment instanceof TransacoesFragment) {
((TransacoesFragment) currentFragment).setFiltro(mesSelecionado, anoSelecionado);
}
}