diff --git a/Sources/Console/Program.cs b/Sources/Console/Program.cs index fb87e4e..5a4730d 100644 --- a/Sources/Console/Program.cs +++ b/Sources/Console/Program.cs @@ -1,24 +1,35 @@ using Model; +using Model.Stub; +Manager Manager = new Manager(); -// See https://aka.ms/new-console-template for more information +foreach(Album Album in Manager.GetAlbums()) +{ + Console.WriteLine(Album.Name); +} -/*Album a = new Album("Adios Bahamas", "album1.jpg", "Népal"); -Album a1 = new Album("Fenêtre sur Rue", "album3.jpg", "HugoTSR"); -Album a2 = new Album("Dans la Légende", "album8.jpg", "PNL"); +Console.WriteLine("---------------"); -List lst = new List { a1, a2, a }; +Manager.AddAlbum(new Album("coucou", "path.png", new Artist("lorenzo"), "descLolo", "infoLolo")); -foreach (Album album in lst) +foreach (Album Album in Manager.GetAlbums()) { - Console.WriteLine($"Nom de l'album : " + album.Nom); + Console.WriteLine(Album.Name); +} + +Manager.AddPlaylist(new Playlist("MegaTeuf", "DescPlaylist", "ImagePlaylist")); + +Playlist p1 = Manager.Playlists.First(); + +Console.WriteLine(p1.GetCurrentTitle()); + +p1.NextTitle(); - Console.WriteLine($"Nom du fichier : " + album.File_Name); +Console.WriteLine(p1.GetCurrentTitle()); - Console.WriteLine($"Artiste : " + album.Artiste); +p1.PreviousTitle(); - Console.WriteLine($"-------------------------"); -}*/ +Console.WriteLine(p1.GetCurrentTitle()); diff --git a/Sources/Linaris/FooterPage.xaml.cs b/Sources/Linaris/FooterPage.xaml.cs index adaa690..fdf1855 100644 --- a/Sources/Linaris/FooterPage.xaml.cs +++ b/Sources/Linaris/FooterPage.xaml.cs @@ -19,7 +19,7 @@ public partial class FooterPage : ContentView // (s,a) = convention, s = sender, a = arguments, si appli fermée, on free tout outputDevice.PlaybackStopped += PlaybackStoppedHandler; - morceauEnCours = "D:\\Musique\\Création\\winter.mp3"; + morceauEnCours = "peaches.mp3"; audioFile = new AudioFileReader(morceauEnCours); outputDevice.Init(audioFile); } diff --git a/Sources/Linaris/Linaris.csproj b/Sources/Linaris/Linaris.csproj index bbcc06b..b1d6590 100644 --- a/Sources/Linaris/Linaris.csproj +++ b/Sources/Linaris/Linaris.csproj @@ -45,7 +45,8 @@ - + + diff --git a/Sources/Model/Album.cs b/Sources/Model/Album.cs index 7dab8f9..4ef7959 100644 --- a/Sources/Model/Album.cs +++ b/Sources/Model/Album.cs @@ -15,7 +15,7 @@ } } - private string name; + private string name ="Unknown"; public string Description { @@ -30,9 +30,17 @@ } } - private string description; + private string description =""; - public IEnumerable Titles { get; set; } + private List<Title> titles = new List<Title>(); + + public IEnumerable<Title> Titles + { + get + { + return Titles; + } + } public string ImageURL { @@ -47,9 +55,9 @@ } } - private string imageURL; + private string imageURL = "none.png"; - public Artiste Artist { get; set; } + public Artist Artist { get; set; } public string Information { @@ -64,28 +72,27 @@ } } - private string information; + private string information = ""; - public Album(string name, string file_Name, Artiste artist, string description, string information) + public Album(string name, string file_Name, Artist artist, string description, string information) { Name = name; ImageURL = file_Name; Artist = artist; Description = description; Information = information; - Titles = new List<Title>(); } public void AddTitle(Title title) { - Titles.Prepend(title); + titles.Add(title); } public void RemoveTitle(Title title) { - foreach(var item in Titles) + foreach(var item in titles) { - Titles = Titles.Where(item => item != title).ToList(); + titles = titles.Where(item => item != title).ToList(); } } diff --git a/Sources/Model/Artist.cs b/Sources/Model/Artist.cs new file mode 100644 index 0000000..c638dfd --- /dev/null +++ b/Sources/Model/Artist.cs @@ -0,0 +1,39 @@ +namespace Model; + +public class Artist +{ + public string Name + { + get => name; + + set + { + if (value != null && value.Length < 75) + { + name = value; + } + } + } + + private string name = "Unknown"; + + private List<Album> albums = new List<Album>(); + + public IEnumerable<Album> Albums + { + get + { + return albums; + } + } + + public Artist(string name) + { + Name = name; + } + + public void AddAlbum(Album album) + { + albums.Add(album); + } +} diff --git a/Sources/Model/CustomTitle.cs b/Sources/Model/CustomTitle.cs index 9b41237..4f9958f 100644 --- a/Sources/Model/CustomTitle.cs +++ b/Sources/Model/CustomTitle.cs @@ -15,7 +15,7 @@ public class CustomTitle : Title { } } - private string path; + private string path = "none.mp3"; public CustomTitle(string name, string imageURL, string information, string path) : base(name, imageURL, information) { diff --git a/Sources/Model/IDataManager.cs b/Sources/Model/IDataManager.cs index 4799ef5..c21b2c5 100644 --- a/Sources/Model/IDataManager.cs +++ b/Sources/Model/IDataManager.cs @@ -2,5 +2,28 @@ public interface IDataManager { - //méthodes style IEnumerable<Groupe> RecupGFroupe(); + IEnumerable<Title> GetTitles(); + + IEnumerable<Album> GetAlbums(); + + IEnumerable<Artist> GetArtists(); + + IEnumerable<Playlist> GetPlaylists(); + + public void AddAlbum(Album album); + + public void AddArtist(Artist artist); + + public void AddPlaylist(Playlist playlist); + + public void AddTitle(Title title); + + public void RemoveAlbum(Album album); + + public void RemoveArtist(Artist artist); + + public void RemovePlaylist(Playlist playlist); + + public void RemoveTitle(Title title); + } \ No newline at end of file diff --git a/Sources/Model/InfoTitle.cs b/Sources/Model/InfoTitle.cs index bb9eb4d..8df3a81 100644 --- a/Sources/Model/InfoTitle.cs +++ b/Sources/Model/InfoTitle.cs @@ -2,7 +2,7 @@ public class InfoTitle : Title { - public Artiste Artiste { get; set; } + public Artist Artiste { get; set; } public string Description { @@ -17,29 +17,36 @@ public class InfoTitle : Title } } - private string description; + private string description =""; - public IEnumerable<Artiste> Feat { get; set; } + private List<Artist> feat = new List<Artist>(); + + public IEnumerable<Artist> Feat + { + get + { + return feat; + } + } public Genre Genre { get; set; } - public InfoTitle(string name, string imageURL, string information, Artiste artist, string description, Genre genre) : base(name,imageURL,information) + public InfoTitle(string name, string imageURL, string information, Artist artist, string description, Genre genre) : base(name,imageURL,information) { Artiste = artist; Description = description; Genre = genre; - Feat = new List<Artiste>(); } - public void AddFeat(Artiste artist) + public void AddFeat(Artist artist) { - Feat.Prepend(artist); + feat.Add(artist); } - public void RemoveFeat(Artiste artiste) + public void RemoveFeat(Artist artiste) { foreach (var item in Feat) { - Feat = Feat.Where(item => item != artiste).ToList(); + feat = Feat.Where(item => item != artiste).ToList(); } } diff --git a/Sources/Model/Manager.cs b/Sources/Model/Manager.cs index 9de8d13..ae75df9 100644 --- a/Sources/Model/Manager.cs +++ b/Sources/Model/Manager.cs @@ -10,42 +10,66 @@ public class Manager public IEnumerable<Playlist> Playlists; + public IEnumerable<Artist> Artists; + public Manager() { DataManager = new Stub(); - // Albums = DataManager.GetAlbum(); - Albums = new List<Album>(); - Titles = new List<Title>(); - Playlists = new List<Playlist>(); + + Albums = DataManager.GetAlbums(); + Titles = DataManager.GetTitles(); + Playlists = DataManager.GetPlaylists(); + Artists = DataManager.GetArtists(); } public void AddAlbum(Album album) { - Albums.Prepend(album); + DataManager.AddAlbum(album); + Albums = DataManager.GetAlbums(); } public void AddTitle(Title title) { - Titles.Prepend(title); + DataManager.AddTitle(title); + Titles = DataManager.GetTitles(); } public void AddPlaylist(Playlist playlist) { - Playlists.Prepend(playlist); + DataManager.AddPlaylist(playlist); + Playlists = DataManager.GetPlaylists(); } public void RemoveAlbum(Album album) { - Albums.ToList().Remove(album); + DataManager.RemoveAlbum(album); + Albums = DataManager.GetAlbums(); } public void RemoveTitle(Title title) { - Titles.ToList().Remove(title); + DataManager.RemoveTitle(title); + Titles = DataManager.GetTitles(); } public void RemovePlaylist(Playlist playlist) { - Playlists.ToList().Remove(playlist); + DataManager.RemovePlaylist(playlist); + Playlists = DataManager.GetPlaylists(); + } + + public IEnumerable<Album> GetAlbums() + { + return DataManager.GetAlbums(); + } + + public IEnumerable<Title> GetTitles() + { + return DataManager.GetTitles(); + } + + public IEnumerable<Artist> GetArtists() + { + return DataManager.GetArtists(); } } diff --git a/Sources/Model/Playlist.cs b/Sources/Model/Playlist.cs index 97d3e43..29f798b 100644 --- a/Sources/Model/Playlist.cs +++ b/Sources/Model/Playlist.cs @@ -15,7 +15,7 @@ public class Playlist } } - private string name; + private string name ="Unknown"; public string Description { @@ -30,9 +30,16 @@ public class Playlist } } - private string description; + private string description = ""; - public IEnumerable<Title> Morceaux { get; set; } + private List<Title> morceaux = new List<Title>(); + + public IEnumerable<Title> Morceaux { + get + { + return morceaux; + } + } public string ImageURL { @@ -47,24 +54,119 @@ public class Playlist } } - private string imageURL; + private string imageURL = "none.png"; + + public int Index + { + get => index; + + set + { + if (value < morceaux.Count()) + { + index = value; + } + else if(Loop) + { + index = 0; + } + else + { + return; + } + } + } + + private int index = 0; + + public bool Shuffle = false; + + public bool Loop = false; + + public bool LoopTitle = false; + + Random Aleatoire = new Random(); + + private List<int> played = new List<int>(); + + public IEnumerable<int> Played + { + get + { + return played; + } + } public Playlist(string nom, string description, string imageURL) { Name = nom; Description = description; - Morceaux = new List<Title>(); this.imageURL = imageURL; } public void AddTitle(Title morceau) { - Morceaux.Prepend(morceau); + morceaux.Add(morceau); } public void RemoveTitle(Title morceau) { - Morceaux.ToList().Remove(morceau); + morceaux.Remove(morceau); + } + + public void NextTitle() + { + if (LoopTitle) + { + return; + } + + if (!Shuffle) + { + Index++; + played.Add(Index); + } + else + { + Index = Aleatoire.Next(morceaux.Count() - 1); + played.Add(Index); + } + } + + public void PreviousTitle() + { + if (LoopTitle) + { + return; + } + + if(!Shuffle) + { + Index--; + played.RemoveAt(0); + } + else + { + if (played.Count() == 0) + { + return; + } + Index = played[0]; + played.RemoveAt(0); + } + } + + public Title? GetCurrentTitle() + { + if (Index < morceaux.Count() - 1) + { + return morceaux[Index]; + } + else + { + return null; + } + } } diff --git a/Sources/Model/Stub/Stub.cs b/Sources/Model/Stub/Stub.cs index 9a60c86..2b4b96b 100644 --- a/Sources/Model/Stub/Stub.cs +++ b/Sources/Model/Stub/Stub.cs @@ -3,7 +3,7 @@ public class Stub : IDataManager { - public IEnumerable<Artiste> Artistes; + public IEnumerable<Artist> Artists; public IEnumerable<Album> Albums; @@ -13,37 +13,130 @@ public class Stub : IDataManager public Stub() { - Artistes = new List<Artiste>(); - Albums = new List<Album>(); - Playlists = new List<Playlist>(); - Titles = new List<Title>(); - - Artiste Artiste1 = new Artiste("Critien"); - Artiste Artiste2 = new Artiste("Gouriet"); - Artiste Artiste3 = new Artiste("Poulifer"); - Artiste Artiste4 = new Artiste("Credian"); + Artist Artiste1 = new Artist("Critien"); + Artist Artiste2 = new Artist("Gouriet"); + Artist Artiste3 = new Artist("Poulifer"); + Artist Artiste4 = new Artist("Credian"); Album Album1 = new Album("la street", "lastreet.png", Artiste1, "c'est la street", "plein d'infos1"); + Album Album2 = new Album("la jsp", "oui.png", Artiste1, "c'est la couri", "plein d'infos2"); + Album Album3 = new Album("la pas le temps", "non.png", Artiste3, "c'est pas la street", "plein d'infos3"); Album Album4 = new Album("la pas le choix", "peutetre.png", Artiste4, "c'est la parterre", "plein d'infos4"); Artiste1.AddAlbum(Album1); - Artiste1.AddAlbum(new Album("la jsp", "oui.png", Artiste1, "c'est la couri", "plein d'infos2")); - Artiste2.AddAlbum(new Album("la pas le temps", "non.png", Artiste3, "c'est pas la street", "plein d'infos3")); + Artiste1.AddAlbum(Album2); + Artiste2.AddAlbum(Album3); Artiste2.AddAlbum(Album4); Playlist Playlist1 = new Playlist("Playlist1", "desc1", "url1.png"); Playlist Playlist2 = new Playlist("Playlist2", "desc2", "url2.png"); - Playlist Playlist3 = new Playlist("Playlist3", "desc3", "url3.png"); - Playlist Playlist4 = new Playlist("Playlist4", "desc4", "url4.png"); - - Playlist1.AddTitle(new CustomTitle("custom1", "url1.png", "info1", "chemin1")); - Playlist1.AddTitle(new CustomTitle("custom2", "url2.png", "info2", "chemin2")); - Playlist1.AddTitle(new CustomTitle("custom3", "url3.png", "info3", "chemin3")); - Playlist2.AddTitle(new CustomTitle("custom4", "url4.png", "info4", "chemin4")); - - Album1.AddTitle(new InfoTitle("info1", "url1.png", "info1", Artiste2, "desc1", Genre.K_POP)); - Album1.AddTitle(new InfoTitle("info2", "url2.png", "info2", Artiste3, "desc2", Genre.GOSPEL)); - Album1.AddTitle(new InfoTitle("info3", "url3.png", "info3", Artiste4, "desc3", Genre.BLUES)); - Album4.AddTitle(new InfoTitle("info4", "url4.png", "info4", Artiste3, "desc4", Genre.DISCO)); + + CustomTitle Custom1 = new CustomTitle("custom1", "url1.png", "info1", "chemin1"); + CustomTitle Custom2 = new CustomTitle("custom2", "url2.png", "info2", "chemin2"); + CustomTitle Custom3 = new CustomTitle("custom3", "url3.png", "info3", "chemin3"); + + Playlist1.AddTitle(Custom1); + Playlist1.AddTitle(Custom2); + Playlist2.AddTitle(Custom2); + Playlist2.AddTitle(Custom3); + + InfoTitle Info1 = new InfoTitle("info1", "url1.png", "info1", Artiste2, "desc1", Genre.K_POP); + InfoTitle Info2 = new InfoTitle("info2", "url2.png", "info2", Artiste3, "desc2", Genre.GOSPEL); + + Album1.AddTitle(Info1); + Album1.AddTitle(Info2); + Album2.AddTitle(Info2); + + Artists = new List<Artist>() + { + Artiste1, + Artiste2, + Artiste3, + Artiste4 + }; + + Albums = new List<Album>() + { + Album1, + Album2, + Album3, + Album4 + }; + + Playlists = new List<Playlist>() + { + Playlist1, + Playlist2 + }; + + Titles = new List<Title>() + { + Custom1, + Custom2, + Custom3, + Info1, + Info2 + }; + } + + public IEnumerable<Album> GetAlbums() + { + return Albums; + } + + public IEnumerable<Artist> GetArtists() + { + return Artists; + } + + public IEnumerable<Playlist> GetPlaylists() + { + return Playlists; + } + + public IEnumerable<Title> GetTitles() + { + return Titles; + } + + public void AddAlbum(Album album) + { + Albums = Albums.Prepend(album); } + + public void AddTitle(Title title) + { + Titles = Titles.Prepend(title); + } + public void AddPlaylist(Playlist playlist) + { + Playlists = Playlists.Prepend(playlist); + } + + public void AddArtist(Artist artist) + { + Artists = Artists.Prepend(artist); + } + + + + public void RemoveAlbum(Album album) + { + Albums.ToList().Remove(album); + } + + public void RemoveTitle(Title title) + { + Titles.ToList().Remove(title); + } + + public void RemovePlaylist(Playlist playlist) + { + Playlists.ToList().Remove(playlist); + } + + public void RemoveArtist(Artist artist) + { + Artists.ToList().Remove(artist); + } } diff --git a/Sources/Model/Title.cs b/Sources/Model/Title.cs index 1d985e8..0410f66 100644 --- a/Sources/Model/Title.cs +++ b/Sources/Model/Title.cs @@ -15,7 +15,7 @@ } } - private string name; + private string name = "Unknown"; public string ImageURL { @@ -30,7 +30,7 @@ } } - private string imageURL; + private string imageURL = "none.png"; public string Information { @@ -45,7 +45,7 @@ } } - private string information; + private string information =""; public Title(string nom, string file_Name, string informations) {