diff --git a/README.md b/README.md index 9b467a1..6980748 100644 --- a/README.md +++ b/README.md @@ -659,6 +659,43 @@ Notre sérialisation permet de sauvegarder nos données dans des fichiers *XML* Cette méthode est appelée lorsque l'utilisateur démarre l'application *Linaris* (MAUI). Celle-ci appelle ensuite les différentes fonctions de chargement codées en *C#* présentes dans la classe *LinqXmlSerialization*. Grâce à la bibliothèque **LINQ_XML**, la sérialisation peut récupérer les données présentes dans les différents fichiers pour les classes **Artist**, **CustomTitle** et **Playlist** et les mettre dans les différentes *ObservableCollection*. Pour les classes **InfoTitle** et **Album**, les données sont récupérées dans les collections des stubs correspondant et les mettre dans les différentes *ObservableCollection*. Les données sont ensuite utilisables par les vues via le **manager**. +### NextTitle() + +```plantuml +@startuml +autonumber +actor Utilisateur as user +participant Front as vues +participant Manager as man +participant Playlist as play +group NextTitle + user -> vues : Clique sur le bouton suivant + vues -> man : Appelle la fonction NextTitle + alt currentPlaylist == null + vues <-- man : ne retourne rien + else currentPlaylist != null + man -> play : Demande le titre suivant + alt loop == true + man <-- play : retourne le titre actuel + else loop == false and shuffle == true + man <-- play : retourne un titre aléatoire de la playlist (index entre 0 et la taille de la playlist) + else loop == false and shuffle == false + man <-- play : retourne le titre suivant (index + 1) + end + vues <-- man : retourne le titre + user <-- vues : joue le titre + end +end +@enduml +``` + +#### Explications + +Lorsque l'utilisateur clique sur le bouton **suivant**, la fonction **NextTitle** de la classe C# *Manager* est appelée. Si la variable *currentPlaylist* est initialisée, +la fonction **NextTitle** de la classe *Playlist* est appelée. Si le booléen *loop* est vrai, la fonction retourne le titre actuel. Si le booléen *loop* est faux et le booléen *shuffle* est vrai, +la fonction retourne un titre aléatoire en générant un nombre aléatoire compris entre 0 et la taille de la playlist (nombre de titres) grâce à la fonction **RandomGenerator** de la playlist. +À l'inverse, si le booléen *shuffle* est faux, la fonction retourne le titre suivant en incrémentant de 1 l'index du son actuel. + ---