diff --git a/GameAtlas/GameAtlas/DataContractPersistance/DataContractPers.cs b/GameAtlas/GameAtlas/DataContractPersistance/DataContractPers.cs index 4f15fc5..ec61971 100644 --- a/GameAtlas/GameAtlas/DataContractPersistance/DataContractPers.cs +++ b/GameAtlas/GameAtlas/DataContractPersistance/DataContractPers.cs @@ -9,7 +9,7 @@ using System.Threading.Tasks; using System.Xml; using System.IO; using System.Xml.Serialization; - +using System.Collections.ObjectModel; namespace GameAtlas.DataContractPersistance { @@ -19,7 +19,7 @@ namespace GameAtlas.DataContractPersistance public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory); //Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/data"; - public (List, List) ChargeDonnees() + public (ObservableCollection, List) ChargeDonnees() { var serializer = new DataContractSerializer(typeof(DataToPersist)); DataToPersist data = new DataToPersist(); @@ -31,7 +31,7 @@ namespace GameAtlas.DataContractPersistance return (data.jeux, data.utilisateurs); } - public void SauvegardeDonnees(List jeux, List users) + public void SauvegardeDonnees(ObservableCollection jeux, List users) { var serializer = new DataContractSerializer(typeof(DataToPersist)); diff --git a/GameAtlas/GameAtlas/DataContractPersistance/DataToPersist.cs b/GameAtlas/GameAtlas/DataContractPersistance/DataToPersist.cs index 5a50b08..ae2dbb8 100644 --- a/GameAtlas/GameAtlas/DataContractPersistance/DataToPersist.cs +++ b/GameAtlas/GameAtlas/DataContractPersistance/DataToPersist.cs @@ -1,6 +1,7 @@ using GameAtlas.Models; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -9,7 +10,7 @@ namespace GameAtlas.DataContractPersistance { public class DataToPersist { - public List jeux { get; set; } = new List(); + public ObservableCollection jeux { get; set; } = new ObservableCollection(); public List utilisateurs { get; set; } = new List(); } } diff --git a/GameAtlas/GameAtlas/GameAtlas.csproj.user b/GameAtlas/GameAtlas/GameAtlas.csproj.user index ac890c6..0a945fc 100644 --- a/GameAtlas/GameAtlas/GameAtlas.csproj.user +++ b/GameAtlas/GameAtlas/GameAtlas.csproj.user @@ -3,7 +3,7 @@ False net7.0-android - Xiaomi 2201117SY (Android 12.0 - API 31) + Google Pixel 6a (Android 13.0 - API 33) PhysicalDevice pixel_5_-_api_33_1 diff --git a/GameAtlas/GameAtlas/Models/IPersistanceManager.cs b/GameAtlas/GameAtlas/Models/IPersistanceManager.cs index 280e086..3ce9fdf 100644 --- a/GameAtlas/GameAtlas/Models/IPersistanceManager.cs +++ b/GameAtlas/GameAtlas/Models/IPersistanceManager.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -8,8 +9,8 @@ namespace GameAtlas.Models { public interface IPersistanceManager { - (List,List) ChargeDonnees(); + (ObservableCollection,List) ChargeDonnees(); - void SauvegardeDonnees(List jeux, List utilisateurs); + void SauvegardeDonnees(ObservableCollection jeux, List utilisateurs); } } \ No newline at end of file diff --git a/GameAtlas/GameAtlas/Models/Manager.cs b/GameAtlas/GameAtlas/Models/Manager.cs index 412eb3d..79ff9af 100644 --- a/GameAtlas/GameAtlas/Models/Manager.cs +++ b/GameAtlas/GameAtlas/Models/Manager.cs @@ -11,7 +11,7 @@ namespace GameAtlas.Models { public class Manager : INotifyPropertyChanged { - public List ListJeux { get; private set; } + public ObservableCollection ListJeux { get; private set; } public List Admins { get; private set; } public List Utilisateurs { get; private set; } @@ -30,19 +30,19 @@ namespace GameAtlas.Models public event PropertyChangedEventHandler? PropertyChanged; - void OnPropertyChanged([CallerMemberName] string propertyName = null) + public void OnPropertyChanged([CallerMemberName] string propertyName = null) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); public Manager(IPersistanceManager persistance) { Utilisateurs = new List(); - ListJeux = new List(); + ListJeux = new ObservableCollection(); Persistance = persistance; ConnectedUser = null; } public Manager() { - ListJeux = new List(); + ListJeux = new ObservableCollection(); Admins = new List(); Utilisateurs = new List(); ConnectedUser = null; diff --git a/GameAtlas/GameAtlas/Models/Utilisateur.cs b/GameAtlas/GameAtlas/Models/Utilisateur.cs index 6a38d2a..e33311e 100644 --- a/GameAtlas/GameAtlas/Models/Utilisateur.cs +++ b/GameAtlas/GameAtlas/Models/Utilisateur.cs @@ -1,6 +1,7 @@ using GameAtlas.Views; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Runtime.Serialization; using System.Text; @@ -20,9 +21,9 @@ namespace GameAtlas.Models [DataMember] public string DateCreation { get; private set; } [DataMember] - public List ListePossedes { get; private set; } + public ObservableCollection ListePossedes { get; private set; } [DataMember] - public List ListeFavoris { get; private set; } + public ObservableCollection ListeFavoris { get; private set; } public Utilisateur(string mail, string pseudo, string mdp) { @@ -30,8 +31,8 @@ namespace GameAtlas.Models Pseudo = pseudo; Mdp = mdp; DateCreation = "Compte créer le "+DateTime.Today.ToString("d"); - ListePossedes = new List(); - ListeFavoris = new List(); + ListePossedes = new ObservableCollection(); + ListeFavoris = new ObservableCollection(); } diff --git a/GameAtlas/GameAtlas/Stub/Stub.cs b/GameAtlas/GameAtlas/Stub/Stub.cs index 5c70dfd..c6a7b8b 100644 --- a/GameAtlas/GameAtlas/Stub/Stub.cs +++ b/GameAtlas/GameAtlas/Stub/Stub.cs @@ -1,6 +1,7 @@ using GameAtlas.Models; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -9,10 +10,10 @@ namespace GameAtlas.Stub { public class Stub : IPersistanceManager { - public (List,List) ChargeDonnees() + public (ObservableCollection,List) ChargeDonnees() { List ListUsers = new List(); - List ListJeu = new List(); + ObservableCollection ListJeu = new ObservableCollection(); Utilisateur userTest = new Utilisateur("test@gmail.com", "test", "Test1234"); ListUsers.Add(userTest); Jeu TheLastOfUs = new Jeu("The last of Us Part 1","5 Fevrier 2023","Ps5 XOne Pc","dev","ed", 5, 487,"Aventure", "cover_lastofus1.png"); @@ -24,7 +25,7 @@ namespace GameAtlas.Stub return (ListJeu,ListUsers); } - public void SauvegardeDonnees(List jeux, List utilisateurs) + public void SauvegardeDonnees(ObservableCollection jeux, List utilisateurs) { throw new NotImplementedException(); } diff --git a/GameAtlas/GameAtlas/Views/PageAdmin.xaml.cs b/GameAtlas/GameAtlas/Views/PageAdmin.xaml.cs index b61c489..628e1ea 100644 --- a/GameAtlas/GameAtlas/Views/PageAdmin.xaml.cs +++ b/GameAtlas/GameAtlas/Views/PageAdmin.xaml.cs @@ -50,6 +50,7 @@ public partial class PageAdmin : ContentPage Jeu adminJeu = new Jeu(nom, sortie, plateformes, developpeur, editeur, noteInt, nbTelechargementInt, genre, image); AdminManager.AddJeux(adminJeu); AdminManager.SauvegardeDonnees(); + AdminManager.OnPropertyChanged(nameof(AdminManager.ListJeux)); Debug.WriteLine($"Le jeu \"{adminJeu.Nom}\" a été ajouté."); } diff --git a/GameAtlas/GameAtlas/Views/PageJeu.xaml.cs b/GameAtlas/GameAtlas/Views/PageJeu.xaml.cs index daa38ca..955318a 100644 --- a/GameAtlas/GameAtlas/Views/PageJeu.xaml.cs +++ b/GameAtlas/GameAtlas/Views/PageJeu.xaml.cs @@ -24,7 +24,7 @@ public partial class PageJeu : ContentPage InitializeComponent(); - this.BindingContext = this; + BindingContext = this; } @@ -40,11 +40,15 @@ public partial class PageJeu : ContentPage { JeuManager.ConnectedUser.ListeFavoris.Add(JeuModel); Debug.WriteLine($"Ajout du jeu {JeuModel.Nom} à la Liste Favoris de {JeuManager.ConnectedUser.Pseudo}."); + JeuManager.OnPropertyChanged(nameof(JeuManager.ConnectedUser)); + JeuManager.SauvegardeDonnees(); } else if (action == "Jeux Possédés") { JeuManager.ConnectedUser.ListePossedes.Add(JeuModel); Debug.WriteLine($"Ajout du jeu {JeuModel.Nom} à la Liste Possédés de {JeuManager.ConnectedUser.Pseudo}."); + JeuManager.OnPropertyChanged(nameof(JeuManager.ConnectedUser)); + JeuManager.SauvegardeDonnees(); } } else diff --git a/GameAtlas/GameAtlas/Views/PageProfil.xaml b/GameAtlas/GameAtlas/Views/PageProfil.xaml index f8a00ac..a67afd8 100644 --- a/GameAtlas/GameAtlas/Views/PageProfil.xaml +++ b/GameAtlas/GameAtlas/Views/PageProfil.xaml @@ -88,7 +88,7 @@ - + diff --git a/GameAtlas/GameAtlas/Views/PageProfil.xaml.cs b/GameAtlas/GameAtlas/Views/PageProfil.xaml.cs index 67ef85c..c8aa083 100644 --- a/GameAtlas/GameAtlas/Views/PageProfil.xaml.cs +++ b/GameAtlas/GameAtlas/Views/PageProfil.xaml.cs @@ -1,17 +1,17 @@ -using GameAtlas.Models; - -namespace GameAtlas.Views; - -public partial class PageProfil : ContentPage -{ - public Manager ProfilManager => (App.Current as App).MyManager; - public PageProfil() - { - InitializeComponent(); - BindingContext = ProfilManager; - SwitchPage(); - } - +using GameAtlas.Models; + +namespace GameAtlas.Views; + +public partial class PageProfil : ContentPage +{ + public Manager ProfilManager => (App.Current as App).MyManager; + public PageProfil() + { + InitializeComponent(); + BindingContext = ProfilManager; + SwitchPage(); + } + async void SwitchPage() { if (ProfilManager.ConnectedUser == null) @@ -22,15 +22,15 @@ public partial class PageProfil : ContentPage { await Shell.Current.GoToAsync("//page/PageProfil"); } - } - - async void OnGame_Tapped(System.Object sender, Microsoft.Maui.Controls.TappedEventArgs e) - { - await Shell.Current.GoToAsync(nameof(PageJeu)); - } - - async void OnAdmin_Tapped(System.Object sender, Microsoft.Maui.Controls.TappedEventArgs e) - { - await Shell.Current.GoToAsync(nameof(PageAdmin)); - } + } + + async void OnGame_Tapped(System.Object sender, Microsoft.Maui.Controls.TappedEventArgs e) + { + await Shell.Current.GoToAsync(nameof(PageJeu)); + } + + async void OnAdmin_Tapped(System.Object sender, Microsoft.Maui.Controls.TappedEventArgs e) + { + await Shell.Current.GoToAsync(nameof(PageAdmin)); + } } \ No newline at end of file