a mudar design
This commit is contained in:
@@ -11,11 +11,17 @@ import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.activity.EdgeToEdge;
|
||||
import androidx.activity.result.ActivityResultLauncher;
|
||||
import androidx.activity.result.contract.ActivityResultContracts;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.graphics.Insets;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.net.Uri;
|
||||
|
||||
import com.google.firebase.auth.FirebaseAuth;
|
||||
import com.google.firebase.auth.FirebaseUser;
|
||||
|
||||
@@ -27,6 +33,12 @@ public class DefinicoesActivity extends AppCompatActivity {
|
||||
private EditText etUsername;
|
||||
private Switch switchNotifications;
|
||||
private Spinner spinnerCurrency;
|
||||
|
||||
private ImageView ivProfilePicture;
|
||||
private TextView tvChangePhoto;
|
||||
private Uri selectedImageUri;
|
||||
|
||||
private ActivityResultLauncher<String> pickImageLauncher;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@@ -46,9 +58,40 @@ public class DefinicoesActivity extends AppCompatActivity {
|
||||
switchNotifications = findViewById(R.id.switchNotifications);
|
||||
spinnerCurrency = findViewById(R.id.spinnerCurrency);
|
||||
|
||||
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
|
||||
if (user != null && user.getDisplayName() != null && !user.getDisplayName().isEmpty()) {
|
||||
etUsername.setText(user.getDisplayName());
|
||||
ivProfilePicture = findViewById(R.id.ivProfilePicture);
|
||||
tvChangePhoto = findViewById(R.id.tvChangePhoto);
|
||||
|
||||
pickImageLauncher = registerForActivityResult(new ActivityResultContracts.GetContent(),
|
||||
uri -> {
|
||||
if (uri != null) {
|
||||
selectedImageUri = uri;
|
||||
ivProfilePicture.setImageURI(uri);
|
||||
}
|
||||
});
|
||||
|
||||
tvChangePhoto.setOnClickListener(v -> pickImageLauncher.launch("image/*"));
|
||||
ivProfilePicture.setOnClickListener(v -> pickImageLauncher.launch("image/*"));
|
||||
|
||||
SharedPreferences prefs = getSharedPreferences("LifeGridPrefs", Context.MODE_PRIVATE);
|
||||
String savedName = prefs.getString("username", "");
|
||||
String savedPhotoUri = prefs.getString("profile_photo_uri", "");
|
||||
|
||||
if (!savedPhotoUri.isEmpty()) {
|
||||
selectedImageUri = Uri.parse(savedPhotoUri);
|
||||
try {
|
||||
ivProfilePicture.setImageURI(selectedImageUri);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
if (!savedName.isEmpty()) {
|
||||
etUsername.setText(savedName);
|
||||
} else {
|
||||
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
|
||||
if (user != null && user.getDisplayName() != null && !user.getDisplayName().isEmpty()) {
|
||||
etUsername.setText(user.getDisplayName());
|
||||
}
|
||||
}
|
||||
|
||||
btnBack.setOnClickListener(v -> {
|
||||
@@ -64,8 +107,18 @@ public class DefinicoesActivity extends AppCompatActivity {
|
||||
});
|
||||
|
||||
btnSaveSettings.setOnClickListener(v -> {
|
||||
// Em implementações futuras isto iria guardar a foto, username (Firebase UserProfileChangeRequest)
|
||||
// Notificações e moeda escolhida no Firebase Realtime Database
|
||||
SharedPreferences.Editor editor = getSharedPreferences("LifeGridPrefs", Context.MODE_PRIVATE).edit();
|
||||
editor.putString("username", etUsername.getText().toString().trim());
|
||||
if (selectedImageUri != null) {
|
||||
editor.putString("profile_photo_uri", selectedImageUri.toString());
|
||||
try {
|
||||
getContentResolver().takePersistableUriPermission(selectedImageUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
editor.apply();
|
||||
|
||||
Toast.makeText(this, "Definições guardadas com sucesso!", Toast.LENGTH_SHORT).show();
|
||||
finish();
|
||||
});
|
||||
|
||||
@@ -279,7 +279,7 @@ public class LoginActivity extends AppCompatActivity {
|
||||
// [START create_credential_manager_request]
|
||||
// Instancia um pedido de início de sessão do Google
|
||||
GetGoogleIdOption googleIdOption = new GetGoogleIdOption.Builder()
|
||||
.setFilterByAuthorizedAccounts(true)
|
||||
.setFilterByAuthorizedAccounts(false)
|
||||
.setServerClientId(getString(R.string.default_web_client_id))
|
||||
.build();
|
||||
|
||||
@@ -291,11 +291,11 @@ public class LoginActivity extends AppCompatActivity {
|
||||
|
||||
// Lança a interface do Gestor de Credenciais
|
||||
credentialManager.getCredentialAsync(
|
||||
getBaseContext(),
|
||||
LoginActivity.this,
|
||||
request,
|
||||
new CancellationSignal(),
|
||||
Executors.newSingleThreadExecutor(),
|
||||
new CredentialManagerCallback<>() {
|
||||
androidx.core.content.ContextCompat.getMainExecutor(LoginActivity.this),
|
||||
new CredentialManagerCallback<GetCredentialResponse, GetCredentialException>() {
|
||||
@Override
|
||||
public void onResult(GetCredentialResponse result) {
|
||||
// Extrai a credencial do resultado devolvido pelo Gestor de Credenciais
|
||||
@@ -305,6 +305,7 @@ public class LoginActivity extends AppCompatActivity {
|
||||
@Override
|
||||
public void onError(GetCredentialException e) {
|
||||
Log.e(TAG, "Couldn't retrieve user's credentials: " + e.getLocalizedMessage());
|
||||
Toast.makeText(LoginActivity.this, "Falha ao abrir Google Sign In.", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
@@ -4,6 +4,9 @@ import android.os.Bundle;
|
||||
import android.content.Intent;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.net.Uri;
|
||||
|
||||
import androidx.activity.EdgeToEdge;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
@@ -56,6 +59,9 @@ public class TelaInicialActivity extends AppCompatActivity {
|
||||
private TextView tvTitulo;
|
||||
private TextView tvTitulo2;
|
||||
|
||||
private ImageView ivHeaderProfilePicture;
|
||||
private TextView tvHeaderUsername;
|
||||
|
||||
private Spinner spinnerMes;
|
||||
private Spinner spinnerAno;
|
||||
|
||||
@@ -83,6 +89,9 @@ public class TelaInicialActivity extends AppCompatActivity {
|
||||
tvTitulo = findViewById(R.id.tvTitulo);
|
||||
tvTitulo2 = findViewById(R.id.tvTitulo2);
|
||||
|
||||
ivHeaderProfilePicture = findViewById(R.id.ivHeaderProfilePicture);
|
||||
tvHeaderUsername = findViewById(R.id.tvHeaderUsername);
|
||||
|
||||
spinnerMes = findViewById(R.id.spinnerMes);
|
||||
spinnerAno = findViewById(R.id.spinnerAno);
|
||||
|
||||
@@ -93,19 +102,26 @@ public class TelaInicialActivity extends AppCompatActivity {
|
||||
.replace(R.id.fragmentContainerView, transacoesFragment2)
|
||||
.commit();
|
||||
|
||||
ImageView carteiraImageView = findViewById(R.id.carteiraImageView);
|
||||
carteiraImageView.setOnClickListener(v -> {
|
||||
android.view.View.OnClickListener openTransacoesListener = v -> {
|
||||
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);
|
||||
|
||||
ImageView carteiraImageView = findViewById(R.id.carteiraImageView);
|
||||
carteiraImageView.setOnClickListener(openTransacoesListener);
|
||||
ImageView setaImageView = findViewById(R.id.setaImageView);
|
||||
setaImageView.setOnClickListener(v -> {
|
||||
Fragment ativosFragment = new AtivosFragment();
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.replace(R.id.fragmentContainerView, ativosFragment)
|
||||
.commit();
|
||||
scrollToFragment();
|
||||
});
|
||||
ImageView graficoImageView = findViewById(R.id.graficoImageView);
|
||||
graficoImageView.setOnClickListener(v -> {
|
||||
@@ -113,6 +129,7 @@ public class TelaInicialActivity extends AppCompatActivity {
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.replace(R.id.fragmentContainerView, graficosFragment)
|
||||
.commit();
|
||||
scrollToFragment();
|
||||
});
|
||||
ImageView alvoImageView = findViewById(R.id.alvoImageView);
|
||||
alvoImageView.setOnClickListener(v -> {
|
||||
@@ -120,13 +137,7 @@ public class TelaInicialActivity extends AppCompatActivity {
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.replace(R.id.fragmentContainerView, metasFragment)
|
||||
.commit();
|
||||
});
|
||||
ImageView documentoImageView = findViewById(R.id.documentoImageView);
|
||||
documentoImageView.setOnClickListener(v -> {
|
||||
Fragment documentoFragment = new DocumentosFragment();
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.replace(R.id.fragmentContainerView, documentoFragment)
|
||||
.commit();
|
||||
scrollToFragment();
|
||||
});
|
||||
ImageView definicoesImageView = findViewById(R.id.definicoesImageView);
|
||||
definicoesImageView.setOnClickListener(v -> {
|
||||
@@ -135,6 +146,43 @@ public class TelaInicialActivity extends AppCompatActivity {
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
SharedPreferences prefs = getSharedPreferences("LifeGridPrefs", Context.MODE_PRIVATE);
|
||||
String savedName = prefs.getString("username", "");
|
||||
String savedPhotoUri = prefs.getString("profile_photo_uri", "");
|
||||
|
||||
if (ivHeaderProfilePicture != null && !savedPhotoUri.isEmpty()) {
|
||||
try {
|
||||
ivHeaderProfilePicture.setImageURI(Uri.parse(savedPhotoUri));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
if (tvHeaderUsername != null) {
|
||||
if (!savedName.isEmpty()) {
|
||||
tvHeaderUsername.setText(savedName);
|
||||
} else {
|
||||
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
|
||||
if (user != null && user.getDisplayName() != null && !user.getDisplayName().isEmpty()) {
|
||||
tvHeaderUsername.setText(user.getDisplayName());
|
||||
} else {
|
||||
tvHeaderUsername.setText("Utilizador");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void scrollToFragment() {
|
||||
android.widget.ScrollView scrollView = findViewById(R.id.mainScrollView);
|
||||
android.view.View barraCardView = findViewById(R.id.barraCardView);
|
||||
if (scrollView != null && barraCardView != null) {
|
||||
scrollView.post(() -> scrollView.smoothScrollTo(0, barraCardView.getTop() - 20));
|
||||
}
|
||||
}
|
||||
|
||||
private void setupSpinners() {
|
||||
ArrayAdapter<String> mesAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, meses);
|
||||
mesAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.example.lifegrid.menu;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.example.lifegrid.R;
|
||||
|
||||
|
||||
public class HomeFragment extends Fragment {
|
||||
|
||||
public HomeFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
}
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
View root = inflater.inflate(R.layout.fragment_home, container, false);
|
||||
|
||||
return root;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user