Finish commenting basic class
continuous-integration/drone/push Build is passing Details

pull/38/head
Corentin LEMAIRE 2 years ago
parent 5921c430ba
commit f18942014c

@ -101,14 +101,14 @@ namespace Model
private ObservableCollection<InfoTitle> infoTitles = new ObservableCollection<InfoTitle>();
/**
* \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
*/
/// <summary>
/// Constructeur de la classe Album
/// </summary>
/// <param name="name">Nom de l'Album</param>
/// <param name="imageURL">Chemin d'accès de l'image de l'Album</param>
/// <param name="artist">Artiste de l'Album</param>
/// <param name="description">Description de l'Album</param>
/// <param name="information">Informations complémentaires sur un Album</param>
public Album(string name, string imageURL, Artist artist, string description, string information)
{
id = nbAlbum;
@ -121,7 +121,7 @@ namespace Model
}
/// <summary>
/// Constructeur par défaut de la classe album
/// Constructeur par défaut de la classe Album
/// </summary>
public Album()
{

@ -24,11 +24,18 @@ public class Artist
private string name = Manager.DEFAULT_NAME;
/// <summary>
/// Constructeur de la classe Artist
/// </summary>
/// <param name="name">Nom de l'artiste</param>
public Artist(string name)
{
Name = name;
}
/// <summary>
/// Constructeur par défaut de la classe Artist
/// </summary>
public Artist()
{

@ -71,11 +71,21 @@ public class CustomTitle : Title, INotifyPropertyChanged
private bool isNewPlaylistMenuVisible = false;
/// <summary>
/// Constructeur de la classe Album
/// </summary>
/// <param name="name">Nom du CustomTitle</param>
/// <param name="imageURL">Chemin d'accès de l'image du CustomTitle</param>
/// <param name="information">Informations sur un CustomTitle</param>
/// <param name="path">Chemin d'accès du CustomTitle</param>
public CustomTitle(string name, string imageURL, string information, string path) : base(name, imageURL, information)
{
Path = path;
}
/// <summary>
/// Constructeur par défaut de la classe CustomTitle
/// </summary>
public CustomTitle() : base(Manager.DEFAULT_NAME, Manager.DEFAULT_URL, Manager.DEFAULT_DESC) { }
/// <summary>

@ -5,119 +5,417 @@ namespace Model;
public interface IDataManager
{
// Create
/// <summary>
/// Permet d'ajouter un objet Album à l'application
/// </summary>
/// <param name="album">Album à ajouter</param>
void AddAlbum(Album album);
/// <summary>
/// Permet d'ajouter des objets Album à l'application
/// </summary>
/// <param name="albumsList">Liste d'Album à ajouter</param>
void AddAlbums(List<Album> albumsList);
/// <summary>
/// Permet d'ajouter un objet Artist à l'application
/// </summary>
/// <param name="artist">Artist à ajouter</param>
void AddArtist(Artist artist);
/// <summary>
/// Permet d'ajouter des objets Artist à l'application
/// </summary>
/// <param name="artistsList">Liste d'Artist à ajouter</param>
void AddArtists(List<Artist> artistsList);
/// <summary>
/// Permet d'ajouter un objet Playlist à l'application
/// </summary>
/// <param name="playlist">Playlist à ajouter</param>
void AddPlaylist(Playlist playlist);
/// <summary>
/// Permet d'ajouter des objets Playlist à l'application
/// </summary>
/// <param name="playlistsList">Liste de Playlist à ajouter</param>
void AddPlaylists(List<Playlist> playlistsList);
/// <summary>
/// Permet d'ajouter un objet CustomTitle à l'application
/// </summary>
/// <param name="title">CustomTitle à ajouter</param>
void AddCustomTitle(CustomTitle title);
/// <summary>
/// Permet d'ajouter des objets CustomTitle à l'application
/// </summary>
/// <param name="customTitlesList">Liste de CustomTitle à ajouter</param>
void AddCustomTitles(List<CustomTitle> customTitlesList);
/// <summary>
/// Permet d'ajouter un objet InfoTitle à l'application
/// </summary>
/// <param name="title">InfoTitle à ajouter</param>
void AddInfoTitle(InfoTitle title);
/// <summary>
/// Permet d'ajouter des objets InfoTitle à l'application
/// </summary>
/// <param name="infoTitlesList">Liste d'InfoTitle à ajouter</param>
void AddInfoTitles(List<InfoTitle> infoTitlesList);
// Read
/// <summary>
/// Permet d'obtenir une liste d'objets CustomTitle
/// </summary>
/// <returns>Retourne une liste d'objets CustomTitle</returns>
ObservableCollection<CustomTitle> GetCustomTitles();
/// <summary>
/// Permet d'obtenir un objet CustomTitle à partir de son chemin d'accès
/// </summary>
/// <param name="custom">Chemin d'accès de l'objet CustomTitle</param>
/// <returns>Retourne l'objet CustomTitle avec un chemin d'accès équivalent à celui donné en paramètre</returns>
CustomTitle GetCustomTitleByPath(string custom);
/// <summary>
/// Permet d'obtenir une liste d'objets InfoTitle
/// </summary>
/// <returns>Retourne une liste d'objets InfoTitle</returns>
ObservableCollection<InfoTitle> GetInfoTitles();
/// <summary>
/// Permet d'obtenir un objet InfoTitle à partir de son nom
/// </summary>
/// <param name="name">Nom de l'objet InfoTitle</param>
/// <returns>Retourne l'objet InfoTitle avec un nom équivalent à celui donné en paramètre</returns>
InfoTitle GetInfoTitleByName(string name);
/// <summary>
/// Permet d'obtenir une liste d'objets Album
/// </summary>
/// <returns>Retourne une liste d'objets Album</returns>
ObservableCollection<Album> GetAlbums();
/// <summary>
/// Permet d'obtenir un objet Album à partir de son nom
/// </summary>
/// <param name="name">Nom de l'objet Album</param>
/// <returns>Retourne l'objet Album avec un nom équivalent à celui donné en paramètre</returns>
Album GetAlbumByName(string name);
/// <summary>
/// Permet d'obtenir un objet Album à partir de son ID
/// </summary>
/// <param name="id">ID de l'objet Album</param>
/// <returns>Retourne l'objet Album avec un ID équivalent à celui donné en paramètre</returns>
Album GetAlbumById(long id);
/// <summary>
/// Permet d'obtenir une liste d'objets Artist
/// </summary>
/// <returns>Retourne une liste d'objets Artist</returns>
List<Artist> GetArtists();
/// <summary>
/// Permet d'obtenir un objet Artist à partir de son nom
/// </summary>
/// <param name="name">Nom de l'objet Artist</param>
/// <returns>Retourne l'objet Artist avec un nom équivalent à celui donné en paramètre</returns>
Artist GetArtistByName(string name);
/// <summary>
/// Permet d'obtenir une liste d'objets Playlist
/// </summary>
/// <returns>Retourne une liste d'objets Playlist</returns>
ObservableCollection<Playlist> GetPlaylists();
/// <summary>
/// Permet d'obtenir un objet Playlist à partir de son nom
/// </summary>
/// <param name="name">Nom de l'objet Playlist</param>
/// <returns>Retourne l'objet Playlist avec un nom équivalent à celui donné en paramètre</returns>
Playlist GetPlaylistByName(string name);
// Update
/// <summary>
/// Modifie un objet CustomTitle avec les informations données en paramètre
/// </summary>
/// <param name="title">CustomTitle à modifier</param>
/// <param name="name">Nom de l'objet CustomTitle</param>
/// <param name="url">Chemin d'accès de l'image de l'objet CustomTitle</param>
/// <param name="info">Informations de l'objet CustomTitle</param>
/// <param name="path">Chemin d'accès de l'objet CustomTitle</param>
void UpdateCustomTitle(CustomTitle title, string name, string url, string info, string path);
/// <summary>
/// Modifie un objet CustomTitle avec les informations données en paramètre
/// </summary>
/// <param name="path">Chemin d'accès du CustomTitle à modifier</param>
/// <param name="name">Nom de l'objet CustomTitle</param>
/// <param name="newUrl">Chemin d'accès de l'image de l'objet CustomTitle</param>
/// <param name="info">Informations de l'objet CustomTitle</param>
/// <param name="newPath">Chemin d'accès de l'objet CustomTitle</param>
void UpdateCustomTitleByPath(string path, string name, string newUrl, string info, string newPath);
/// <summary>
/// Modifie un objet InfoTitle avec les informations données en paramètre
/// </summary>
/// <param name="title">InfoTitle à modifier</param>
/// <param name="name">Nom de l'objet InfoTitle</param>
/// <param name="url">Chemin d'accès de l'image de l'objet InfoTitle</param>
/// <param name="info">Informations de l'objet InfoTitle</param>
/// <param name="artist">Artist de l'objet InfoTitle</param>
/// <param name="description">Description de l'objet InfoTitle</param>
/// <param name="genre">Genre de l'objet InfoTitle</param>
void UpdateInfoTitle(InfoTitle title, string name, string url, string info, Artist artist, string description, Genre genre);
/// <summary>
/// Modifie un objet InfoTitle avec les informations données en paramètre
/// </summary>
/// <param name="name">Nom de l'objet InfoTitle à modifier</param>
/// <param name="newUrl">Chemin d'accès de l'image de l'objet InfoTitle</param>
/// <param name="info">Informations de l'objet InfoTitle</param>
/// <param name="artist">Artist de l'objet InfoTitle</param>
/// <param name="description">Description de l'objet InfoTitle</param>
/// <param name="genre">Genre de l'objet InfoTitle</param>
void UpdateInfoTitleByName(string name, string newUrl, string info, Artist artist, string description, Genre genre);
/// <summary>
/// Modifie un objet Album avec les informations données en paramètre
/// </summary>
/// <param name="album">Album à modifier</param>
/// <param name="name">Nom de l'objet Album</param>
/// <param name="url">Chemin d'accès de l'image de l'objet Album</param>
/// <param name="artist">Artist de l'objet Album</param>
/// <param name="description">Description de l'objet Album</param>
/// <param name="info">Informations de l'objet Album</param>
void UpdateAlbum(Album album, string name, string url, Artist artist, string description, string info);
/// <summary>
/// Modifie un objet Album avec les informations données en paramètre
/// </summary>
/// <param name="name">Nom de l'objet Album à modifier</param>
/// <param name="newUrl">Chemin d'accès de l'image de l'objet Album</param>
/// <param name="artist">Artist de l'objet Album</param>
/// <param name="description">Description de l'objet Album</param>
/// <param name="info">Informations de l'objet Album</param>
void UpdateAlbumByName(string name, string newUrl, Artist artist, string description, string info);
/// <summary>
/// Modifie un objet Album avec les informations données en paramètre
/// </summary>
/// <param name="album">Album à modifier</param>
/// <param name="name">Nom de l'objet Album</param>
/// <param name="url">Chemin d'accès de l'image de l'objet Album</param>
/// <param name="artist">Nom de l'artiste de l'objet Album</param>
/// <param name="description">Description de l'objet Album</param>
/// <param name="info">Informations de l'objet Album</param>
void UpdateAlbumByArtistName(Album album, string name, string url, string artist, string description, string info);
/// <summary>
/// Modifie un objet Album avec les informations données en paramètre
/// </summary>
/// <param name="name">Nom de l'objet Album à modifier</param>
/// <param name="newUrl">Chemin d'accès de l'image de l'objet Album</param>
/// <param name="artist">Nom de l'artiste de l'objet Album</param>
/// <param name="description">Description de l'objet Album</param>
/// <param name="info">Informations de l'objet Album</param>
void UpdateAlbumByNameByArtistName(string name, string newUrl, string artist, string description, string info);
/// <summary>
/// Modifie un objet Playlist avec les informations données en paramètre
/// </summary>
/// <param name="playlist">Playlist à modifier</param>
/// <param name="name">Nom de l'objet Playlist</param>
/// <param name="description">Description de l'objet Playlist</param>
/// <param name="url">Chemin d'accès de l'image de l'objet Playlist</param>
void UpdatePlaylist(Playlist playlist, string name, string description, string url);
/// <summary>
/// Modifie un objet Playlist avec les informations données en paramètre
/// </summary>
/// <param name="name">Nom de l'objet Playlist à modifier</param>
/// <param name="description">Description de l'objet Playlist</param>
/// <param name="newUrl">Chemin d'accès de l'image de l'objet Playlist</param>
void UpdatePlaylistByName(string name, string description, string newUrl);
/// <summary>
/// Modifie un objet Artist avec les informations données en paramètre
/// </summary>
/// <param name="artist">Artiste à modifier</param>
/// <param name="name">Nom de l'objet Artist</param>
void UpdateArtist(Artist artist, string name);
/// <summary>
/// Modifie un objet Artist avec les informations données en paramètre
/// </summary>
/// <param name="name">Nom de l'objet Artist à modifier</param>
/// <param name="newName">Nouveau nom de l'objet Artist</param>
void UpdateArtistByName(string name, string newName);
// Delete
/// <summary>
/// Permet de retirer un objet Album de l'application
/// </summary>
/// <param name="album">Album à retirer</param>
void RemoveAlbum(Album album);
/// <summary>
/// Permet de retirer des objets Album de l'application
/// </summary>
/// <param name="albumsList">Liste des objets Album à retirer de l'application</param>
void RemoveAlbums(List<Album> albumsList);
/// <summary>
/// Permet de retirer un objet Artist de l'application
/// </summary>
/// <param name="artist">Artist à retirer</param>
void RemoveArtist(Artist artist);
/// <summary>
/// Permet de retirer des objets Artist de l'application
/// </summary>
/// <param name="artistsList">Liste des objets Artist à retirer de l'application</param>
void RemoveArtists(List<Artist> artistsList);
/// <summary>
/// Permet de retirer un objet Playlist de l'application
/// </summary>
/// <param name="playlist">Playlist à retirer</param>
void RemovePlaylist(Playlist playlist);
/// <summary>
/// Permet de retirer des objets Playlist de l'application
/// </summary>
/// <param name="playlistsList">Liste des objets Playlist à retirer de l'application</param>
void RemovePlaylists(List<Playlist> playlistsList);
/// <summary>
/// Permet de retirer un objet CustomTitle de l'application
/// </summary>
/// <param name="title">CustomTitle à retirer</param>
void RemoveCustomTitle(CustomTitle title);
/// <summary>
/// Permet de retirer des objets CustomTitle de l'application
/// </summary>
/// <param name="customTitlesList">Liste des objets CustomTitle à retirer de l'application</param>
void RemoveCustomTitles(List<CustomTitle> customTitlesList);
/// <summary>
/// Permet de retirer un objet InfoTitle de l'application
/// </summary>
/// <param name="title">InfoTitle à retirer</param>
void RemoveInfoTitle(InfoTitle title);
/// <summary>
/// Permet de retirer des objets InfoTitle de l'application
/// </summary>
/// <param name="infoTitlesList">Liste des objets InfoTitle à retirer de l'application</param>
void RemoveInfoTitles(List<InfoTitle> infoTitlesList);
// Serialization
/// <summary>
/// Permet de charger les données
/// </summary>
void LoadSerialization();
/// <summary>
/// Permet de sauvegarder l'état de l'application
/// </summary>
void SaveSerialization();
// Exists
/// <summary>
/// Permet de savoir si un objet Playlist appartient ou non à l'application
/// </summary>
/// <param name="playlist">Playlist à vérifier</param>
/// <returns>Booléen True s'il est contenu dans l'application, False sinon</returns>
bool ExistsPlaylist(Playlist playlist);
/// <summary>
/// Permet de savoir si un objet Playlist appartient ou non à l'application selon son nom
/// </summary>
/// <param name="name">Nom de l'objet Playlist à vérifier</param>
/// <returns>Booléen True s'il est contenu dans l'application, False sinon</returns>
bool ExistsPlaylistByName(string name);
/// <summary>
/// Permet de savoir si un objet Album appartient ou non à l'application
/// </summary>
/// <param name="album">Album à vérifier</param>
/// <returns>Booléen True s'il est contenu dans l'application, False sinon</returns>
bool ExistsAlbum(Album album);
/// <summary>
/// Permet de savoir si un objet Album appartient ou non à l'application selon son nom
/// </summary>
/// <param name="name">Nom de l'objet Album à vérifier</param>
/// <returns>Booléen True s'il est contenu dans l'application, False sinon</returns>
bool ExistsAlbumByName(string name);
/// <summary>
/// Permet de savoir si un objet Artist appartient ou non à l'application
/// </summary>
/// <param name="artist">Artist à vérifier</param>
/// <returns>Booléen True s'il est contenu dans l'application, False sinon</returns>
bool ExistsArtist(Artist artist);
/// <summary>
/// Permet de savoir si un objet Artist appartient ou non à l'application selon son nom
/// </summary>
/// <param name="name">Nom de l'objet Artist à vérifier</param>
/// <returns>Booléen True s'il est contenu dans l'application, False sinon</returns>
bool ExistsArtistByName(string name);
/// <summary>
/// Permet de savoir si un objet CustomTitle appartient ou non à l'application selon son nom
/// </summary>
/// <param name="title">Nom de l'objet CustomTitle à vérifier</param>
/// <returns>Booléen True s'il est contenu dans l'application, False sinon</returns>
bool ExistsCustomTitle(CustomTitle title);
/// <summary>
/// Permet de savoir si un objet CustomTitle appartient ou non à l'application selon son nom
/// </summary>
/// <param name="name">Nom de l'objet CustomTitle à vérifier</param>
/// <returns>Booléen True s'il est contenu dans l'application, False sinon</returns>
bool ExistsCustomTitleByName(string name);
/// <summary>
/// Permet de savoir si un objet InfoTitle appartient ou non à l'application
/// </summary>
/// <param name="title">InfoTitle à vérifier</param>
/// <returns>Booléen True s'il est contenu dans l'application, False sinon</returns>
bool ExistsInfoTitle(InfoTitle title);
/// <summary>
/// Permet de savoir si un objet InfoTitle appartient ou non à l'application selon son nom
/// </summary>
/// <param name="name">Nom de l'objet InfoTitle à vérifier</param>
/// <returns>Booléen True s'il est contenu dans l'application, False sinon</returns>
bool ExistsInfoTitleByName(string name);
}

@ -47,6 +47,15 @@ public class InfoTitle : Title
}
}
/// <summary>
/// Constructeur de la classe InfoTitle
/// </summary>
/// <param name="name">Nom de l'InfoTitle</param>
/// <param name="imageURL">Chemin d'accès de l'image de l'InfoTitle</param>
/// <param name="information">Informations complémentaires sur l'InfoTitle</param>
/// <param name="description">Description de l'InfoTitle</param>
/// <param name="genre">Genre de l'InfoTitle</param>
/// <param name="albumID">ID de l'album auquel appartient l'InfoTitle</param>
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;
}
/// <summary>
/// Constructeur par défaut de la classe InfoTitle
/// </summary>
public InfoTitle() : base(Manager.DEFAULT_NAME, Manager.DEFAULT_URL, Manager.DEFAULT_DESC)
{
}
/// <summary>
/// Ajoute un artiste en tant que Feat de l'InfoTitle
/// </summary>
/// <param name="artist"></param>
public void AddFeat(Artist artist)
{
feat.Add(artist);
}
/// <summary>
/// Enlève un artiste des feats de l'InfoTitle
/// </summary>
/// <param name="artiste"></param>
public void RemoveFeat(Artist artiste)
{
foreach (var item in Feat)

@ -6,6 +6,10 @@ namespace Model.Stub;
public class Manager : INotifyPropertyChanged
{
/// <remarks>
/// Classe Manager
/// </remarks>
public event PropertyChangedEventHandler PropertyChanged;
public readonly static int MAX_NAME_LENGTH = 75;
@ -140,6 +144,10 @@ public class Manager : INotifyPropertyChanged
}
}
/// <summary>
/// Constructeur de la classe Manager
/// </summary>
/// <param name="dataManager">Méthode de sérialisation, gestionnaire des données</param>
public Manager(IDataManager dataManager)
{
DataManager = dataManager;
@ -158,42 +166,65 @@ public class Manager : INotifyPropertyChanged
LoadDictionaries();
}
/// <summary>
/// Remplis les dictionnaire grâce aux stubs et à LINQ
/// </summary>
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());
}
/// <summary>
/// Actualise le morceau en cours CurrentTitle avec le morceau suivant
/// </summary>
public void NextTitle()
{
if (currentPlaylist == null) return;
currentPlaying = currentPlaylist.NextTitle();
}
/// <summary>
/// Actualise le morceau en cours CurrentTitle avec le morceau précédent
/// </summary>
public void PreviousTitle()
{
if (CurrentPlaying == null) return;
currentPlaying = currentPlaylist.PreviousTitle();
}
/// <summary>
/// Permet de connaître le titre en cours
/// </summary>
/// <returns>Retourne le titre actuel</returns>
public CustomTitle CurrentTitle()
{
if (CurrentPlaylist == null) return null;
return currentPlaylist.GetCurrentTitle();
}
/// <summary>
/// Permet d'activer/désactiver l'option de boucle
/// </summary>
public void Loop()
{
if (CurrentPlaylist == null) return;
currentPlaylist.LoopTitle = !currentPlaylist.LoopTitle;
}
/// <summary>
/// Permet d'activer/désactiver l'option de l'aléatoire
/// </summary>
public void Shuffle()
{
if (CurrentPlaylist == null) return;
currentPlaylist.Shuffle = !currentPlaylist.Shuffle;
}
/// <summary>
/// Permet d'ajouter un Album à l'application
/// </summary>
/// <param name="album">Album à ajouter</param>
public void AddAlbum(Album album)
{
if (GetAlbumByName(album.Name) != null) return;
@ -201,6 +232,10 @@ public class Manager : INotifyPropertyChanged
albums = DataManager.GetAlbums();
}
/// <summary>
/// Permet d'ajouter un CustomTitle à l'application
/// </summary>
/// <param name="title">CustomTitle à ajouter</param>
public void AddCustomTitle(CustomTitle title)
{
if (GetInfoTitleByName(title.Name) != null) return;
@ -208,6 +243,10 @@ public class Manager : INotifyPropertyChanged
customTitles = DataManager.GetCustomTitles();
}
/// <summary>
/// Permet d'ajouter un InfoTitle à l'application
/// </summary>
/// <param name="title">InfoTitle à ajouter</param>
public void AddInfoTitle(InfoTitle title)
{
if (GetInfoTitleByName(title.Name) != null) return;
@ -215,6 +254,10 @@ public class Manager : INotifyPropertyChanged
infoTitles = DataManager.GetInfoTitles();
}
/// <summary>
/// Permet d'ajouter une Playlist à l'application
/// </summary>
/// <param name="playlist">Playlist à ajouter</param>
public void AddPlaylist(Playlist playlist)
{
if (GetPlaylistByName(playlist.Name) != null) return;
@ -222,6 +265,10 @@ public class Manager : INotifyPropertyChanged
playlists = DataManager.GetPlaylists();
}
/// <summary>
/// Permet d'ajouter un Artist à l'application
/// </summary>
/// <param name="artist">Artist à ajouter</param>
public void AddArtist(Artist artist)
{
if (GetArtistByName(artist.Name) != null) return;
@ -229,96 +276,171 @@ public class Manager : INotifyPropertyChanged
artists = DataManager.GetArtists();
}
/// <summary>
/// Permet de retirer un Album de l'application
/// </summary>
/// <param name="album">Album à retirer</param>
public void RemoveAlbum(Album album)
{
DataManager.RemoveAlbum(album);
albums = DataManager.GetAlbums();
}
/// <summary>
/// Permet de retirer un CustomTitle de l'application
/// </summary>
/// <param name="title">CustomTitle à retirer</param>
public void RemoveCustomTitle(CustomTitle title)
{
DataManager.RemoveCustomTitle(title);
customTitles = DataManager.GetCustomTitles();
}
/// <summary>
/// Permet de retirer un InfoTitle de l'application
/// </summary>
/// <param name="title">InfoTitle à retirer</param>
public void RemoveInfoTitle(InfoTitle title)
{
DataManager.RemoveInfoTitle(title);
infoTitles = DataManager.GetInfoTitles();
}
/// <summary>
/// Permet de retirer une Playlist de l'application
/// </summary>
/// <param name="playlist">Playlist à retirer</param>
public void RemovePlaylist(Playlist playlist)
{
DataManager.RemovePlaylist(playlist);
playlists = DataManager.GetPlaylists();
}
/// <summary>
/// Permet d'obtenir la liste des objets Playlist de l'application
/// </summary>
/// <returns>Reourne la liste des objets Playlist de l'application</returns>
public ObservableCollection<Playlist> GetPlaylists()
{
return DataManager.GetPlaylists();
}
/// <summary>
/// Permet d'obtenir la liste des objets Album de l'application
/// </summary>
/// <returns>Reourne la liste des objets Album de l'application</returns>
public ObservableCollection<Album> GetAlbums()
{
return DataManager.GetAlbums();
}
/// <summary>
/// Permet d'obtenir la liste des objets CustomTitle de l'application
/// </summary>
/// <returns>Reourne la liste des objets CustomTitle de l'application</returns>
public ObservableCollection<CustomTitle> GetCustomTitles()
{
return DataManager.GetCustomTitles();
}
/// <summary>
/// Permet d'obtenir la liste des objets InfoTitle de l'application
/// </summary>
/// <returns>Reourne la liste des objets InfoTitle de l'application</returns>
public ObservableCollection<InfoTitle> GetInfoTitles()
{
return DataManager.GetInfoTitles();
}
/// <summary>
/// Permet d'obtenir la liste des objets Artist de l'application
/// </summary>
/// <returns>Reourne la liste des objets Artist de l'application</returns>
public IEnumerable<Artist> GetArtists()
{
return DataManager.GetArtists();
}
/// <summary>
/// Permet de charger l'état sauvegardé précédemment dans l'application
/// </summary>
public void LoadSerialization()
{
DataManager.LoadSerialization();
}
/// <summary>
/// Permet de sauvegarder l'état de l'application
/// </summary>
public void SaveSerialization()
{
DataManager.SaveSerialization();
}
/// <summary>
/// Permet d'obtenir une Playlist selon son nom
/// </summary>
/// <param name="name">Nom de la Playlist</param>
/// <returns>Retourne la Playlist correspondant au nom donné en paramètre</returns>
public Playlist GetPlaylistByName(string name)
{
return DataManager.GetPlaylistByName(name);
}
/// <summary>
/// Permet d'obtenir un Artist selon son nom
/// </summary>
/// <param name="name">Nom de l'Artist</param>
/// <returns>Retourne l'Artist correspondant au nom donné en paramètre</returns>
public Artist GetArtistByName(string name)
{
return DataManager.GetArtistByName(name);
}
/// <summary>
/// Permet d'obtenir un CustomTitle selon son chemin d'accès
/// </summary>
/// <param name="path">Chemin d'accès du CustomTitle</param>
/// <returns>Retourne le CustomTitle correspondant au chemin d'accès donné en paramètre</returns>
public CustomTitle GetCustomTitleByPath(string path)
{
return DataManager.GetCustomTitleByPath(path);
}
/// <summary>
/// Permet d'obtenir un InfoTitle selon son nom
/// </summary>
/// <param name="name">Nom de l'InfoTitle</param>
/// <returns>Retourne l'InfoTitle correspondant au nom donné en paramètre</returns>
public InfoTitle GetInfoTitleByName(string name)
{
return DataManager.GetInfoTitleByName(name);
}
/// <summary>
/// Permet d'obtenir un Album selon son nom
/// </summary>
/// <param name="name">Nom de l'Album</param>
/// <returns>Retourne l'Album correspondant au nom donné en paramètre</returns>
public Album GetAlbumByName(string name)
{
return DataManager.GetAlbumByName(name);
}
/// <summary>
/// Permet d'obtenir un Album selon son ID
/// </summary>
/// <param name="id">ID de l'Album</param>
/// <returns>Retourne l'Album correspondant au ID donné en paramètre</returns>
public Album GetAlbumById(long id)
{
return DataManager.GetAlbumById(id);
}
/// <summary>
/// Permet la notification, et donc l'actualisation des objets connectés à l'événement lorsque la méthode est appelée
/// </summary>
/// <param name="propertyName">Nom de la propriété modifiée</param>
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
=> PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

@ -131,6 +131,12 @@ public class Playlist : INotifyPropertyChanged
private bool isSubMenuVisible;
/// <summary>
/// Constructeur de la classe Playlist
/// </summary>
/// <param name="nom">Nom de la Playlist</param>
/// <param name="description">Description de la Playlist</param>
/// <param name="imageURL">Chemin d'accès de l'image de la Playlist</param>
public Playlist(string nom, string description, string imageURL)
{
Name = nom;
@ -138,18 +144,37 @@ public class Playlist : INotifyPropertyChanged
ImageURL = imageURL;
}
/// <summary>
/// Constructeur par défaut de la Playlist
/// </summary>
public Playlist() { }
/// <summary>
/// Ajoute un titre à la Playlist
/// </summary>
/// <param name="morceau">Morceau à ajouter à la Playlist</param>
public void AddTitle(CustomTitle morceau)
{
titles.Add(morceau);
}
/// <summary>
/// Supprime un titre de la playlist
/// </summary>
/// <param name="morceau">Morceau à supprimer</param>
public void RemoveTitle(CustomTitle morceau)
{
titles.Remove(morceau);
}
/// <summary>
/// Permet de connaître le prochain morceau à jouer dans la playlist
/// </summary>
/// <returns>Retourne le CustomTitle suivant selon les options indiquées par l'utilisateur</returns>
/// 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
}
}
/// <summary>
/// Permet de connaître le titre précédentà jouer dans la playlist
/// </summary>
/// <returns>Retourne le CustomTitle précédent selon les options indiquées par l'utilisateur</returns>
/// 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
}
}
/// <summary>
/// Permet de connaître le morceau actuel de la playlist.
/// </summary>
/// <returns>Retourne le morceau actuel de la playlist</returns>
/// 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}";
}
/// <summary>
/// Permet de générer un nombre entre 0 et n
/// </summary>
/// <param name="n">Limite supérieure du nombre à générer</param>
/// <returns>Retourne un nombre entre 0 et n</returns>
/// 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;
}
/// <summary>
/// Vérifie si la Playlist contient un certain CustomTitle
/// </summary>
/// <param name="customTitle">CustomTitle à vérifier</param>
/// <returns>Booléen True si le CustomTitle est contenu dans la Playlist, False sinon</returns>
public bool HasCustomTitle(CustomTitle customTitle)
{
foreach(CustomTitle custom in Titles)
@ -267,6 +321,10 @@ public class Playlist : INotifyPropertyChanged
return false;
}
/// <summary>
/// Permet la notification, et donc l'actualisation des objets connectés à l'événement lorsque la méthode est appelée
/// </summary>
/// <param name="propertyName">Nom de la propriété modifiée</param>
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
=> PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

@ -67,6 +67,12 @@ public class Title
private string information = Manager.DEFAULT_DESC;
/// <summary>
/// Constructeur de la classe Title
/// </summary>
/// <param name="nom">Nom du Title</param>
/// <param name="file_Name">Chemin d'accès de l'image du Title</param>
/// <param name="informations">Informations sur le Title</param>
public Title(string nom, string file_Name, string informations)
{
Name = nom;
@ -105,6 +111,10 @@ public class Title
return $"Name : {Name}";
}
/// <summary>
/// Permet la notification, et donc l'actualisation des objets connectés à l'événement lorsque la méthode est appelée
/// </summary>
/// <param name="propertyName">Nom de la propriété modifiée</param>
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
=> PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

Loading…
Cancel
Save