FavoritePath
Cargando...
Buscando...
Nada coincide
MainActivity.java
1package uo269509.favoritepath.activity;
2
3import android.Manifest;
4import android.content.Intent;
5import android.content.pm.PackageManager;
6import android.os.Bundle;
7import android.os.Handler;
8import android.os.Looper;
9import android.view.View;
10import android.widget.ImageView;
11import android.widget.TextView;
12import android.widget.Toast;
13
14import androidx.appcompat.app.ActionBarDrawerToggle;
15import androidx.appcompat.app.AlertDialog;
16import androidx.appcompat.app.AppCompatActivity;
17import androidx.appcompat.widget.Toolbar;
18import androidx.core.app.ActivityCompat;
19import androidx.core.content.ContextCompat;
20import androidx.core.view.GravityCompat;
21import androidx.drawerlayout.widget.DrawerLayout;
22import androidx.fragment.app.Fragment;
23import androidx.fragment.app.FragmentManager;
24import androidx.fragment.app.FragmentTransaction;
25
26import com.google.android.material.navigation.NavigationView;
27import com.google.firebase.auth.FirebaseAuth;
28import com.google.firebase.firestore.FirebaseFirestore;
29import com.squareup.picasso.Picasso;
30
31import java.util.concurrent.Executor;
32import java.util.concurrent.Executors;
33
34import uo269509.favoritepath.R;
35import uo269509.favoritepath.ui.AmigosFragment;
36import uo269509.favoritepath.ui.AyudaFragment;
37import uo269509.favoritepath.ui.ColeccionesFragment;
38import uo269509.favoritepath.ui.InicioFragment;
39import uo269509.favoritepath.ui.PerfilFragment;
40import uo269509.favoritepath.ui.SolicitudesFragment;
41
42public class MainActivity extends AppCompatActivity {
43
44 private static final int REQUEST_STORAGE_PERMISSION = 1;
45 DrawerLayout drawerLayout;
46 NavigationView navigationView;
47 Toolbar toolbar;
48 private FirebaseAuth mAuth;
49 private FirebaseFirestore db;
50 TextView nombreView;
51 TextView descripcionView;
52
59 @Override
60 public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
61 super.onRequestPermissionsResult(requestCode, permissions, grantResults);
62 if (requestCode == REQUEST_STORAGE_PERMISSION) {
63 if (grantResults[0] == PackageManager.PERMISSION_DENIED) {
64 Toast.makeText(this, "No se ha podido abrir las colecciones, por favor, " +
65 "acepte los permisos necesarios.",Toast.LENGTH_SHORT).show();
66 }else{
68 }
69 }
70 }
71
75 @Override
76 public void onBackPressed() {
77 Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.frameLayout);
78 if (fragment instanceof ColeccionesFragment) {
79 boolean change = ((ColeccionesFragment) fragment).onBackPressed();
80 if(change){
81 super.onBackPressed();
82 }
83 } else {
84 super.onBackPressed();
85 }
86 }
87
93 @Override
94 protected void onCreate(Bundle savedInstanceState) {
95 super.onCreate(savedInstanceState);
96 setContentView(R.layout.activity_main);
97 initialize();
98 navigation();
100 }
101
105 private void navigation(){
106 navigationView.setNavigationItemSelectedListener(item -> {
107 // Aquí se maneja la selección del usuario
108 switch (item.getItemId()) {
109 case R.id.nav_item1: //perfil
110 cargarFragment(new PerfilFragment());
111 toolbar.setTitle(R.string.menu_perfil);
112 drawerLayout.closeDrawer(GravityCompat.START);
113 return true;
114 case R.id.nav_item2: //colecciones
115 checkPermisos();
116 drawerLayout.closeDrawer(GravityCompat.START);
117 return true;
118 case R.id.nav_item3: //amigos
119 cargarFragment(new AmigosFragment());
120 toolbar.setTitle(R.string.listado_amigos);
121 drawerLayout.closeDrawer(GravityCompat.START);
122 return true;
123 case R.id.nav_item4: //solicitudes
124 cargarFragment(new SolicitudesFragment());
125 toolbar.setTitle(R.string.listado_solicitudes);
126 drawerLayout.closeDrawer(GravityCompat.START);
127 return true;
128 case R.id.nav_item5: //ayuda
129 cargarFragment(new AyudaFragment());
130 toolbar.setTitle(R.string.menu_ayuda);
131 drawerLayout.closeDrawer(GravityCompat.START);
132 return true;
133 default:
134 Toast.makeText(this, "Seleccione una opción válida",Toast.LENGTH_SHORT).show();
135 return false;
136 }
137 });
138 }
139
144 public void logOut(View view){
145 mAuth.signOut();
146 Intent intent = new Intent(this, LoginActivity.class);
147 startActivity(intent);
148 }
149
154 public void cargarFragment(Fragment fragment){
155 FragmentManager fragmentManager = getSupportFragmentManager();
156 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
157 fragmentTransaction.replace(R.id.frameLayout, fragment);
158 fragmentTransaction.commit();
159 }
160
164 private void initialize(){
165 drawerLayout = findViewById(R.id.drawer_layout);
166 navigationView = findViewById(R.id.nav_view);
167 toolbar = findViewById(R.id.toolbar);
168 ActionBarDrawerToggle toogle = new ActionBarDrawerToggle(this, drawerLayout,toolbar,R.string.open, R.string.close);
169 drawerLayout.addDrawerListener(toogle);
170 toogle.syncState();
172 toolbar.setTitle(R.string.app_name);
173 mAuth = FirebaseAuth.getInstance();
174 if(mAuth.getCurrentUser().getPhotoUrl() != null)
175 Picasso.get().load(mAuth.getCurrentUser().getPhotoUrl()).into((ImageView) navigationView.getHeaderView(0).findViewById(R.id.imagenPerfil));
176 db = FirebaseFirestore.getInstance();
177 }
178
182 public void actualizarNavHeader() {
183 final Executor EXECUTOR = Executors.newSingleThreadExecutor();
184 final Handler HANDLER = new Handler(Looper.getMainLooper());
185 EXECUTOR.execute(() -> {
186 HANDLER.post(() -> {
187 mAuth = FirebaseAuth.getInstance();
188 db = FirebaseFirestore.getInstance();
189 });
190 HANDLER.post(() -> {
191 db.collection("usuarios").document(mAuth.getCurrentUser().getEmail()).get().addOnSuccessListener(
192 documentSnapshot -> {
193 if(documentSnapshot.exists()){
194 nombreView = findViewById(R.id.nombreUsuario);
195 descripcionView = findViewById(R.id.descripcionUsuario);
196 nombreView.setText((String) documentSnapshot.get("nombre"));
197 descripcionView.setText((String) documentSnapshot.get("descripcion"));
198 }
199 }
200 );
201 });
202
203 });
204 }
205
209 public void abrirColecciones(){
210 cargarFragment(new ColeccionesFragment());
211 toolbar.setTitle(R.string.listado_colecciones);
212 drawerLayout.closeDrawer(GravityCompat.START);
213 }
214
219 private void checkPermisos() {
220 if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
221 || ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
222 new AlertDialog.Builder(this)
223 .setTitle("Permiso requerido")
224 .setMessage("La aplicación necesita ciertos permisos para poder usar sus colecciones.")
225 .setPositiveButton("Aceptar", (dialogInterface, i) -> {
226 ActivityCompat.requestPermissions(MainActivity.this,
227 new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION},
228 REQUEST_STORAGE_PERMISSION);
229 }).show();
230 }else{
231 abrirColecciones();
232 }
233 }
234
235}
void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
void onCreate(Bundle savedInstanceState)