From 13194b8fd7aa4e1fa2e8ed854c73708996f906c6 Mon Sep 17 00:00:00 2001 From: "remi.lavergne" Date: Sat, 3 Jun 2023 17:16:50 +0200 Subject: [PATCH] =?UTF-8?q?H=C3=A9ritage=20et=20redefinition=20des=20m?= =?UTF-8?q?=C3=A9thodes=20'Equals'=20&=20'GetHashCode'.=20Permettant=20de?= =?UTF-8?q?=20corriger=20le=20probl=C3=A8me=20de=20comparaison=20des=20jeu?= =?UTF-8?q?x.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GameAtlas/GameAtlas/Models/Jeu.cs | 14 ++++++++ GameAtlas/GameAtlas/Views/PageJeu.xaml.cs | 40 ++++++++++------------- 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/GameAtlas/GameAtlas/Models/Jeu.cs b/GameAtlas/GameAtlas/Models/Jeu.cs index adf2403..723b2d1 100644 --- a/GameAtlas/GameAtlas/Models/Jeu.cs +++ b/GameAtlas/GameAtlas/Models/Jeu.cs @@ -44,5 +44,19 @@ namespace GameAtlas.Models Genres = genres; Image = image; } + + public override bool Equals(object obj) + { + if (obj == null || GetType() != obj.GetType()) + return false; + + Jeu otherJeu = (Jeu)obj; + return Nom == otherJeu.Nom && Sortie == otherJeu.Sortie; + } + + public override int GetHashCode() + { + return HashCode.Combine(Nom, Sortie); + } } } diff --git a/GameAtlas/GameAtlas/Views/PageJeu.xaml.cs b/GameAtlas/GameAtlas/Views/PageJeu.xaml.cs index caffc84..3e6e7a2 100644 --- a/GameAtlas/GameAtlas/Views/PageJeu.xaml.cs +++ b/GameAtlas/GameAtlas/Views/PageJeu.xaml.cs @@ -10,9 +10,6 @@ public partial class PageJeu : ContentPage { public Jeu JeuModel { get; set; } - string PresenceFavoris = ""; - string PresencePossedes = ""; - //public Manager JeuManager { get; set; } = new Manager(); public Manager JeuManager => (App.Current as App).MyManager; @@ -39,32 +36,31 @@ public partial class PageJeu : ContentPage { if (JeuManager.ConnectedUser != null) { - foreach (Jeu jeu in JeuManager.ConnectedUser.ListeFavoris) + bool isFavorite = JeuManager.ConnectedUser.ListeFavoris.Contains(JeuModel); + bool isOwned = JeuManager.ConnectedUser.ListePossedes.Contains(JeuModel); + + string favoritePresence = ""; + string ownedPresence = ""; + + if (isFavorite) { - if (jeu.Nom == JeuModel.Nom) - { - PresenceFavoris = " ✔️"; - } + favoritePresence = " ✔️"; } - - foreach (Jeu jeu in JeuManager.ConnectedUser.ListePossedes) + if (isOwned) { - if (jeu.Nom == JeuModel.Nom) - { - PresencePossedes = " ✔️"; - } + ownedPresence = " ✔️"; } - string action = await DisplayActionSheet("Choix de la liste:", "Annuler", null, "Mes Favoris"+PresenceFavoris, "Jeux Possédés"+PresencePossedes); + string action = await DisplayActionSheet("Choix de la liste:", "Annuler", null, "Mes Favoris"+favoritePresence, "Jeux Possédés"+ownedPresence); Debug.WriteLine("Popup Action: " + action); - if (action == "Mes Favoris" + PresenceFavoris) + if (action == "Mes Favoris" + favoritePresence) { - if (PresenceFavoris == " ✔️") + if (isFavorite) { await DisplayAlert("Jeu Retiré", $"Vous avez retiré {JeuModel.Nom} de votre liste de jeux favoris.", "Ok"); JeuManager.ConnectedUser.ListeFavoris.Remove(JeuModel); - PresenceFavoris = ""; + favoritePresence = ""; } else { @@ -75,13 +71,13 @@ public partial class PageJeu : ContentPage JeuManager.OnPropertyChanged(nameof(JeuManager.ConnectedUser)); JeuManager.SauvegardeDonnees(); } - else if (action == "Jeux Possédés" + PresencePossedes) + else if (action == "Jeux Possédés" + ownedPresence) { - if (PresencePossedes == " ✔️") + if (isOwned) { await DisplayAlert("Jeu Retiré", $"Vous avez retiré {JeuModel.Nom} de votre liste de jeux possédés.", "Ok"); JeuManager.ConnectedUser.ListePossedes.Remove(JeuModel); - PresencePossedes = ""; + ownedPresence = ""; } else { @@ -119,7 +115,7 @@ public partial class PageJeu : ContentPage CharacterSpacing = 0 }; - string text = "Vous devez être connecté pour effectué cette action."; + string text = "Vous devez être connecté pour effectuer cette action."; string actionButtonText = "OK"; TimeSpan duration = TimeSpan.FromSeconds(3);