diff --git a/app/src/main/java.zip b/app/src/main/java.zip index b38b215..5d99493 100644 Binary files a/app/src/main/java.zip and b/app/src/main/java.zip differ diff --git a/app/src/main/java/com/santiparra/yomitrack/ui/MainActivity.java b/app/src/main/java/com/santiparra/yomitrack/ui/MainActivity.java index 29d308c..ea867a8 100644 --- a/app/src/main/java/com/santiparra/yomitrack/ui/MainActivity.java +++ b/app/src/main/java/com/santiparra/yomitrack/ui/MainActivity.java @@ -3,14 +3,18 @@ package com.santiparra.yomitrack.ui; import android.app.AlertDialog; import android.content.Intent; import android.content.SharedPreferences; +import android.os.Build; import android.os.Bundle; -import android.widget.ImageView; +import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; import androidx.activity.EdgeToEdge; +import androidx.annotation.RequiresApi; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.widget.Toolbar; +import androidx.core.content.ContextCompat; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowCompat; @@ -18,6 +22,8 @@ import androidx.core.view.WindowInsetsCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; + +import com.google.android.material.bottomnavigation.BottomNavigationView; import com.santiparra.yomitrack.R; import com.santiparra.yomitrack.databinding.ActivityMainBinding; import com.santiparra.yomitrack.ui.fragments.anime_list.FragmentAnime; @@ -35,29 +41,37 @@ public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); + binding = ActivityMainBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); + // Ajustar colores de barra de estado y navegación WindowCompat.setDecorFitsSystemWindows(getWindow(), false); - EdgeToEdge.enable(this); + getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.primary)); + getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.primary)); + // Para que íconos de status bar se vean bien con fondo oscuro + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + getWindow().getInsetsController().setSystemBarsAppearance(0, + android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS | + android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS); + } + + // Alinear padding según barra superior e inferior ViewCompat.setOnApplyWindowInsetsListener(binding.getRoot(), (view, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); - view.setPadding(0, systemBars.top, 0, systemBars.bottom); + view.setPadding(0, systemBars.top, 0, 0); // solo top, bottom lo controla el menú return insets; }); ViewCompat.setOnApplyWindowInsetsListener(binding.bottomNavigationView, (view, insets) -> { int bottomInset = insets.getInsets(WindowInsetsCompat.Type.systemBars()).bottom; view.setPadding(0, 0, 0, bottomInset); - ViewGroup.LayoutParams params = view.getLayoutParams(); if (params instanceof ViewGroup.MarginLayoutParams) { ((ViewGroup.MarginLayoutParams) params).bottomMargin = -bottomInset; } - return insets; }); @@ -94,8 +108,7 @@ public class MainActivity extends AppCompatActivity { .setMessage("¿Deseas cerrar sesión?") .setPositiveButton("Sí", (dialog, which) -> { SharedPreferences prefs = getSharedPreferences("user_session", MODE_PRIVATE); - prefs.edit().clear().apply(); // ← ¡esto borra la sesión real! - + prefs.edit().clear().apply(); startActivity(new Intent(MainActivity.this, LoginActivity.class) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK)); }) diff --git a/app/src/main/java/com/santiparra/yomitrack/ui/fragments/addanime/AddAnimeFragment.java b/app/src/main/java/com/santiparra/yomitrack/ui/fragments/addanime/AddAnimeFragment.java index f52c71c..17a2b72 100644 --- a/app/src/main/java/com/santiparra/yomitrack/ui/fragments/addanime/AddAnimeFragment.java +++ b/app/src/main/java/com/santiparra/yomitrack/ui/fragments/addanime/AddAnimeFragment.java @@ -139,14 +139,20 @@ public class AddAnimeFragment extends Fragment { AnimeEntity anime = new AnimeEntity(); anime.setUserId(userId); anime.setTitle(selected.getTitle()); - anime.setImageUrl(selected.getImageUrl()); + + // ✅ Si no hay imagen, se usa una predeterminada + if (selected.getImageUrl() == null || selected.getImageUrl().isEmpty()) { + selectedImageUrl = "android.resource://" + requireContext().getPackageName() + "/" + R.drawable.sample_cover; + } else { + selectedImageUrl = selected.getImageUrl(); + } + + anime.setImageUrl(selectedImageUrl); anime.setStatus(status); anime.setType(type); anime.setScore(score); anime.setProgress(progress); - selectedImageUrl = selected.getImageUrl(); - api.insertAnime(anime).enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { diff --git a/app/src/main/java/com/santiparra/yomitrack/ui/fragments/addmanga/AddMangaFragment.java b/app/src/main/java/com/santiparra/yomitrack/ui/fragments/addmanga/AddMangaFragment.java index ab4e580..0ca99c4 100644 --- a/app/src/main/java/com/santiparra/yomitrack/ui/fragments/addmanga/AddMangaFragment.java +++ b/app/src/main/java/com/santiparra/yomitrack/ui/fragments/addmanga/AddMangaFragment.java @@ -139,14 +139,19 @@ public class AddMangaFragment extends Fragment { MangaEntity manga = new MangaEntity(); manga.setUserId(userId); manga.setTitle(selected.getTitle()); - manga.setImageUrl(selected.getImageUrl()); + + if (selected.getImageUrl() == null || selected.getImageUrl().isEmpty()) { + selectedImageUrl = "android.resource://" + requireContext().getPackageName() + "/" + R.drawable.sample_cover; + } else { + selectedImageUrl = selected.getImageUrl(); + } + + manga.setImageUrl(selectedImageUrl); manga.setStatus(status); manga.setType(type); manga.setScore(score); manga.setProgress(progress); - selectedImageUrl = selected.getImageUrl(); - api.insertManga(manga).enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { diff --git a/app/src/main/res.zip b/app/src/main/res.zip index 56469be..b332b7f 100644 Binary files a/app/src/main/res.zip and b/app/src/main/res.zip differ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index c683343..e7b2b6a 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -64,5 +64,4 @@ app:itemTextColor="@color/textPrimary" app:labelVisibilityMode="selected" app:menu="@menu/bottom_menu" /> - diff --git a/app/src/main/res/layout/item_activity_card.xml b/app/src/main/res/layout/item_activity_card.xml index 89b40c1..997efcd 100644 --- a/app/src/main/res/layout/item_activity_card.xml +++ b/app/src/main/res/layout/item_activity_card.xml @@ -25,7 +25,7 @@ android:layout_width="60dp" android:layout_height="90dp" android:scaleType="centerCrop" - android:src="@drawable/placeholder_image" + android:src="@drawable/sample_cover" android:layout_marginEnd="12dp" />