diff --git a/Sources/Linaris/App.xaml.cs b/Sources/Linaris/App.xaml.cs index 40708c8..936af33 100644 --- a/Sources/Linaris/App.xaml.cs +++ b/Sources/Linaris/App.xaml.cs @@ -23,10 +23,6 @@ public partial class App : Application Manager.LoadSerialization(); }; - Window.Stopped += (sender, eventArgs) => { - Manager.SaveSerialization(); - }; - const int newHeight = 900; const int newWidth = 1800; const int minHeight = 800; diff --git a/Sources/Linaris/AppShell.xaml b/Sources/Linaris/AppShell.xaml index a035749..b4f0e11 100644 --- a/Sources/Linaris/AppShell.xaml +++ b/Sources/Linaris/AppShell.xaml @@ -6,8 +6,7 @@ xmlns:local="clr-namespace:Linaris" Shell.FlyoutBehavior="Flyout" Shell.NavBarIsVisible="True" - FlyoutWidth="200" - FlyoutIsPresented="True"> + FlyoutWidth="200"> @@ -14,19 +13,19 @@ - + - - - - - - + + + + + + - + diff --git a/Sources/Linaris/Resources/Styles/Styles.xaml b/Sources/Linaris/Resources/Styles/Styles.xaml index 751d7cc..c8d51af 100644 --- a/Sources/Linaris/Resources/Styles/Styles.xaml +++ b/Sources/Linaris/Resources/Styles/Styles.xaml @@ -152,32 +152,29 @@ - + - + - - + + - + - - - @@ -204,38 +201,32 @@ - - - - + - + + - - + + - - - - @@ -310,15 +301,12 @@ - + - + - - - - + @@ -328,18 +316,15 @@ - - - - + - + - + @@ -349,25 +334,18 @@ - - + + + + diff --git a/Sources/Model/Album.cs b/Sources/Model/Album.cs index 65ad0a9..8e60404 100644 --- a/Sources/Model/Album.cs +++ b/Sources/Model/Album.cs @@ -37,16 +37,6 @@ namespace Model private string description = Manager.DEFAULT_DESC; - private readonly List titles = new List<Title>(); - - public IEnumerable<Title> Titles - { - get - { - return new List<Title>(titles); - } - } - public string ImageURL { get => imageURL; @@ -88,6 +78,17 @@ namespace Model private string information = Manager.DEFAULT_DESC; + public IEnumerable<InfoTitle> InfoTitles + { + get => infoTitles; + set + { + infoTitles = value.ToList(); + } + } + + private List<InfoTitle> infoTitles = new List<InfoTitle>(); + public Album(string name, string imageURL, Artist artist, string description, string information) { Name = name; @@ -102,14 +103,14 @@ namespace Model Artist = new Artist(Manager.DEFAULT_NAME); } - public void AddTitle(Title title) + public void AddTitle(InfoTitle title) { - titles.Add(title); + infoTitles.Add(title); } - public void RemoveTitle(Title title) + public void RemoveTitle(InfoTitle title) { - titles.Remove(title); + infoTitles.Remove(title); } public override bool Equals(object? obj) diff --git a/Sources/Model/Data/customs.xml b/Sources/Model/Data/customs.xml new file mode 100644 index 0000000..110227b --- /dev/null +++ b/Sources/Model/Data/customs.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<Customs> + <CustomTitle Name="ct1"> + <ImageURL>url1.png</ImageURL> + <Information>info1</Information> + <Path>path1</Path> + </CustomTitle> +</Customs> \ No newline at end of file diff --git a/Sources/Model/Data/playlists.xml b/Sources/Model/Data/playlists.xml new file mode 100644 index 0000000..a21a1a5 --- /dev/null +++ b/Sources/Model/Data/playlists.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<Playlists> + <Playlist Name="Unknown"> + <Description></Description> + <ImageURL>none.png</ImageURL> + <Titles></Titles> + </Playlist> +</Playlists> \ No newline at end of file diff --git a/Sources/Model/Serialization/LINQ_XML_Serialization.cs b/Sources/Model/Serialization/LINQ_XML_Serialization.cs index 5e3db86..5266340 100644 --- a/Sources/Model/Serialization/LINQ_XML_Serialization.cs +++ b/Sources/Model/Serialization/LINQ_XML_Serialization.cs @@ -7,7 +7,7 @@ namespace Model.Serialization; public class LinqXmlSerialization : IDataManager { - private static string XMLPATH = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Data"); + private static string XMLPATH = GetSerializationDirectory(); private static string XMLFILEPLAYLISTS = Path.Combine(XMLPATH, "playlists.xml"); @@ -19,6 +19,13 @@ public class LinqXmlSerialization : IDataManager private static string XMLFILEARTISTS = Path.Combine(XMLPATH, "artists.xml"); + private StubManager stubManager; + + public StubManager StubManager + { + get => stubManager; + } + private List<Artist> artists; public IEnumerable<Artist> Artists @@ -72,43 +79,16 @@ public class LinqXmlSerialization : IDataManager public LinqXmlSerialization() { playlists = new ObservableCollection<Playlist>(); - artists = new List<Artist>(); - Artist ImagineDragons = new Artist("Imagine Dragons"); - Artist artist = new Artist("artist"); - InfoTitle nom = new InfoTitle("nom", "none.png", "infos", artist, "desc", Genre.RAP); - InfoTitle unknown = new InfoTitle(); - infoTitles = new ObservableCollection<InfoTitle>() - { - nom, - unknown - }; - albums = new ObservableCollection<Album>() - { - new Album("Adios Bahamas", "album1.jpg", artist, "Description d'Adios Bahamas", "Informations sur Adios Bahamas"), - new Album("Album2", "album2.jpg", new Artist(), "", ""), - new Album("Album3", "album3.jpg", new Artist(), "", ""), - new Album("Album4", "album4.jpg", new Artist(), "", ""), - new Album("Album5", "album5.jpg", new Artist(), "", ""), - new Album("Album6", "album6.jpg", new Artist(), "", ""), - new Album("Album7", "album7.png", new Artist(), "", ""), - new Album("Album8", "album8.jpg", new Artist(), "", ""), - new Album("Night Visions", "album9.jpg", ImagineDragons, "", ""), - new Album("Smoke & Mirrors", "album10.jpg", ImagineDragons, "", ""), - new Album("Evolve", "album11.jpg", ImagineDragons, "", ""), - new Album("Origins", "album12.jpg", ImagineDragons, "", ""), - new Album("Mercury Act 1", "album13.jpg", ImagineDragons, "", ""), - new Album("Mercury Act 2", "album14.jpg", ImagineDragons, "", "") - }; - Album? AdiosBahamas = GetAlbumByName("Adios Bahamas"); - AdiosBahamas?.AddTitle(nom); - AdiosBahamas?.AddTitle(unknown); + stubManager = new StubManager(); + artists = StubManager.GetArtists(); + infoTitles = StubManager.GetInfoTitles(); + albums = StubManager.GetAlbums(); customTitles = new ObservableCollection<CustomTitle>(); if (!Directory.Exists(XMLPATH)) { Directory.CreateDirectory(XMLPATH); } Directory.SetCurrentDirectory(XMLPATH); - LoadSerialization(); } public void AddAlbum(Album album) @@ -1124,4 +1104,22 @@ public class LinqXmlSerialization : IDataManager } return false; } + + static string GetSerializationDirectory() + { + DirectoryInfo? directory = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory); + + while (directory != null && ! directory.GetFiles("*.sln").Any()) + { + directory = directory.Parent; + } + + if (directory == null) + { + directory = new DirectoryInfo(Directory.GetCurrentDirectory()); + } + + return Path.Combine(directory.ToString(),"Model/Data"); + } + } diff --git a/Sources/Model/Stub/StubAlbum.cs b/Sources/Model/Stub/StubAlbum.cs index 7e5ee40..bc5ac19 100644 --- a/Sources/Model/Stub/StubAlbum.cs +++ b/Sources/Model/Stub/StubAlbum.cs @@ -25,14 +25,22 @@ public class StubAlbum public StubAlbum() { stubArtist = new StubArtist(); - - Album Album1 = new Album("la street", "lastreet.png", StubArtist.GetArtistByName("Critien") ?? new Artist("Critien"), "c'est la street", "plein d'infos1"); - Album Album2 = new Album("la jsp", "oui.png", StubArtist.GetArtistByName("Critien") ?? new Artist("Critien"), "c'est la couri", "plein d'infos2"); - Album Album3 = new Album("la pas le temps", "non.png", StubArtist.GetArtistByName("Poulifer") ?? new Artist("Poulifer"), "c'est pas la street", "plein d'infos3"); - Album Album4 = new Album("la pas le choix", "peutetre.png", StubArtist.GetArtistByName("Credian") ?? new Artist("Credian"), "c'est la parterre", "plein d'infos4"); albums = new ObservableCollection<Album>() { - Album1, Album2, Album3, Album4 + new Album("Adios Bahamas", "album1.jpg", StubArtist.GetArtistByName("Artist") ?? new Artist("Artist"), "Description d'Adios Bahamas", "Informations sur Adios Bahamas"), + new Album("Album2", "album2.jpg", new Artist(), "", ""), + new Album("Album3", "album3.jpg", new Artist(), "", ""), + new Album("Album4", "album4.jpg", new Artist(), "", ""), + new Album("Album5", "album5.jpg", new Artist(), "", ""), + new Album("Album6", "album6.jpg", new Artist(), "", ""), + new Album("Album7", "album7.png", new Artist(), "", ""), + new Album("Album8", "album8.jpg", new Artist(), "", ""), + new Album("Night Visions", "album9.jpg", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "", ""), + new Album("Smoke & Mirrors", "album10.jpg", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "", ""), + new Album("Evolve", "album11.jpg", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "", ""), + new Album("Origins", "album12.jpg", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "", ""), + new Album("Mercury Act 1", "album13.jpg", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "", ""), + new Album("Mercury Act 2", "album14.jpg", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "", "") }; } diff --git a/Sources/Model/Stub/StubArtist.cs b/Sources/Model/Stub/StubArtist.cs index 04b445b..ac55da2 100644 --- a/Sources/Model/Stub/StubArtist.cs +++ b/Sources/Model/Stub/StubArtist.cs @@ -11,7 +11,7 @@ public class StubArtist public StubArtist() { - Artist Artiste1 = new Artist("Critien"); + Artist Artiste1 = new Artist("Imagine Dragons"); Artist Artiste2 = new Artist("Gouriet"); Artist Artiste3 = new Artist("Poulifer"); Artist Artiste4 = new Artist("Credian"); diff --git a/Sources/Model/Stub/StubManager.cs b/Sources/Model/Stub/StubManager.cs index 5456910..ccf19c1 100644 --- a/Sources/Model/Stub/StubManager.cs +++ b/Sources/Model/Stub/StubManager.cs @@ -66,6 +66,11 @@ public class StubManager : IDataManager LoadSerialization(); } + ~StubManager() + { + SaveSerialization(); + } + public ObservableCollection<Album> GetAlbums() { return StubAlbum.GetAlbums();