Merge pull request 'Added documentation in all the code and added a DisplayAlert when deleting an anime from a list' (#38) from Mathéo into master
continuous-integration/drone/push Build is failing
Details
continuous-integration/drone/push Build is failing
Details
Reviewed-on: #38pull/40/head
commit
565b5b16a9
@ -1,23 +1,39 @@
|
|||||||
namespace MangaMap.Views.Composants;
|
|
||||||
using MangaMap.Model;
|
using MangaMap.Model;
|
||||||
|
|
||||||
public partial class StyleBouton : ContentView
|
namespace MangaMap.Views.Composants
|
||||||
{
|
{
|
||||||
public Manager my_manager => (App.Current as App).MyManager;
|
/// <summary>
|
||||||
|
/// Code-behind pour le UserControl StyleBouton.xaml.
|
||||||
|
/// </summary>
|
||||||
|
public partial class StyleBouton : ContentView
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Instance du manager pour accéder aux données.
|
||||||
|
/// </summary>
|
||||||
|
public Manager my_manager => (App.Current as App).MyManager;
|
||||||
|
|
||||||
public StyleBouton()
|
/// <summary>
|
||||||
{
|
/// Constructeur de la classe StyleBouton.
|
||||||
InitializeComponent();
|
/// </summary>
|
||||||
BindingContext = my_manager;
|
public StyleBouton()
|
||||||
}
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
BindingContext = my_manager;
|
||||||
|
}
|
||||||
|
|
||||||
private async void AnimeImageClickedList(object sender, EventArgs e)
|
/// <summary>
|
||||||
{
|
/// Gère l'événement lorsqu'une image d'anime est cliquée.
|
||||||
var selectedAnime = (sender as ImageButton)?.BindingContext as Oeuvre;
|
/// </summary>
|
||||||
if (selectedAnime != null)
|
/// <param name="sender">L'objet déclenchant l'événement.</param>
|
||||||
|
/// <param name="e">Les arguments de l'événement.</param>
|
||||||
|
private async void AnimeImageClickedList(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
// Naviguez vers la page de la fiche d'anime en passant l'objet sélectionné
|
var selectedAnime = (sender as ImageButton)?.BindingContext as Oeuvre;
|
||||||
await Navigation.PushAsync(new ficheAnime(selectedAnime));
|
if (selectedAnime != null)
|
||||||
|
{
|
||||||
|
// Naviguez vers la page de la fiche d'anime en passant l'objet sélectionné
|
||||||
|
await Navigation.PushAsync(new ficheAnime(selectedAnime));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,265 +1,294 @@
|
|||||||
namespace MangaMap.Views;
|
namespace MangaMap.Views
|
||||||
|
|
||||||
using Model;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Windows.Input;
|
|
||||||
using System.Xml.Linq;
|
|
||||||
using Microsoft.Maui.Graphics;
|
|
||||||
|
|
||||||
|
|
||||||
public partial class ficheAnime : ContentPage, INotifyPropertyChanged
|
|
||||||
{
|
{
|
||||||
public Manager my_manager => (App.Current as App).MyManager;
|
using Model;
|
||||||
public Oeuvre AnimeModel { get; set; }
|
using System.ComponentModel;
|
||||||
|
using System.Diagnostics;
|
||||||
public ficheAnime()
|
using System.Drawing;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
using Microsoft.Maui.Graphics;
|
||||||
|
|
||||||
|
public partial class ficheAnime : ContentPage, INotifyPropertyChanged
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
public Manager my_manager => (App.Current as App).MyManager;
|
||||||
|
public Oeuvre AnimeModel { get; set; }
|
||||||
|
|
||||||
BindingContext = this;
|
/// <summary>
|
||||||
|
/// Constructeur par défaut de la page ficheAnime.
|
||||||
|
/// </summary>
|
||||||
|
public ficheAnime()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
}
|
BindingContext = this;
|
||||||
|
}
|
||||||
|
|
||||||
public ficheAnime(Oeuvre anime)
|
/// <summary>
|
||||||
{
|
/// Constructeur de la page ficheAnime prenant en paramètre un objet Oeuvre.
|
||||||
AnimeModel = anime;
|
/// </summary>
|
||||||
|
/// <param name="anime">L'objet Oeuvre à afficher dans la fiche.</param>
|
||||||
|
public ficheAnime(Oeuvre anime)
|
||||||
|
{
|
||||||
|
AnimeModel = anime;
|
||||||
|
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
BindingContext = this;
|
BindingContext = this;
|
||||||
|
|
||||||
SetNote();
|
SetNote();
|
||||||
}
|
|
||||||
|
|
||||||
public async void AjouterListe(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (my_manager.UtilisateurActuel.Email == null)
|
|
||||||
{
|
|
||||||
await DisplayAlert("Erreur", "Vous n'êtes pas connecté.", "OK");
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Si la série est déjà dans la liste il faut bloquer l'ajout.
|
/// <summary>
|
||||||
foreach (Oeuvre oeuvre in my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage)
|
/// Gère l'événement lorsqu'on clique sur le bouton d'ajout à la liste.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender">L'objet déclenchant l'événement.</param>
|
||||||
|
/// <param name="e">Les arguments de l'événement.</param>
|
||||||
|
public async void AjouterListe(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (oeuvre.Nom == AnimeModel.Nom)
|
if (my_manager.UtilisateurActuel.Email == null)
|
||||||
{
|
{
|
||||||
await DisplayAlert("Erreur", "Avez déjà cette série dans une la liste 'En visionnage'.", "OK");
|
await DisplayAlert("Erreur", "Vous n'êtes pas connecté.", "OK");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
foreach (Oeuvre oeuvre in my_manager.UtilisateurActuel.ListeOeuvreDejaVu)
|
// Si la série est déjà dans la liste il faut bloquer l'ajout.
|
||||||
{
|
foreach (Oeuvre oeuvre in my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage)
|
||||||
if (oeuvre.Nom == AnimeModel.Nom)
|
|
||||||
{
|
{
|
||||||
await DisplayAlert("Erreur", "Avez déjà cette série dans une la liste 'Déjà vu'.", "OK");
|
if (oeuvre.Nom == AnimeModel.Nom)
|
||||||
return;
|
{
|
||||||
|
await DisplayAlert("Erreur", "Avez déjà cette série dans une la liste 'En visionnage'.", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
foreach (Oeuvre oeuvre in my_manager.UtilisateurActuel.ListeOeuvreDejaVu)
|
||||||
foreach (Oeuvre oeuvre in my_manager.UtilisateurActuel.ListeOeuvreFavorites)
|
|
||||||
{
|
|
||||||
if (oeuvre.Nom == AnimeModel.Nom)
|
|
||||||
{
|
{
|
||||||
await DisplayAlert("Erreur", "Avez déjà cette série dans une la liste 'En favoris'.", "OK");
|
if (oeuvre.Nom == AnimeModel.Nom)
|
||||||
return;
|
{
|
||||||
|
await DisplayAlert("Erreur", "Avez déjà cette série dans une la liste 'Déjà vu'.", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
foreach (Oeuvre oeuvre in my_manager.UtilisateurActuel.ListeOeuvreFavorites)
|
||||||
foreach (Oeuvre oeuvre in my_manager.UtilisateurActuel.ListeOeuvrePourPlusTard)
|
|
||||||
{
|
|
||||||
if (oeuvre.Nom == AnimeModel.Nom)
|
|
||||||
{
|
{
|
||||||
await DisplayAlert("Erreur", "Avez déjà cette série dans une la liste 'Pour plus tard'.", "OK");
|
if (oeuvre.Nom == AnimeModel.Nom)
|
||||||
return;
|
{
|
||||||
|
await DisplayAlert("Erreur", "Avez déjà cette série dans une la liste 'En favoris'.", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach (Oeuvre oeuvre in my_manager.UtilisateurActuel.ListeOeuvrePourPlusTard)
|
||||||
|
{
|
||||||
|
if (oeuvre.Nom == AnimeModel.Nom)
|
||||||
|
{
|
||||||
|
await DisplayAlert("Erreur", "Avez déjà cette série dans une la liste 'Pour plus tard'.", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
string selectedOption = await DisplayActionSheet("Ajouter à quelle liste ?", "Annuler", null, "En Visionnage", "Déjà Vu", "Pour Plus Tard", "Favoris");
|
|
||||||
|
|
||||||
if (selectedOption == "Annuler" || selectedOption == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Debug.WriteLine("Selected Option: " + selectedOption);
|
string selectedOption = await DisplayActionSheet("Ajouter à quelle liste ?", "Annuler", null, "En Visionnage", "Déjà Vu", "Pour Plus Tard", "Favoris");
|
||||||
|
|
||||||
// Ajouter l'anime à la liste sélectionnée
|
if (selectedOption == "Annuler" || selectedOption == null)
|
||||||
switch (selectedOption)
|
return;
|
||||||
{
|
|
||||||
case "En Visionnage":
|
|
||||||
Debug.WriteLine("Ajout à la liste En Visionnage");
|
|
||||||
my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage.Add(AnimeModel);
|
|
||||||
break;
|
|
||||||
case "Déjà Vu":
|
|
||||||
Debug.WriteLine("Ajout à la liste Déjà Vu");
|
|
||||||
my_manager.UtilisateurActuel.ListeOeuvreDejaVu.Add(AnimeModel);
|
|
||||||
break;
|
|
||||||
case "Pour Plus Tard":
|
|
||||||
Debug.WriteLine("Ajout à la liste Pour Plus Tard");
|
|
||||||
my_manager.UtilisateurActuel.ListeOeuvrePourPlusTard.Add(AnimeModel);
|
|
||||||
break;
|
|
||||||
case "Favoris":
|
|
||||||
Debug.WriteLine("Ajout à la liste Favoris");
|
|
||||||
my_manager.UtilisateurActuel.ListeOeuvreFavorites.Add(AnimeModel);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
my_manager.sauvegarder();
|
Debug.WriteLine("Selected Option: " + selectedOption);
|
||||||
|
|
||||||
await Navigation.PushAsync(new listPage());
|
// Ajouter l'anime à la liste sélectionnée
|
||||||
}
|
switch (selectedOption)
|
||||||
|
{
|
||||||
|
case "En Visionnage":
|
||||||
|
Debug.WriteLine("Ajout à la liste En Visionnage");
|
||||||
|
my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage.Add(AnimeModel);
|
||||||
|
break;
|
||||||
|
case "Déjà Vu":
|
||||||
|
Debug.WriteLine("Ajout à la liste Déjà Vu");
|
||||||
|
my_manager.UtilisateurActuel.ListeOeuvreDejaVu.Add(AnimeModel);
|
||||||
|
break;
|
||||||
|
case "Pour Plus Tard":
|
||||||
|
Debug.WriteLine("Ajout à la liste Pour Plus Tard");
|
||||||
|
my_manager.UtilisateurActuel.ListeOeuvrePourPlusTard.Add(AnimeModel);
|
||||||
|
break;
|
||||||
|
case "Favoris":
|
||||||
|
Debug.WriteLine("Ajout à la liste Favoris");
|
||||||
|
my_manager.UtilisateurActuel.ListeOeuvreFavorites.Add(AnimeModel);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
public async void SupprimerListe(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage.Remove(AnimeModel) ||
|
|
||||||
my_manager.UtilisateurActuel.ListeOeuvreDejaVu.Remove(AnimeModel) ||
|
|
||||||
my_manager.UtilisateurActuel.ListeOeuvreFavorites.Remove(AnimeModel) ||
|
|
||||||
my_manager.UtilisateurActuel.ListeOeuvrePourPlusTard.Remove(AnimeModel))
|
|
||||||
my_manager.sauvegarder();
|
my_manager.sauvegarder();
|
||||||
|
|
||||||
else
|
await Navigation.PushAsync(new listPage());
|
||||||
{
|
|
||||||
await DisplayAlert("Erreur", "Avez n'avez pas cette série dans une liste.", "OK");
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private void SetNote()
|
/// <summary>
|
||||||
{
|
/// Gère l'événement lorsqu'on clique sur le bouton de suppression de la liste.
|
||||||
stars.Children.Clear();
|
/// </summary>
|
||||||
bool test = my_manager.UtilisateurActuel.notesNombres.ContainsKey(AnimeModel.Nom);
|
/// <param name="sender">L'objet déclenchant l'événement.</param>
|
||||||
List<int> x;
|
/// <param name="e">Les arguments de l'événement.</param>
|
||||||
|
public async void SupprimerListe(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage.Remove(AnimeModel) ||
|
||||||
|
my_manager.UtilisateurActuel.ListeOeuvreDejaVu.Remove(AnimeModel) ||
|
||||||
|
my_manager.UtilisateurActuel.ListeOeuvreFavorites.Remove(AnimeModel) ||
|
||||||
|
my_manager.UtilisateurActuel.ListeOeuvrePourPlusTard.Remove(AnimeModel))
|
||||||
|
my_manager.sauvegarder();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await DisplayAlert("Erreur", "Avez n'avez pas cette série dans une liste.", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await DisplayAlert("Succès", "La série a bien été supprimée de la liste.", "OK");
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 5; i++)
|
/// <summary>
|
||||||
|
/// Affiche les étoiles de notation de l'anime.
|
||||||
|
/// </summary>
|
||||||
|
private void SetNote()
|
||||||
{
|
{
|
||||||
if (my_manager.UtilisateurActuel.notesNombres.TryGetValue(AnimeModel.Nom,out x) && i < x[0])
|
stars.Children.Clear();
|
||||||
|
bool test = my_manager.UtilisateurActuel.notesNombres.ContainsKey(AnimeModel.Nom);
|
||||||
|
List<int> x;
|
||||||
|
|
||||||
|
for (int i = 0; i < 5; i++)
|
||||||
{
|
{
|
||||||
ImageButton imageButton = new ImageButton
|
if (my_manager.UtilisateurActuel.notesNombres.TryGetValue(AnimeModel.Nom, out x) && i < x[0])
|
||||||
|
{
|
||||||
|
ImageButton imageButton = new ImageButton
|
||||||
|
{
|
||||||
|
Source = "star_full.png",
|
||||||
|
BackgroundColor = Microsoft.Maui.Graphics.Color.FromHex("1E1E1E"),
|
||||||
|
WidthRequest = 50,
|
||||||
|
HeightRequest = 50,
|
||||||
|
AutomationId = i.ToString(),
|
||||||
|
Margin = 10,
|
||||||
|
};
|
||||||
|
|
||||||
|
imageButton.Clicked += StarClicked;
|
||||||
|
|
||||||
|
Grid.SetRow(imageButton, 0);
|
||||||
|
Grid.SetColumn(imageButton, i);
|
||||||
|
stars.Children.Add(imageButton);
|
||||||
|
}
|
||||||
|
else if (!test && i < AnimeModel.Note)
|
||||||
{
|
{
|
||||||
Source = "star_full.png",
|
ImageButton imageButton = new ImageButton
|
||||||
BackgroundColor = Microsoft.Maui.Graphics.Color.FromHex("1E1E1E"),
|
{
|
||||||
WidthRequest = 50,
|
Source = "star_full.png",
|
||||||
HeightRequest = 50,
|
BackgroundColor = Microsoft.Maui.Graphics.Color.FromHex("1E1E1E"),
|
||||||
AutomationId = i.ToString(),
|
WidthRequest = 50,
|
||||||
Margin = 10,
|
HeightRequest = 50,
|
||||||
};
|
AutomationId = i.ToString(),
|
||||||
|
Margin = 10,
|
||||||
imageButton.Clicked += StarClicked;
|
};
|
||||||
|
|
||||||
Grid.SetRow(imageButton, 0);
|
imageButton.Clicked += StarClicked;
|
||||||
Grid.SetColumn(imageButton, i);
|
|
||||||
stars.Children.Add(imageButton);
|
Grid.SetRow(imageButton, 0);
|
||||||
|
Grid.SetColumn(imageButton, i);
|
||||||
|
stars.Children.Add(imageButton);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ImageButton imageButton = new ImageButton
|
||||||
|
{
|
||||||
|
Source = "star_empty.png",
|
||||||
|
BackgroundColor = Microsoft.Maui.Graphics.Color.FromHex("1E1E1E"),
|
||||||
|
WidthRequest = 50,
|
||||||
|
HeightRequest = 50,
|
||||||
|
AutomationId = i.ToString(),
|
||||||
|
Margin = 10,
|
||||||
|
};
|
||||||
|
|
||||||
|
imageButton.Clicked += StarClicked;
|
||||||
|
|
||||||
|
Grid.SetRow(imageButton, 0);
|
||||||
|
Grid.SetColumn(imageButton, i);
|
||||||
|
stars.Children.Add(imageButton);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (!test && i < AnimeModel.Note)
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gère l'événement lorsqu'on clique sur une étoile.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender">L'objet déclenchant l'événement.</param>
|
||||||
|
/// <param name="e">Les arguments de l'événement.</param>
|
||||||
|
private async void StarClicked(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (my_manager.UtilisateurActuel.Email == null)
|
||||||
{
|
{
|
||||||
ImageButton imageButton = new ImageButton
|
await DisplayAlert("Erreur", "Vous n'êtes pas connecté.", "OK");
|
||||||
{
|
return;
|
||||||
Source = "star_full.png",
|
|
||||||
BackgroundColor = Microsoft.Maui.Graphics.Color.FromHex("1E1E1E"),
|
|
||||||
WidthRequest = 50,
|
|
||||||
HeightRequest = 50,
|
|
||||||
AutomationId = i.ToString(),
|
|
||||||
Margin = 10,
|
|
||||||
};
|
|
||||||
|
|
||||||
imageButton.Clicked += StarClicked;
|
|
||||||
|
|
||||||
Grid.SetRow(imageButton, 0);
|
|
||||||
Grid.SetColumn(imageButton, i);
|
|
||||||
stars.Children.Add(imageButton);
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
var button = (ImageButton)sender;
|
||||||
|
var idAutomation = button.AutomationId;
|
||||||
|
List<int> x = new List<int>();
|
||||||
|
int somme = 0;
|
||||||
|
int compteur = 0;
|
||||||
|
|
||||||
|
if (int.TryParse(idAutomation, out int id))
|
||||||
{
|
{
|
||||||
ImageButton imageButton = new ImageButton
|
if (my_manager.UtilisateurActuel.notesNombres.ContainsKey(AnimeModel.Nom))
|
||||||
|
{
|
||||||
|
my_manager.UtilisateurActuel.notesNombres.Remove(AnimeModel.Nom, out x);
|
||||||
|
x[0] = id + 1;
|
||||||
|
my_manager.UtilisateurActuel.notesNombres.Add(AnimeModel.Nom, x);
|
||||||
|
BackgroundColor = Microsoft.Maui.Graphics.Color.FromHex("1E1E1E");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x.Add(id + 1);
|
||||||
|
x.Add(0);
|
||||||
|
my_manager.UtilisateurActuel.notesNombres.Add(AnimeModel.Nom, x);
|
||||||
|
//BackgroundColor = Microsoft.Maui.Graphics.Color.FromHex("1E1E1E");
|
||||||
|
}
|
||||||
|
|
||||||
|
SetNote();
|
||||||
|
|
||||||
|
foreach (Utilisateur u in my_manager.Utilisateurs)
|
||||||
{
|
{
|
||||||
Source = "star_empty.png",
|
if (u.notesNombres.TryGetValue(AnimeModel.Nom, out x) && x[0] != 0)
|
||||||
BackgroundColor = Microsoft.Maui.Graphics.Color.FromHex("1E1E1E"),
|
{
|
||||||
WidthRequest = 50,
|
compteur = compteur + 1;
|
||||||
HeightRequest = 50,
|
somme = somme + x[0];
|
||||||
AutomationId = i.ToString(),
|
}
|
||||||
Margin = 10,
|
}
|
||||||
};
|
|
||||||
|
AnimeModel.Note = somme / compteur;
|
||||||
imageButton.Clicked += StarClicked;
|
my_manager.sauvegarder();
|
||||||
|
|
||||||
Grid.SetRow(imageButton, 0);
|
|
||||||
Grid.SetColumn(imageButton, i);
|
|
||||||
stars.Children.Add(imageButton);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private async void StarClicked(object sender, EventArgs e)
|
/// <summary>
|
||||||
{
|
/// Gère l'événement lorsqu'on clique sur le bouton de validation du nombre d'épisodes.
|
||||||
if (my_manager.UtilisateurActuel.Email == null)
|
/// </summary>
|
||||||
|
/// <param name="sender">L'objet déclenchant l'événement.</param>
|
||||||
|
/// <param name="e">Les arguments de l'événement.</param>
|
||||||
|
private async void NbEpCheck(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
await DisplayAlert("Erreur", "Vous n'êtes pas connecté.", "OK");
|
if (my_manager.UtilisateurActuel.Email == null)
|
||||||
return;
|
{
|
||||||
}
|
await DisplayAlert("Erreur", "Vous n'êtes pas connecté.", "OK");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var button = (ImageButton)sender;
|
List<int> x = new List<int>();
|
||||||
var idAutomation = button.AutomationId;
|
int nb = Convert.ToInt32(nombreEP.Text);
|
||||||
List<int> x = new List<int>();
|
|
||||||
int somme = 0;
|
|
||||||
int compteur = 0;
|
|
||||||
|
|
||||||
if (int.TryParse(idAutomation, out int id))
|
|
||||||
{
|
|
||||||
if (my_manager.UtilisateurActuel.notesNombres.ContainsKey(AnimeModel.Nom))
|
if (my_manager.UtilisateurActuel.notesNombres.ContainsKey(AnimeModel.Nom))
|
||||||
{
|
{
|
||||||
my_manager.UtilisateurActuel.notesNombres.Remove(AnimeModel.Nom, out x);
|
my_manager.UtilisateurActuel.notesNombres.Remove(AnimeModel.Nom, out x);
|
||||||
x[0] = id + 1;
|
x[1] = nb;
|
||||||
my_manager.UtilisateurActuel.notesNombres.Add(AnimeModel.Nom, x);
|
my_manager.UtilisateurActuel.notesNombres.Add(AnimeModel.Nom, x);
|
||||||
BackgroundColor = Microsoft.Maui.Graphics.Color.FromHex("1E1E1E");
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
x.Add(id + 1);
|
|
||||||
x.Add(0);
|
x.Add(0);
|
||||||
|
x.Add(nb);
|
||||||
my_manager.UtilisateurActuel.notesNombres.Add(AnimeModel.Nom, x);
|
my_manager.UtilisateurActuel.notesNombres.Add(AnimeModel.Nom, x);
|
||||||
//BackgroundColor = Microsoft.Maui.Graphics.Color.FromHex("1E1E1E");
|
|
||||||
}
|
|
||||||
|
|
||||||
SetNote();
|
|
||||||
|
|
||||||
foreach (Utilisateur u in my_manager.Utilisateurs)
|
|
||||||
{
|
|
||||||
if(u.notesNombres.TryGetValue(AnimeModel.Nom, out x) && x[0] != 0)
|
|
||||||
{
|
|
||||||
compteur = compteur + 1;
|
|
||||||
somme = somme + x[0];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AnimeModel.Note = somme / compteur;
|
|
||||||
my_manager.sauvegarder();
|
my_manager.sauvegarder();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
private async void NbEpCheck(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (my_manager.UtilisateurActuel.Email == null)
|
|
||||||
{
|
|
||||||
await DisplayAlert("Erreur", "Vous n'êtes pas connecté.", "OK");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
List<int> x = new List<int>();
|
|
||||||
int nb = Convert.ToInt32(nombreEP.Text);
|
|
||||||
|
|
||||||
if (my_manager.UtilisateurActuel.notesNombres.ContainsKey(AnimeModel.Nom))
|
|
||||||
{
|
|
||||||
my_manager.UtilisateurActuel.notesNombres.Remove(AnimeModel.Nom, out x);
|
|
||||||
x[1] = nb;
|
|
||||||
my_manager.UtilisateurActuel.notesNombres.Add(AnimeModel.Nom, x);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
x.Add(0);
|
|
||||||
x.Add(nb);
|
|
||||||
my_manager.UtilisateurActuel.notesNombres.Add(AnimeModel.Nom, x);
|
|
||||||
}
|
|
||||||
|
|
||||||
my_manager.sauvegarder();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -1,83 +1,104 @@
|
|||||||
namespace MangaMap.Views;
|
namespace MangaMap.Views
|
||||||
|
|
||||||
using MangaMap.Model;
|
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
|
|
||||||
public partial class homePage : ContentPage
|
|
||||||
{
|
{
|
||||||
public Manager my_manager => (App.Current as App).MyManager;
|
using MangaMap.Model;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
|
||||||
public homePage()
|
/// <summary>
|
||||||
|
/// Classe représentant la page d'accueil de l'application.
|
||||||
|
/// </summary>
|
||||||
|
public partial class homePage : ContentPage
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
/// <summary>
|
||||||
BindingContext = my_manager;
|
/// Référence au gestionnaire de l'application.
|
||||||
searchResults.ItemsSource = my_manager.Oeuvres;
|
/// </summary>
|
||||||
//chargerSerie();
|
public Manager my_manager => (App.Current as App).MyManager;
|
||||||
}
|
|
||||||
|
|
||||||
private async void AnimeImageClicked(object sender, EventArgs e)
|
/// <summary>
|
||||||
{
|
/// Constructeur de la page d'accueil.
|
||||||
var selectedAnime = (sender as ImageButton)?.BindingContext as Oeuvre;
|
/// </summary>
|
||||||
if (selectedAnime != null)
|
public homePage()
|
||||||
{
|
{
|
||||||
// Naviguez vers la page de la fiche d'anime en passant l'objet sélectionné
|
InitializeComponent();
|
||||||
await Navigation.PushAsync(new ficheAnime(selectedAnime));
|
BindingContext = my_manager;
|
||||||
|
searchResults.ItemsSource = my_manager.Oeuvres;
|
||||||
|
//chargerSerie();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*var button = (ImageButton)sender;
|
/// <summary>
|
||||||
var idAutomation = button.AutomationId;
|
/// Gestionnaire d'événement lorsqu'une image d'anime est cliquée.
|
||||||
|
/// </summary>
|
||||||
if (int.TryParse(idAutomation, out int id))
|
/// <param name="sender">L'objet qui a déclenché l'événement.</param>
|
||||||
|
/// <param name="e">Arguments de l'événement.</param>
|
||||||
|
private async void AnimeImageClicked(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
await Navigation.PushAsync(new ficheAnime(my_manager.Oeuvres[id]));
|
var selectedAnime = (sender as ImageButton)?.BindingContext as Oeuvre;
|
||||||
}*/
|
if (selectedAnime != null)
|
||||||
}
|
{
|
||||||
|
// Naviguer vers la page de la fiche d'anime en passant l'objet sélectionné
|
||||||
|
await Navigation.PushAsync(new ficheAnime(selectedAnime));
|
||||||
|
}
|
||||||
|
|
||||||
/*private void chargerSerie()
|
/*var button = (ImageButton)sender;
|
||||||
{
|
var idAutomation = button.AutomationId;
|
||||||
int imagesParLigne = 4;
|
|
||||||
int indice = 0;
|
|
||||||
|
|
||||||
for (int i = 0; i < my_manager.Oeuvres.Count; i++)
|
if (int.TryParse(idAutomation, out int id))
|
||||||
|
{
|
||||||
|
await Navigation.PushAsync(new ficheAnime(my_manager.Oeuvres[id]));
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
/*private void chargerSerie()
|
||||||
{
|
{
|
||||||
Oeuvre favoris = my_manager.Oeuvres[i];
|
int imagesParLigne = 4;
|
||||||
|
int indice = 0;
|
||||||
|
|
||||||
ImageButton imageButton = new ImageButton
|
for (int i = 0; i < my_manager.Oeuvres.Count; i++)
|
||||||
{
|
{
|
||||||
Source = favoris.Affiche,
|
Oeuvre favoris = my_manager.Oeuvres[i];
|
||||||
WidthRequest = 170,
|
|
||||||
MaximumHeightRequest = 190,
|
|
||||||
MinimumHeightRequest = 190,
|
|
||||||
HeightRequest = 190,
|
|
||||||
CornerRadius = 15,
|
|
||||||
Aspect = Aspect.Fill,
|
|
||||||
AutomationId = indice.ToString(),
|
|
||||||
Margin = 90
|
|
||||||
};
|
|
||||||
|
|
||||||
imageButton.Clicked += AnimeImageClicked;
|
ImageButton imageButton = new ImageButton
|
||||||
|
{
|
||||||
|
Source = favoris.Affiche,
|
||||||
|
WidthRequest = 170,
|
||||||
|
MaximumHeightRequest = 190,
|
||||||
|
MinimumHeightRequest = 190,
|
||||||
|
HeightRequest = 190,
|
||||||
|
CornerRadius = 15,
|
||||||
|
Aspect = Aspect.Fill,
|
||||||
|
AutomationId = indice.ToString(),
|
||||||
|
Margin = 90
|
||||||
|
};
|
||||||
|
|
||||||
int ligne = 1 + (indice / imagesParLigne);
|
imageButton.Clicked += AnimeImageClicked;
|
||||||
int colonne = indice % imagesParLigne;
|
|
||||||
|
|
||||||
Grid.SetRow(imageButton, ligne);
|
int ligne = 1 + (indice / imagesParLigne);
|
||||||
Grid.SetColumn(imageButton, colonne);
|
int colonne = indice % imagesParLigne;
|
||||||
grille.Children.Add(imageButton);
|
|
||||||
|
|
||||||
indice++;
|
Grid.SetRow(imageButton, ligne);
|
||||||
}
|
Grid.SetColumn(imageButton, colonne);
|
||||||
}*/
|
grille.Children.Add(imageButton);
|
||||||
|
|
||||||
private void OnTextChanged(object sender, TextChangedEventArgs e)
|
indice++;
|
||||||
{
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
if(string.IsNullOrWhiteSpace(e.NewTextValue))
|
/// <summary>
|
||||||
|
/// Gestionnaire d'événement lorsqu'un texte est modifié dans la zone de recherche.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender">L'objet qui a déclenché l'événement.</param>
|
||||||
|
/// <param name="e">Arguments de l'événement contenant le nouveau texte.</param>
|
||||||
|
private void OnTextChanged(object sender, TextChangedEventArgs e)
|
||||||
{
|
{
|
||||||
searchResults.ItemsSource = my_manager.Oeuvres;
|
if (string.IsNullOrWhiteSpace(e.NewTextValue))
|
||||||
}
|
{
|
||||||
else
|
// Afficher toutes les œuvres si le champ de recherche est vide
|
||||||
{
|
searchResults.ItemsSource = my_manager.Oeuvres;
|
||||||
searchResults.ItemsSource = my_manager.Oeuvres.Where(i => i.Nom.ToLower().Contains(e.NewTextValue.ToLower()));
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Filtrer les œuvres en fonction du texte de recherche
|
||||||
|
searchResults.ItemsSource = my_manager.Oeuvres.Where(i => i.Nom.ToLower().Contains(e.NewTextValue.ToLower()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in new issue