modif pour save les favoris / user / partitions (marche presque, juste un problème qui fait qu'on peut pas lancer un favori chargé)

pull/8/head
Vivien DUFOUR 2 years ago
parent c2ade2ee20
commit 9fae7086a2

@ -6,15 +6,33 @@ public partial class App : Application
{
public Manager MyManager { get; private set; } = new Manager(new Stub.Stub());
public string FileNameFU { get; set; } = "favorisUtilisateurs.xml";
public string FileNameP { get; set; } = "partitions.xml";
public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory);
public App()
{
MyManager.chargeDonnees();
MyManager.Persistance = new DataContractPersistance.DataContractPers();
MyManager.sauvegardeDonnees();
InitializeComponent();
string favorisUtilisateursFilePath = Path.Combine(FilePath, FileNameFU);
string partitionsFilePath = Path.Combine(FilePath, FileNameP);
InitializeComponent();
if (File.Exists(partitionsFilePath) && File.Exists(favorisUtilisateursFilePath))
{
MyManager = new Manager(new DataContractPersistance.DataContractPers());
}
MyManager.chargeDonnees();
MainPage = new AppShell();
if (!File.Exists(partitionsFilePath) && !File.Exists(favorisUtilisateursFilePath))
{
MyManager.Persistance = new DataContractPersistance.DataContractPers();
}
MyManager.sauvegardeDonnees();
}
}

@ -8,65 +8,102 @@ using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace MusiLib.DataContractPersistance
{
public class DataContractPers : IPersistanceManager
{
public string FilePath { get; set; } = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/musilib";
public string FileNameP { get; set; } = "UserFavoris.xml";
public string FileNameU { get; set; } = "UserData.xml";
public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory);
public string FileNameFU { get; set; } = "favorisUtilisateurs.xml";
public string FileNameP { get; set; } = "partitions.xml";
public (List<Partition>, List<Utilisateur>) chargeDonnees()
public (List<Partition>, List<Utilisateur>, List<Partition>) chargeDonnees()
{
var serializerP = new DataContractSerializer(typeof(List<Partition>));
var serializerU = new DataContractSerializer(typeof(List<Utilisateur>), new[] { typeof(Partition) });
var partitionsSerializer = new DataContractSerializer(typeof(List<Partition>));
var favorisUtilisateursSerializer = new DataContractSerializer(typeof(DataToPersist));
List<Partition> partitions = new List<Partition>();
List<Utilisateur> utilisateurs = new List<Utilisateur>();
List<Partition> favoris = new List<Partition>();
string pathP = Path.Combine(FilePath, FileNameP);
if (File.Exists(pathP))
using (Stream partitionsStream = File.OpenRead(Path.Combine(FilePath, "partitions.xml")))
{
using (Stream stream = File.OpenRead(pathP))
{
partitions = serializerP.ReadObject(stream) as List<Partition>;
}
partitions = partitionsSerializer.ReadObject(partitionsStream) as List<Partition>;
}
string pathU = Path.Combine(FilePath, FileNameU);
if (File.Exists(pathU))
using (Stream favorisUtilisateursStream = File.OpenRead(Path.Combine(FilePath, "favorisUtilisateurs.xml")))
{
using (Stream stream = File.OpenRead(pathU))
{
utilisateurs = serializerU.ReadObject(stream) as List<Utilisateur>;
}
DataToPersist data = favorisUtilisateursSerializer.ReadObject(favorisUtilisateursStream) as DataToPersist;
utilisateurs = data.utilisateurs;
favoris = data.favoris;
}
return (partitions, utilisateurs);
return (partitions, utilisateurs, favoris);
}
public void sauvegardeDonnees(List<Partition> p, List<Utilisateur> u)
public void sauvegardeDonnees(List<Partition> p, List<Utilisateur> u, List<Partition> f)
{
var serializerP = new DataContractSerializer(typeof(List<Partition>));
var serializerU = new DataContractSerializer(typeof(List<Utilisateur>), new[] { typeof(Partition) });
var partitionsSerializer = new DataContractSerializer(typeof(List<Partition>));
var favorisUtilisateursSerializer = new DataContractSerializer(typeof(DataToPersist));
if (!Directory.Exists(FilePath))
{
System.Diagnostics.Debug.WriteLine("Directory créé à l'instant");
System.Diagnostics.Debug.WriteLine(FilePath);
Debug.WriteLine("Directory créé à l'instant");
Debug.WriteLine(Directory.GetDirectoryRoot(FilePath));
Debug.WriteLine(FilePath);
Directory.CreateDirectory(FilePath);
}
using (Stream stream = File.Create(Path.Combine(FilePath, FileNameP)))
using (Stream partitionsStream = File.Create(Path.Combine(FilePath, FileNameP)))
{
serializerP.WriteObject(stream, p);
partitionsSerializer.WriteObject(partitionsStream, p);
}
using (Stream stream = File.Create(Path.Combine(FilePath, FileNameU)))
DataToPersist data = new DataToPersist();
data.utilisateurs = u;
data.favoris = f;
using (Stream favorisUtilisateursStream = File.Create(Path.Combine(FilePath, FileNameFU)))
{
serializerU.WriteObject(stream, u);
favorisUtilisateursSerializer.WriteObject(favorisUtilisateursStream, data);
}
}
public void sauvegardeFavori(Partition fav)
{
var favorisUtilisateursSerializer = new DataContractSerializer(typeof(DataToPersist));
if (!Directory.Exists(FilePath))
{
Debug.WriteLine("Directory créé à l'instant");
Debug.WriteLine(Directory.GetDirectoryRoot(FilePath));
Debug.WriteLine(FilePath);
Directory.CreateDirectory(FilePath);
}
List<Partition> favoris = new List<Partition>();
using (Stream favorisUtilisateursStream = File.OpenRead(Path.Combine(FilePath, FileNameFU)))
{
DataToPersist data = favorisUtilisateursSerializer.ReadObject(favorisUtilisateursStream) as DataToPersist;
if (data != null && data.favoris != null)
{
favoris = data.favoris;
}
}
favoris.Add(fav);
using (Stream favorisUtilisateursStream = File.Create(Path.Combine(FilePath, FileNameFU)))
{
DataToPersist data = new DataToPersist();
data.favoris = favoris;
favorisUtilisateursSerializer.WriteObject(favorisUtilisateursStream, data);
}
Debug.WriteLine("Nouveau favori sauvegardé !");
}
}
}

@ -9,7 +9,8 @@ namespace MusiLib.DataContractPersistance
{
public class DataToPersist
{
public List<Utilisateur> utilisateurs = new List<Utilisateur>();
public List<Partition> partitions = new List<Partition>();
public List<Utilisateur> utilisateurs { get; set; } = new List<Utilisateur>();
public List<Partition> partitions { get; set; } = new List<Partition>();
public List<Partition> favoris { get; set; } = new List<Partition>();
}
}

@ -8,8 +8,10 @@ namespace MusiLib.Model
{
public interface IPersistanceManager
{
(List<Partition>, List<Utilisateur>) chargeDonnees();
(List<Partition>, List<Utilisateur>, List<Partition>) chargeDonnees();
void sauvegardeDonnees(List<Partition> p, List<Utilisateur> u);
void sauvegardeDonnees(List<Partition> p, List<Utilisateur> u, List<Partition> f);
void sauvegardeFavori(Partition fav);
}
}

@ -13,11 +13,13 @@ namespace MusiLib.Model
public IPersistanceManager Persistance { get; set; }
public List<Utilisateur> utilisateurs { get; private set; }
public List<Partition> partitions { get; private set; }
public List<Partition> favoris { get; private set; }
public Manager()
{
utilisateurs = new List<Utilisateur>();
partitions = new List<Partition>();
favoris = new List<Partition>();
}
public Manager(IPersistanceManager persistance)
@ -25,6 +27,7 @@ namespace MusiLib.Model
Persistance = persistance;
utilisateurs = new List<Utilisateur>();
partitions = new List<Partition>();
favoris = new List<Partition>();
}
public void ajouterUtilisateur(Utilisateur utilisateur)
@ -40,19 +43,20 @@ namespace MusiLib.Model
public void chargeDonnees()
{
var donnees = Persistance.chargeDonnees();
utilisateurs.AddRange(donnees.Item2);
partitions.AddRange(donnees.Item1);
utilisateurs.AddRange(donnees.Item2);
favoris.AddRange(donnees.Item3);
}
public void sauvegardeDonnees()
{
Persistance.sauvegardeDonnees(partitions, utilisateurs);
Persistance.sauvegardeDonnees(partitions, utilisateurs, favoris);
}
public void sauvegardeFavori(Partition fav)
{
Persistance.sauvegardeFavori(fav);
}
}
}

@ -15,7 +15,7 @@
<ApplicationTitle>MusiLib</ApplicationTitle>
<!-- App Identifier -->
<ApplicationId>com.companyname.musilib</ApplicationId>
<ApplicationId>fr.iut.musilib</ApplicationId>
<ApplicationIdGuid>c2deb312-b3f3-425c-8e4b-18b5328ffd7c</ApplicationIdGuid>
<!-- Versions -->
@ -24,7 +24,7 @@
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">14.2</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">14.0</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">21.0</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">23.0</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
<TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">6.5</SupportedOSPlatformVersion>

@ -4,7 +4,8 @@ using Android.OS;
namespace MusiLib;
[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density, ScreenOrientation = ScreenOrientation.Portrait)]
public class MainActivity : MauiAppCompatActivity
{
}

@ -12,10 +12,12 @@ namespace MusiLib.Stub
{
public class Stub : IPersistanceManager
{
public (List<Partition>, List<Utilisateur>) chargeDonnees()
public (List<Partition>, List<Utilisateur>, List<Partition>) chargeDonnees()
{
List<Partition> partitions = new List<Partition>();
List<Utilisateur> utilisateurs = new List<Utilisateur>();
List<Partition> favoris = new List<Partition>();
Utilisateur kevin = new Utilisateur("Kevin");
Utilisateur michel = new Utilisateur("Michel");
utilisateurs.Add(kevin);
@ -40,10 +42,15 @@ namespace MusiLib.Stub
partitions.Add(ode_a_la_joie);
partitions.Add(fais_dodo_colas);
partitions.Add(Frere_Jacques);
return (partitions, utilisateurs);
return (partitions, utilisateurs, favoris);
}
public void sauvegardeDonnees(List<Partition> p, List<Utilisateur> u, List<Partition> f)
{
}
public void sauvegardeDonnees(List<Partition> p, List<Utilisateur> u)
public void sauvegardeFavori(Partition fav)
{
}

@ -15,7 +15,7 @@ public partial class Favoris : ContentPage, IAllowClick
public Favoris()
{
InitializeComponent();
partitionsInitiales = Utilisateur.Favoris.ToList();
partitionsInitiales = MyManager.favoris.ToList();
partitionsFiltrees = new List<Partition>(partitionsInitiales);
chargerFavoris();
}
@ -125,7 +125,7 @@ public partial class Favoris : ContentPage, IAllowClick
protected override void OnAppearing()
{
base.OnAppearing();
partitionsInitiales = Utilisateur.Favoris.ToList();
partitionsInitiales = MyManager.favoris.ToList();
partitionsFiltrees = new List<Partition>(partitionsInitiales);
chargerFavoris();
}

@ -1,5 +1,6 @@
using Microsoft.Maui.Controls.PlatformConfiguration;
using MusiLib.Model;
using System.Collections.Concurrent;
using System.Diagnostics;
namespace MusiLib.Views;
@ -84,7 +85,7 @@ public partial class PartitionView : ContentPage
private void InitializeButton()
{
if (Utilisateur.Favoris.Contains(MyManager.partitions[IdTab]))
if (MyManager.favoris.Contains(MyManager.partitions[IdTab]))
{
favoriButton.Source = "etoile.png";
}
@ -98,14 +99,15 @@ public partial class PartitionView : ContentPage
{
ImageButton button = (ImageButton)sender;
if (!Utilisateur.Favoris.Contains(MyManager.partitions[IdTab]))
if (!MyManager.favoris.Contains(MyManager.partitions[IdTab]))
{
Utilisateur.Favoris.Add(MyManager.partitions[IdTab]);
MyManager.favoris.Add(MyManager.partitions[IdTab]);
MyManager.sauvegardeFavori(MyManager.partitions[IdTab]);
button.Source = "etoile.png";
}
else
{
Utilisateur.Favoris.Remove(MyManager.partitions[IdTab]);
MyManager.favoris.Remove(MyManager.partitions[IdTab]);
button.Source = "etoile_vide.png";
}
}

Loading…
Cancel
Save