From f18942014cd9192dac82c2b50815fa55928ece3d Mon Sep 17 00:00:00 2001 From: Corentin LEMAIRE Date: Fri, 9 Jun 2023 18:01:15 +0200 Subject: [PATCH] Finish commenting basic class --- Sources/Model/Album.cs | 18 +- Sources/Model/Artist.cs | 7 + Sources/Model/CustomTitle.cs | 10 ++ Sources/Model/IDataManager.cs | 298 ++++++++++++++++++++++++++++++++++ Sources/Model/InfoTitle.cs | 21 +++ Sources/Model/Manager.cs | 124 +++++++++++++- Sources/Model/Playlist.cs | 58 +++++++ Sources/Model/Title.cs | 10 ++ 8 files changed, 536 insertions(+), 10 deletions(-) diff --git a/Sources/Model/Album.cs b/Sources/Model/Album.cs index e3ccef9..f7e29c2 100644 --- a/Sources/Model/Album.cs +++ b/Sources/Model/Album.cs @@ -101,14 +101,14 @@ namespace Model private ObservableCollection infoTitles = new ObservableCollection(); - /** - * \brief Constructeur de la classe album - * \param[in] name Nom de l'album - * \param[in] imageURL Chemin d'accès de l'image d'un album - * \param[in] artist Artiste de l'album - * \param[in] description Description de l'album - * \param[in] information Informations complémentaires sur un album - */ + /// + /// Constructeur de la classe Album + /// + /// Nom de l'Album + /// Chemin d'accès de l'image de l'Album + /// Artiste de l'Album + /// Description de l'Album + /// Informations complémentaires sur un Album public Album(string name, string imageURL, Artist artist, string description, string information) { id = nbAlbum; @@ -121,7 +121,7 @@ namespace Model } /// - /// Constructeur par défaut de la classe album + /// Constructeur par défaut de la classe Album /// public Album() { diff --git a/Sources/Model/Artist.cs b/Sources/Model/Artist.cs index c46d630..84b7f6f 100644 --- a/Sources/Model/Artist.cs +++ b/Sources/Model/Artist.cs @@ -24,11 +24,18 @@ public class Artist private string name = Manager.DEFAULT_NAME; + /// + /// Constructeur de la classe Artist + /// + /// Nom de l'artiste public Artist(string name) { Name = name; } + /// + /// Constructeur par défaut de la classe Artist + /// public Artist() { diff --git a/Sources/Model/CustomTitle.cs b/Sources/Model/CustomTitle.cs index c33923a..23c433f 100644 --- a/Sources/Model/CustomTitle.cs +++ b/Sources/Model/CustomTitle.cs @@ -71,11 +71,21 @@ public class CustomTitle : Title, INotifyPropertyChanged private bool isNewPlaylistMenuVisible = false; + /// + /// Constructeur de la classe Album + /// + /// Nom du CustomTitle + /// Chemin d'accès de l'image du CustomTitle + /// Informations sur un CustomTitle + /// Chemin d'accès du CustomTitle public CustomTitle(string name, string imageURL, string information, string path) : base(name, imageURL, information) { Path = path; } + /// + /// Constructeur par défaut de la classe CustomTitle + /// public CustomTitle() : base(Manager.DEFAULT_NAME, Manager.DEFAULT_URL, Manager.DEFAULT_DESC) { } /// diff --git a/Sources/Model/IDataManager.cs b/Sources/Model/IDataManager.cs index 0d6e647..d64a9d8 100644 --- a/Sources/Model/IDataManager.cs +++ b/Sources/Model/IDataManager.cs @@ -5,119 +5,417 @@ namespace Model; public interface IDataManager { // Create + + /// + /// Permet d'ajouter un objet Album à l'application + /// + /// Album à ajouter void AddAlbum(Album album); + /// + /// Permet d'ajouter des objets Album à l'application + /// + /// Liste d'Album à ajouter void AddAlbums(List albumsList); + /// + /// Permet d'ajouter un objet Artist à l'application + /// + /// Artist à ajouter void AddArtist(Artist artist); + /// + /// Permet d'ajouter des objets Artist à l'application + /// + /// Liste d'Artist à ajouter void AddArtists(List artistsList); + /// + /// Permet d'ajouter un objet Playlist à l'application + /// + /// Playlist à ajouter void AddPlaylist(Playlist playlist); + /// + /// Permet d'ajouter des objets Playlist à l'application + /// + /// Liste de Playlist à ajouter void AddPlaylists(List playlistsList); + /// + /// Permet d'ajouter un objet CustomTitle à l'application + /// + /// CustomTitle à ajouter void AddCustomTitle(CustomTitle title); + /// + /// Permet d'ajouter des objets CustomTitle à l'application + /// + /// Liste de CustomTitle à ajouter void AddCustomTitles(List customTitlesList); + /// + /// Permet d'ajouter un objet InfoTitle à l'application + /// + /// InfoTitle à ajouter void AddInfoTitle(InfoTitle title); + /// + /// Permet d'ajouter des objets InfoTitle à l'application + /// + /// Liste d'InfoTitle à ajouter void AddInfoTitles(List infoTitlesList); + + + // Read + + /// + /// Permet d'obtenir une liste d'objets CustomTitle + /// + /// Retourne une liste d'objets CustomTitle ObservableCollection GetCustomTitles(); + /// + /// Permet d'obtenir un objet CustomTitle à partir de son chemin d'accès + /// + /// Chemin d'accès de l'objet CustomTitle + /// Retourne l'objet CustomTitle avec un chemin d'accès équivalent à celui donné en paramètre CustomTitle GetCustomTitleByPath(string custom); + /// + /// Permet d'obtenir une liste d'objets InfoTitle + /// + /// Retourne une liste d'objets InfoTitle ObservableCollection GetInfoTitles(); + /// + /// Permet d'obtenir un objet InfoTitle à partir de son nom + /// + /// Nom de l'objet InfoTitle + /// Retourne l'objet InfoTitle avec un nom équivalent à celui donné en paramètre InfoTitle GetInfoTitleByName(string name); + /// + /// Permet d'obtenir une liste d'objets Album + /// + /// Retourne une liste d'objets Album ObservableCollection GetAlbums(); + /// + /// Permet d'obtenir un objet Album à partir de son nom + /// + /// Nom de l'objet Album + /// Retourne l'objet Album avec un nom équivalent à celui donné en paramètre Album GetAlbumByName(string name); + /// + /// Permet d'obtenir un objet Album à partir de son ID + /// + /// ID de l'objet Album + /// Retourne l'objet Album avec un ID équivalent à celui donné en paramètre Album GetAlbumById(long id); + /// + /// Permet d'obtenir une liste d'objets Artist + /// + /// Retourne une liste d'objets Artist List GetArtists(); + /// + /// Permet d'obtenir un objet Artist à partir de son nom + /// + /// Nom de l'objet Artist + /// Retourne l'objet Artist avec un nom équivalent à celui donné en paramètre Artist GetArtistByName(string name); + /// + /// Permet d'obtenir une liste d'objets Playlist + /// + /// Retourne une liste d'objets Playlist ObservableCollection GetPlaylists(); + /// + /// Permet d'obtenir un objet Playlist à partir de son nom + /// + /// Nom de l'objet Playlist + /// Retourne l'objet Playlist avec un nom équivalent à celui donné en paramètre Playlist GetPlaylistByName(string name); + + // Update + + /// + /// Modifie un objet CustomTitle avec les informations données en paramètre + /// + /// CustomTitle à modifier + /// Nom de l'objet CustomTitle + /// Chemin d'accès de l'image de l'objet CustomTitle + /// Informations de l'objet CustomTitle + /// Chemin d'accès de l'objet CustomTitle void UpdateCustomTitle(CustomTitle title, string name, string url, string info, string path); + /// + /// Modifie un objet CustomTitle avec les informations données en paramètre + /// + /// Chemin d'accès du CustomTitle à modifier + /// Nom de l'objet CustomTitle + /// Chemin d'accès de l'image de l'objet CustomTitle + /// Informations de l'objet CustomTitle + /// Chemin d'accès de l'objet CustomTitle void UpdateCustomTitleByPath(string path, string name, string newUrl, string info, string newPath); + /// + /// Modifie un objet InfoTitle avec les informations données en paramètre + /// + /// InfoTitle à modifier + /// Nom de l'objet InfoTitle + /// Chemin d'accès de l'image de l'objet InfoTitle + /// Informations de l'objet InfoTitle + /// Artist de l'objet InfoTitle + /// Description de l'objet InfoTitle + /// Genre de l'objet InfoTitle void UpdateInfoTitle(InfoTitle title, string name, string url, string info, Artist artist, string description, Genre genre); + /// + /// Modifie un objet InfoTitle avec les informations données en paramètre + /// + /// Nom de l'objet InfoTitle à modifier + /// Chemin d'accès de l'image de l'objet InfoTitle + /// Informations de l'objet InfoTitle + /// Artist de l'objet InfoTitle + /// Description de l'objet InfoTitle + /// Genre de l'objet InfoTitle void UpdateInfoTitleByName(string name, string newUrl, string info, Artist artist, string description, Genre genre); + /// + /// Modifie un objet Album avec les informations données en paramètre + /// + /// Album à modifier + /// Nom de l'objet Album + /// Chemin d'accès de l'image de l'objet Album + /// Artist de l'objet Album + /// Description de l'objet Album + /// Informations de l'objet Album void UpdateAlbum(Album album, string name, string url, Artist artist, string description, string info); + /// + /// Modifie un objet Album avec les informations données en paramètre + /// + /// Nom de l'objet Album à modifier + /// Chemin d'accès de l'image de l'objet Album + /// Artist de l'objet Album + /// Description de l'objet Album + /// Informations de l'objet Album void UpdateAlbumByName(string name, string newUrl, Artist artist, string description, string info); + /// + /// Modifie un objet Album avec les informations données en paramètre + /// + /// Album à modifier + /// Nom de l'objet Album + /// Chemin d'accès de l'image de l'objet Album + /// Nom de l'artiste de l'objet Album + /// Description de l'objet Album + /// Informations de l'objet Album void UpdateAlbumByArtistName(Album album, string name, string url, string artist, string description, string info); + /// + /// Modifie un objet Album avec les informations données en paramètre + /// + /// Nom de l'objet Album à modifier + /// Chemin d'accès de l'image de l'objet Album + /// Nom de l'artiste de l'objet Album + /// Description de l'objet Album + /// Informations de l'objet Album void UpdateAlbumByNameByArtistName(string name, string newUrl, string artist, string description, string info); + /// + /// Modifie un objet Playlist avec les informations données en paramètre + /// + /// Playlist à modifier + /// Nom de l'objet Playlist + /// Description de l'objet Playlist + /// Chemin d'accès de l'image de l'objet Playlist void UpdatePlaylist(Playlist playlist, string name, string description, string url); + /// + /// Modifie un objet Playlist avec les informations données en paramètre + /// + /// Nom de l'objet Playlist à modifier + /// Description de l'objet Playlist + /// Chemin d'accès de l'image de l'objet Playlist void UpdatePlaylistByName(string name, string description, string newUrl); + /// + /// Modifie un objet Artist avec les informations données en paramètre + /// + /// Artiste à modifier + /// Nom de l'objet Artist void UpdateArtist(Artist artist, string name); + /// + /// Modifie un objet Artist avec les informations données en paramètre + /// + /// Nom de l'objet Artist à modifier + /// Nouveau nom de l'objet Artist void UpdateArtistByName(string name, string newName); + + + + // Delete + + /// + /// Permet de retirer un objet Album de l'application + /// + /// Album à retirer void RemoveAlbum(Album album); + /// + /// Permet de retirer des objets Album de l'application + /// + /// Liste des objets Album à retirer de l'application void RemoveAlbums(List albumsList); + /// + /// Permet de retirer un objet Artist de l'application + /// + /// Artist à retirer void RemoveArtist(Artist artist); + /// + /// Permet de retirer des objets Artist de l'application + /// + /// Liste des objets Artist à retirer de l'application void RemoveArtists(List artistsList); + /// + /// Permet de retirer un objet Playlist de l'application + /// + /// Playlist à retirer void RemovePlaylist(Playlist playlist); + /// + /// Permet de retirer des objets Playlist de l'application + /// + /// Liste des objets Playlist à retirer de l'application void RemovePlaylists(List playlistsList); + /// + /// Permet de retirer un objet CustomTitle de l'application + /// + /// CustomTitle à retirer void RemoveCustomTitle(CustomTitle title); + /// + /// Permet de retirer des objets CustomTitle de l'application + /// + /// Liste des objets CustomTitle à retirer de l'application void RemoveCustomTitles(List customTitlesList); + /// + /// Permet de retirer un objet InfoTitle de l'application + /// + /// InfoTitle à retirer void RemoveInfoTitle(InfoTitle title); + /// + /// Permet de retirer des objets InfoTitle de l'application + /// + /// Liste des objets InfoTitle à retirer de l'application void RemoveInfoTitles(List infoTitlesList); + + // Serialization + + /// + /// Permet de charger les données + /// void LoadSerialization(); + /// + /// Permet de sauvegarder l'état de l'application + /// void SaveSerialization(); + + + // Exists + + /// + /// Permet de savoir si un objet Playlist appartient ou non à l'application + /// + /// Playlist à vérifier + /// Booléen True s'il est contenu dans l'application, False sinon bool ExistsPlaylist(Playlist playlist); + /// + /// Permet de savoir si un objet Playlist appartient ou non à l'application selon son nom + /// + /// Nom de l'objet Playlist à vérifier + /// Booléen True s'il est contenu dans l'application, False sinon bool ExistsPlaylistByName(string name); + /// + /// Permet de savoir si un objet Album appartient ou non à l'application + /// + /// Album à vérifier + /// Booléen True s'il est contenu dans l'application, False sinon bool ExistsAlbum(Album album); + /// + /// Permet de savoir si un objet Album appartient ou non à l'application selon son nom + /// + /// Nom de l'objet Album à vérifier + /// Booléen True s'il est contenu dans l'application, False sinon bool ExistsAlbumByName(string name); + /// + /// Permet de savoir si un objet Artist appartient ou non à l'application + /// + /// Artist à vérifier + /// Booléen True s'il est contenu dans l'application, False sinon bool ExistsArtist(Artist artist); + /// + /// Permet de savoir si un objet Artist appartient ou non à l'application selon son nom + /// + /// Nom de l'objet Artist à vérifier + /// Booléen True s'il est contenu dans l'application, False sinon bool ExistsArtistByName(string name); + /// + /// Permet de savoir si un objet CustomTitle appartient ou non à l'application selon son nom + /// + /// Nom de l'objet CustomTitle à vérifier + /// Booléen True s'il est contenu dans l'application, False sinon bool ExistsCustomTitle(CustomTitle title); + /// + /// Permet de savoir si un objet CustomTitle appartient ou non à l'application selon son nom + /// + /// Nom de l'objet CustomTitle à vérifier + /// Booléen True s'il est contenu dans l'application, False sinon bool ExistsCustomTitleByName(string name); + /// + /// Permet de savoir si un objet InfoTitle appartient ou non à l'application + /// + /// InfoTitle à vérifier + /// Booléen True s'il est contenu dans l'application, False sinon bool ExistsInfoTitle(InfoTitle title); + /// + /// Permet de savoir si un objet InfoTitle appartient ou non à l'application selon son nom + /// + /// Nom de l'objet InfoTitle à vérifier + /// Booléen True s'il est contenu dans l'application, False sinon bool ExistsInfoTitleByName(string name); } \ No newline at end of file diff --git a/Sources/Model/InfoTitle.cs b/Sources/Model/InfoTitle.cs index c3caff4..4905cf9 100644 --- a/Sources/Model/InfoTitle.cs +++ b/Sources/Model/InfoTitle.cs @@ -47,6 +47,15 @@ public class InfoTitle : Title } } + /// + /// Constructeur de la classe InfoTitle + /// + /// Nom de l'InfoTitle + /// Chemin d'accès de l'image de l'InfoTitle + /// Informations complémentaires sur l'InfoTitle + /// Description de l'InfoTitle + /// Genre de l'InfoTitle + /// ID de l'album auquel appartient l'InfoTitle public InfoTitle(string name, string imageURL, string information, string description, Genre genre, long albumID) : base(name,imageURL,information) { Description = description; @@ -54,15 +63,27 @@ public class InfoTitle : Title AlbumID = albumID; } + /// + /// Constructeur par défaut de la classe InfoTitle + /// public InfoTitle() : base(Manager.DEFAULT_NAME, Manager.DEFAULT_URL, Manager.DEFAULT_DESC) { } + /// + /// Ajoute un artiste en tant que Feat de l'InfoTitle + /// + /// public void AddFeat(Artist artist) { feat.Add(artist); } + + /// + /// Enlève un artiste des feats de l'InfoTitle + /// + /// public void RemoveFeat(Artist artiste) { foreach (var item in Feat) diff --git a/Sources/Model/Manager.cs b/Sources/Model/Manager.cs index 6909238..25fab19 100644 --- a/Sources/Model/Manager.cs +++ b/Sources/Model/Manager.cs @@ -6,6 +6,10 @@ namespace Model.Stub; public class Manager : INotifyPropertyChanged { + /// + /// Classe Manager + /// + public event PropertyChangedEventHandler PropertyChanged; public readonly static int MAX_NAME_LENGTH = 75; @@ -140,6 +144,10 @@ public class Manager : INotifyPropertyChanged } } + /// + /// Constructeur de la classe Manager + /// + /// Méthode de sérialisation, gestionnaire des données public Manager(IDataManager dataManager) { DataManager = dataManager; @@ -158,42 +166,65 @@ public class Manager : INotifyPropertyChanged LoadDictionaries(); } + /// + /// Remplis les dictionnaire grâce aux stubs et à LINQ + /// public void LoadDictionaries() { albumsFromArtist = albums.GroupBy(album => album.Artist.Name).ToDictionary(group => group.Key, group => group.AsEnumerable()); infoTitlesFromArtist = infoTitles.GroupBy(infoTitle => GetAlbumById(infoTitle.AlbumID).Artist.Name).ToDictionary(group => group.Key, group => group.AsEnumerable()); } + /// + /// Actualise le morceau en cours CurrentTitle avec le morceau suivant + /// public void NextTitle() { if (currentPlaylist == null) return; currentPlaying = currentPlaylist.NextTitle(); } + /// + /// Actualise le morceau en cours CurrentTitle avec le morceau précédent + /// public void PreviousTitle() { if (CurrentPlaying == null) return; currentPlaying = currentPlaylist.PreviousTitle(); } + /// + /// Permet de connaître le titre en cours + /// + /// Retourne le titre actuel public CustomTitle CurrentTitle() { if (CurrentPlaylist == null) return null; return currentPlaylist.GetCurrentTitle(); } + /// + /// Permet d'activer/désactiver l'option de boucle + /// public void Loop() { if (CurrentPlaylist == null) return; currentPlaylist.LoopTitle = !currentPlaylist.LoopTitle; } + /// + /// Permet d'activer/désactiver l'option de l'aléatoire + /// public void Shuffle() { if (CurrentPlaylist == null) return; currentPlaylist.Shuffle = !currentPlaylist.Shuffle; } + /// + /// Permet d'ajouter un Album à l'application + /// + /// Album à ajouter public void AddAlbum(Album album) { if (GetAlbumByName(album.Name) != null) return; @@ -201,6 +232,10 @@ public class Manager : INotifyPropertyChanged albums = DataManager.GetAlbums(); } + /// + /// Permet d'ajouter un CustomTitle à l'application + /// + /// CustomTitle à ajouter public void AddCustomTitle(CustomTitle title) { if (GetInfoTitleByName(title.Name) != null) return; @@ -208,6 +243,10 @@ public class Manager : INotifyPropertyChanged customTitles = DataManager.GetCustomTitles(); } + /// + /// Permet d'ajouter un InfoTitle à l'application + /// + /// InfoTitle à ajouter public void AddInfoTitle(InfoTitle title) { if (GetInfoTitleByName(title.Name) != null) return; @@ -215,6 +254,10 @@ public class Manager : INotifyPropertyChanged infoTitles = DataManager.GetInfoTitles(); } + /// + /// Permet d'ajouter une Playlist à l'application + /// + /// Playlist à ajouter public void AddPlaylist(Playlist playlist) { if (GetPlaylistByName(playlist.Name) != null) return; @@ -222,6 +265,10 @@ public class Manager : INotifyPropertyChanged playlists = DataManager.GetPlaylists(); } + /// + /// Permet d'ajouter un Artist à l'application + /// + /// Artist à ajouter public void AddArtist(Artist artist) { if (GetArtistByName(artist.Name) != null) return; @@ -229,96 +276,171 @@ public class Manager : INotifyPropertyChanged artists = DataManager.GetArtists(); } + /// + /// Permet de retirer un Album de l'application + /// + /// Album à retirer public void RemoveAlbum(Album album) { DataManager.RemoveAlbum(album); albums = DataManager.GetAlbums(); } + /// + /// Permet de retirer un CustomTitle de l'application + /// + /// CustomTitle à retirer public void RemoveCustomTitle(CustomTitle title) { DataManager.RemoveCustomTitle(title); customTitles = DataManager.GetCustomTitles(); } + /// + /// Permet de retirer un InfoTitle de l'application + /// + /// InfoTitle à retirer public void RemoveInfoTitle(InfoTitle title) { DataManager.RemoveInfoTitle(title); infoTitles = DataManager.GetInfoTitles(); } + /// + /// Permet de retirer une Playlist de l'application + /// + /// Playlist à retirer public void RemovePlaylist(Playlist playlist) { DataManager.RemovePlaylist(playlist); playlists = DataManager.GetPlaylists(); } + /// + /// Permet d'obtenir la liste des objets Playlist de l'application + /// + /// Reourne la liste des objets Playlist de l'application public ObservableCollection GetPlaylists() { return DataManager.GetPlaylists(); } + /// + /// Permet d'obtenir la liste des objets Album de l'application + /// + /// Reourne la liste des objets Album de l'application public ObservableCollection GetAlbums() { return DataManager.GetAlbums(); } + /// + /// Permet d'obtenir la liste des objets CustomTitle de l'application + /// + /// Reourne la liste des objets CustomTitle de l'application public ObservableCollection GetCustomTitles() { return DataManager.GetCustomTitles(); } + /// + /// Permet d'obtenir la liste des objets InfoTitle de l'application + /// + /// Reourne la liste des objets InfoTitle de l'application public ObservableCollection GetInfoTitles() { return DataManager.GetInfoTitles(); } + /// + /// Permet d'obtenir la liste des objets Artist de l'application + /// + /// Reourne la liste des objets Artist de l'application public IEnumerable GetArtists() { return DataManager.GetArtists(); } + /// + /// Permet de charger l'état sauvegardé précédemment dans l'application + /// public void LoadSerialization() { DataManager.LoadSerialization(); } + /// + /// Permet de sauvegarder l'état de l'application + /// public void SaveSerialization() { DataManager.SaveSerialization(); } + /// + /// Permet d'obtenir une Playlist selon son nom + /// + /// Nom de la Playlist + /// Retourne la Playlist correspondant au nom donné en paramètre public Playlist GetPlaylistByName(string name) { return DataManager.GetPlaylistByName(name); } + /// + /// Permet d'obtenir un Artist selon son nom + /// + /// Nom de l'Artist + /// Retourne l'Artist correspondant au nom donné en paramètre public Artist GetArtistByName(string name) { return DataManager.GetArtistByName(name); } + /// + /// Permet d'obtenir un CustomTitle selon son chemin d'accès + /// + /// Chemin d'accès du CustomTitle + /// Retourne le CustomTitle correspondant au chemin d'accès donné en paramètre public CustomTitle GetCustomTitleByPath(string path) { return DataManager.GetCustomTitleByPath(path); } + /// + /// Permet d'obtenir un InfoTitle selon son nom + /// + /// Nom de l'InfoTitle + /// Retourne l'InfoTitle correspondant au nom donné en paramètre public InfoTitle GetInfoTitleByName(string name) { return DataManager.GetInfoTitleByName(name); } + /// + /// Permet d'obtenir un Album selon son nom + /// + /// Nom de l'Album + /// Retourne l'Album correspondant au nom donné en paramètre public Album GetAlbumByName(string name) { return DataManager.GetAlbumByName(name); } + /// + /// Permet d'obtenir un Album selon son ID + /// + /// ID de l'Album + /// Retourne l'Album correspondant au ID donné en paramètre public Album GetAlbumById(long id) { return DataManager.GetAlbumById(id); } + /// + /// Permet la notification, et donc l'actualisation des objets connectés à l'événement lorsque la méthode est appelée + /// + /// Nom de la propriété modifiée protected void OnPropertyChanged([CallerMemberName] string propertyName = null) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); - } diff --git a/Sources/Model/Playlist.cs b/Sources/Model/Playlist.cs index 7f2a74b..346cfa6 100644 --- a/Sources/Model/Playlist.cs +++ b/Sources/Model/Playlist.cs @@ -131,6 +131,12 @@ public class Playlist : INotifyPropertyChanged private bool isSubMenuVisible; + /// + /// Constructeur de la classe Playlist + /// + /// Nom de la Playlist + /// Description de la Playlist + /// Chemin d'accès de l'image de la Playlist public Playlist(string nom, string description, string imageURL) { Name = nom; @@ -138,18 +144,37 @@ public class Playlist : INotifyPropertyChanged ImageURL = imageURL; } + /// + /// Constructeur par défaut de la Playlist + /// public Playlist() { } + /// + /// Ajoute un titre à la Playlist + /// + /// Morceau à ajouter à la Playlist public void AddTitle(CustomTitle morceau) { titles.Add(morceau); } + /// + /// Supprime un titre de la playlist + /// + /// Morceau à supprimer public void RemoveTitle(CustomTitle morceau) { titles.Remove(morceau); } + /// + /// Permet de connaître le prochain morceau à jouer dans la playlist + /// + /// Retourne le CustomTitle suivant selon les options indiquées par l'utilisateur + /// Vérifie s'il y a des morceaux dans la playlist, puis vérifie si l'option de boucle du morceau est activé. + /// Si elle est activée, cela renvoie le même morceau. Sinon, si l'option aléatoire N'est PAS activée, cela renvoie + /// simplement le morceau à la suite dans la liste des titres de la playlist. Sinon, l'option aléatoire est activée, cela + /// appelle donc une méthode de génération d'un index aléatoire pour avoir un morceau aléatoire dans la liste de la playlist. public CustomTitle NextTitle() { if (titles.Count < 1) return null; @@ -172,8 +197,20 @@ public class Playlist : INotifyPropertyChanged } } + /// + /// Permet de connaître le titre précédentà jouer dans la playlist + /// + /// Retourne le CustomTitle précédent selon les options indiquées par l'utilisateur + /// Vérifie s'il y a des morceaux dans la playlist, puis vérifie si l'option de boucle du morceau est activé. + /// Si elle est activée, cela renvoie le même morceau. Sinon, si l'option aléatoire N'est PAS activée, cela renvoie + /// simplement le morceau précédent celui actuel dans la liste des titres de la playlist. Si le morceau actuel est le + /// premier, le morceau précédent est le dernier de la playlist. + /// Sinon, l'option aléatoire est activée, la liste des morceaux jouée est analysée. Si elle est vide, le morceau + /// actuel est retourné. Sinon, cela renvoie le dernier élément de la liste des morceaux joués. A noter que cette liste ne + /// stocke que les index des titres présents dans la playlist. public CustomTitle PreviousTitle() { + if (titles.Count < 1) return null; if (LoopTitle) { return GetCurrentTitle(); @@ -204,6 +241,12 @@ public class Playlist : INotifyPropertyChanged } } + /// + /// Permet de connaître le morceau actuel de la playlist. + /// + /// Retourne le morceau actuel de la playlist + /// Tout d'abord, des tests de vérification sur l'index sont effectués pour éviter les bugs. Puis, cela renvoie le morceau + /// à l'index de la playlist dans la liste. public CustomTitle GetCurrentTitle() { if (Index < 0) Index = 0; @@ -249,6 +292,12 @@ public class Playlist : INotifyPropertyChanged return $"Name : {Name}"; } + /// + /// Permet de générer un nombre entre 0 et n + /// + /// Limite supérieure du nombre à générer + /// Retourne un nombre entre 0 et n + /// Cette méthode est effectuée via RandomNumberGenerator afin d'obtenir un aléatoire moins prévisible. static int RandomGenerator(int n) { RandomNumberGenerator rng = RandomNumberGenerator.Create(); @@ -258,6 +307,11 @@ public class Playlist : INotifyPropertyChanged return (int)(randomNumber % n) + 1; } + /// + /// Vérifie si la Playlist contient un certain CustomTitle + /// + /// CustomTitle à vérifier + /// Booléen True si le CustomTitle est contenu dans la Playlist, False sinon public bool HasCustomTitle(CustomTitle customTitle) { foreach(CustomTitle custom in Titles) @@ -267,6 +321,10 @@ public class Playlist : INotifyPropertyChanged return false; } + /// + /// Permet la notification, et donc l'actualisation des objets connectés à l'événement lorsque la méthode est appelée + /// + /// Nom de la propriété modifiée protected void OnPropertyChanged([CallerMemberName] string propertyName = null) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } diff --git a/Sources/Model/Title.cs b/Sources/Model/Title.cs index 673e60b..cde0bd3 100644 --- a/Sources/Model/Title.cs +++ b/Sources/Model/Title.cs @@ -67,6 +67,12 @@ public class Title private string information = Manager.DEFAULT_DESC; + /// + /// Constructeur de la classe Title + /// + /// Nom du Title + /// Chemin d'accès de l'image du Title + /// Informations sur le Title public Title(string nom, string file_Name, string informations) { Name = nom; @@ -105,6 +111,10 @@ public class Title return $"Name : {Name}"; } + /// + /// Permet la notification, et donc l'actualisation des objets connectés à l'événement lorsque la méthode est appelée + /// + /// Nom de la propriété modifiée protected void OnPropertyChanged([CallerMemberName] string propertyName = null) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); }