Add complex feature category and add explanations under sequence diagrams
continuous-integration/drone/push Build is passing Details

pull/30/head
Corentin LEMAIRE 2 years ago
parent 166a1899b2
commit cc9aa2d3c2

@ -56,6 +56,17 @@ You can find all the documentation [here](https://codefirst.iut.uca.fr/git/coren
- The Layout doesn't disappear as the screen is shrinking
## Complex feature
- Music player
- We went through lot's of issues when trying to implement the music player. This was the most complex feature of Linaris. Indeed, we really wanted to offer the possibility to play music on both Windows and Android, and not only one platform.
- Serialization
- The serialization part took lot's of time. We tried our best to make it with LINQ to enjoy its the power. However, many problems delayed us a lot.
- Playlist system
- The playlist system was hard to implement with the options to loop and to shuffle the playlist. We had to refactor our code to get a way better option.
- Styles
- While coding the styles, we encountered an issue with the XAML language where the TargetName didn't work. We had to work around the problem, which ended up costing us a lot of time.
## Built with
- [.NET MAUI 7.0](https://learn.microsoft.com/fr-fr/dotnet/maui/get-started/installation)
@ -790,6 +801,8 @@ 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**.
L'**utilisateur** représente toute personne utilisant l'application et **Front** désigne les vues. Pour ce qui est de **Sérialization**, elle désigne soit les stubs, soit la sérialisation en XML selon le mode de sérialisation utilisée par Linaris. **Files** correspond aux données de l'application, qu'elles soient dans les stubs ou dans des fichiers *.xml. Enfin, **Collections** désigne les structure de données de Linaris.
| Step | Explanation |
| ----------- | ----------- |
| 1 | L'utilisateur lance l'application via sont téléphone Android ou Windows,lançant le programme de Linaris |
@ -837,11 +850,15 @@ la fonction **NextTitle** de la classe *Playlist* est appelée. Si le booléen *
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.
L'**utilisateur** représente toute personne utilisant l'application et **Front** désigne les vues. **Manager** représente la classe Manager, gérant tout le code-behind de Linaris. Enfin, **Playlist** représente la classe Playlist donnant accès à toute la gestion des playlists de l'application.
Le premier alt est utile afin de s'assurer qu'une playlist est en cours, pour **ne pas causer de problème**. Le deuxième alt vérifie les options possibles de la playlist, en accord avec les **choix** de l'utilisateur.
| Step | Explanation |
| ----------- | ----------- |
| 1 | L'utilisateur intéragit avec le bouton de musique suivante du footer |
| 2 | Cet événement déclenche la méthode NextTitle du code-behind |
| 3 | Si aucune musique n'est en train d'être jouée, la méthode ne fait rien |
| 3 | Si aucune playlist n'est en train d'être jouée, la méthode ne fait rien |
| 4 | Sinon, le Manager va chercher le morceau suivant de la playlist actuelle |
| 5 | Si l'option de lecture du morceau en boucle est activée, le même morceau est renvoyé |
| 6 | Si l'option de lecture en boucle est désactivée mais que la lecture en aléatoire l'est, un morceau aléatoire de la plyalist actuelle est renvoyée en choisissant ce morceau par un index |

Loading…
Cancel
Save