From ea29528c56302146178fe2a7644b8b6ba22832a6 Mon Sep 17 00:00:00 2001 From: vidufour1 Date: Fri, 2 Jun 2023 15:09:27 +0200 Subject: [PATCH] ajout du bouton de tri (fonctionnel (faudra juste rajouter des types d'unstruments quand y'en aura +) --- MusiLib/MusiLib/Model/Partition.cs | 4 +- MusiLib/MusiLib/Model/Trier.cs | 49 +++++++++++-------- MusiLib/MusiLib/Stub/Stub.cs | 12 ++--- MusiLib/MusiLib/Views/Accueil.xaml | 3 +- MusiLib/MusiLib/Views/Accueil.xaml.cs | 69 +++++++++++++++++++++++++++ 5 files changed, 108 insertions(+), 29 deletions(-) diff --git a/MusiLib/MusiLib/Model/Partition.cs b/MusiLib/MusiLib/Model/Partition.cs index 93fa750..538760d 100644 --- a/MusiLib/MusiLib/Model/Partition.cs +++ b/MusiLib/MusiLib/Model/Partition.cs @@ -21,7 +21,7 @@ namespace MusiLib.Model [DataMember] public string Auteur { get; private set; } [DataMember] - public int Complexite { get; private set; } + public string Complexite { get; private set; } [DataMember] public string Description { get; private set; } [DataMember] @@ -29,7 +29,7 @@ namespace MusiLib.Model [DataMember] public string Son { get; private set; } - public Partition(string nom, string auteur, int complexite, string description, string instrument, string son) + public Partition(string nom, string auteur, string complexite, string description, string instrument, string son) { Nom = nom; IdPartition = idTotal; diff --git a/MusiLib/MusiLib/Model/Trier.cs b/MusiLib/MusiLib/Model/Trier.cs index 7a7907b..360b6d3 100644 --- a/MusiLib/MusiLib/Model/Trier.cs +++ b/MusiLib/MusiLib/Model/Trier.cs @@ -1,37 +1,46 @@ -using MusiLib.Model; -using System; +using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; +using MusiLib.Model; -namespace App.Models +namespace MusiLib.Model { - class Trier + public class Trier { + private List partitionsInitiales; + private List partitionsFiltrees; - public List partitions = new List(); - - public List parNom(List liste) + public Trier(List partitions) { - Comparer comparer = Comparer.Create((p1, p2) => p1.Nom.CompareTo(p2.Nom)); - liste.Sort(comparer); - return liste; + partitionsInitiales = partitions.ToList(); + partitionsFiltrees = new List(partitionsInitiales); } - public List parComplexite(List liste) + public List TrierParInstrument(string instrument) { - Comparer comparer = Comparer.Create((p1, p2) => p1.Complexite.CompareTo(p2.Complexite)); - liste.Sort(comparer); - return liste; + partitionsFiltrees = partitionsInitiales.Where(p => p.Instrument.ToLower() == instrument.ToLower()).ToList(); + return partitionsFiltrees; } - public List parInstrument(List liste) + public List TrierParComplexite(string complexite) { - Comparer comparer = Comparer.Create((p1, p2) => p1.Instrument.CompareTo(p2.Instrument)); - liste.Sort(comparer); - return liste; + partitionsFiltrees = partitionsInitiales.Where(p => p.Complexite.ToLower() == complexite.ToLower()).ToList(); + Console.WriteLine("string : " + complexite); + foreach (Partition partition in partitionsInitiales) + { + Console.WriteLine(partition.Complexite); + } + return partitionsFiltrees; } + public List TrierParOrdreAlphabetique(string ordre) + { + if (ordre == "Croissant") + partitionsFiltrees = partitionsInitiales.OrderBy(p => p.Nom).ToList(); + else if (ordre == "Décroissant") + partitionsFiltrees = partitionsInitiales.OrderByDescending(p => p.Nom).ToList(); + + return partitionsFiltrees; + } } } diff --git a/MusiLib/MusiLib/Stub/Stub.cs b/MusiLib/MusiLib/Stub/Stub.cs index 1d47375..2cf40fa 100644 --- a/MusiLib/MusiLib/Stub/Stub.cs +++ b/MusiLib/MusiLib/Stub/Stub.cs @@ -23,12 +23,12 @@ namespace MusiLib.Stub utilisateurs.Add(kevin); utilisateurs.Add(michel); - Partition amazing_grace = new Partition("Amazing Grace", "John Newton", 0, "Amazing Grace est l'un des cantiques chrétiens les plus célèbres dans le monde anglophone. La première publication des paroles date de 1779. Associé à diverses mélodies au fil des années, il est aujourd'hui interprété sur la musique de New Britain", "piano", "amazing-grace.mid"); - Partition au_clair_de_la_lune = new Partition("Au clair de la lune", "Édouard-Léon Scott de Martinville", 0, "Au clair de la lune est une chanson populaire française dont la mélodie, très caractéristique, ainsi que les paroles — surtout celles du premier couplet — sont si familières qu'elles ont fait l'objet d'innombrables citations, adaptations, parodies, pastiches, etc.", "piano", "au_clair_de_la_lune.wav"); - Partition aura_lee_love_me = new Partition("aura lee love me", "Elvis Presley", 0, " Love Me Tender est une ballade de 1956 enregistrée par Elvis Presley et publiée par Elvis Presley Music du film du même nom de la 20th Century Fox . Les paroles sont créditées à Vera Matson (bien que le parolier réel était son mari, Ken Darby) et Elvis Presley lui-même. La mélodie est identique à la ballade sentimentale de la guerre civile Aura Lea et donc attribuée au compositeur d'Aura Lea, l'Anglais George R. Poulton.", "piano", "aura-lee-love-me-tender.mid"); - Partition ode_a_la_joie = new Partition("Hymne à la joie", "Friedrich von Schiller", 0, "Ode à la joie — appelée également Hymne à la joie1 — est un poème de Friedrich von Schiller écrit en 1785. Il est surtout connu comme finale du quatrième et dernier mouvement de la 9e Symphonie de Beethoven, devenu l'hymne officiel de l'Union européenne2.Ce poème célèbre l'idéal de l'unité et de la fraternité humaines (« Millions d’êtres, soyez tous embrassés d’une commune étreinte ! ). Son titre original est An die Freude, mais il est souvent appelé Ode an die Freude.", "piano", "amazing-grace.mid"); - Partition fais_dodo_colas = new Partition("Fais dodo", "Inconnu", 0, "Fais dodo est une berceuse enfantine en langue française dont l'auteur est inconnu et est dans le domaine public. La mélodie, très connue, date du XVIIIe siècle et se chante dans toutes les régions de France et également au Québec. Il y a quelques variantes, où les ingrédients du texte changent : nougat au lieu de chocolat, d'autres fois des bateaux : « Papa est en haut qui fait des bateaux pour le p'tit Pierrot qui fait son dodo... » ", "piano", "fais-dodo-colas-mon-petit-frere.mid"); - Partition Frere_Jacques = new Partition("Frère Jacques", "Jean-Philippe Rameau", 0, "Frère Jacques est une chanson enfantine française du XVIIIe siècle, connue dans le monde entier et traduite dans de nombreuses langues. Longtemps considérée comme anonyme, elle a vraisemblablement pour auteur Jean-Philippe Rameau. Selon l'historienne et musicologue Sylvie Bouissou, l'auteur de la chanson n'est autre que Jean-Philippe Rameau1,2. En effet, dans un exemplaire de son ouvrage Diapason général de tous les instruments à vent (1772), Louis-Joseph FrancÅ“ur, violoniste de l'Opéra de Paris dans les années où Rameau y était actif, a inséré les manuscrits de quatre canons qu'il attribue à Rameau, parmi lesquels on trouve donc Frère Jacques, mais surtout deux autres déjà connus comme étant de Rameau;", "piano", "frere-jacques.mid"); + Partition amazing_grace = new Partition("Amazing Grace", "John Newton", "Facile", "Amazing Grace est l'un des cantiques chrétiens les plus célèbres dans le monde anglophone. La première publication des paroles date de 1779. Associé à diverses mélodies au fil des années, il est aujourd'hui interprété sur la musique de New Britain", "piano", "amazing-grace.mid"); + Partition au_clair_de_la_lune = new Partition("Au clair de la lune", "Édouard-Léon Scott de Martinville", "Moyen", "Au clair de la lune est une chanson populaire française dont la mélodie, très caractéristique, ainsi que les paroles — surtout celles du premier couplet — sont si familières qu'elles ont fait l'objet d'innombrables citations, adaptations, parodies, pastiches, etc.", "piano", "au_clair_de_la_lune.wav"); + Partition aura_lee_love_me = new Partition("aura lee love me", "Elvis Presley", "Facile", " Love Me Tender est une ballade de 1956 enregistrée par Elvis Presley et publiée par Elvis Presley Music du film du même nom de la 20th Century Fox . Les paroles sont créditées à Vera Matson (bien que le parolier réel était son mari, Ken Darby) et Elvis Presley lui-même. La mélodie est identique à la ballade sentimentale de la guerre civile Aura Lea et donc attribuée au compositeur d'Aura Lea, l'Anglais George R. Poulton.", "piano", "aura-lee-love-me-tender.mid"); + Partition ode_a_la_joie = new Partition("Hymne à la joie", "Friedrich von Schiller", "Difficile", "Ode à la joie — appelée également Hymne à la joie1 — est un poème de Friedrich von Schiller écrit en 1785. Il est surtout connu comme finale du quatrième et dernier mouvement de la 9e Symphonie de Beethoven, devenu l'hymne officiel de l'Union européenne2.Ce poème célèbre l'idéal de l'unité et de la fraternité humaines (« Millions d’êtres, soyez tous embrassés d’une commune étreinte ! ). Son titre original est An die Freude, mais il est souvent appelé Ode an die Freude.", "piano", "amazing-grace.mid"); + Partition fais_dodo_colas = new Partition("Fais dodo", "Inconnu", "Facile", "Fais dodo est une berceuse enfantine en langue française dont l'auteur est inconnu et est dans le domaine public. La mélodie, très connue, date du XVIIIe siècle et se chante dans toutes les régions de France et également au Québec. Il y a quelques variantes, où les ingrédients du texte changent : nougat au lieu de chocolat, d'autres fois des bateaux : « Papa est en haut qui fait des bateaux pour le p'tit Pierrot qui fait son dodo... » ", "piano", "fais-dodo-colas-mon-petit-frere.mid"); + Partition Frere_Jacques = new Partition("Frère Jacques", "Jean-Philippe Rameau", "Moyen", "Frère Jacques est une chanson enfantine française du XVIIIe siècle, connue dans le monde entier et traduite dans de nombreuses langues. Longtemps considérée comme anonyme, elle a vraisemblablement pour auteur Jean-Philippe Rameau. Selon l'historienne et musicologue Sylvie Bouissou, l'auteur de la chanson n'est autre que Jean-Philippe Rameau1,2. En effet, dans un exemplaire de son ouvrage Diapason général de tous les instruments à vent (1772), Louis-Joseph FrancÅ“ur, violoniste de l'Opéra de Paris dans les années où Rameau y était actif, a inséré les manuscrits de quatre canons qu'il attribue à Rameau, parmi lesquels on trouve donc Frère Jacques, mais surtout deux autres déjà connus comme étant de Rameau;", "piano", "frere-jacques.mid"); amazing_grace.ajouterImage("amazing.png"); amazing_grace.ajouterImage("au_clair.png"); au_clair_de_la_lune.ajouterImage("au_clair.png"); diff --git a/MusiLib/MusiLib/Views/Accueil.xaml b/MusiLib/MusiLib/Views/Accueil.xaml index 9c8251a..4ef5507 100644 --- a/MusiLib/MusiLib/Views/Accueil.xaml +++ b/MusiLib/MusiLib/Views/Accueil.xaml @@ -54,13 +54,14 @@ TextChanged="SearchBar_TextChanged" /> - partitionsInitiales; private List partitionsFiltrees; + private Trier trieur; public Accueil() { InitializeComponent(); partitionsInitiales = MyManager.partitions.ToList(); partitionsFiltrees = new List(partitionsInitiales); + trieur = new Trier(MyManager.partitions.ToList()); BindingContext = MyManager; chargerPartitions(); } @@ -116,5 +118,72 @@ namespace MusiLib.Views chargerPartitions(); } + + private async void TriButton_Clicked(object sender, EventArgs e) + { + var action = await DisplayActionSheet("Trier par", "Annuler", null, "Type", "Difficulté", "Ordre alphabétique", "Réinitialiser"); + + switch (action) + { + case "Type": + await TrierParTypeButton(); + break; + case "Difficulté": + await TrierParDifficulteButton(); + break; + case "Ordre alphabétique": + await TrierParOrdreAlphabetiqueButton(); + break; + case "Réinitialiser": + ReinitialiserButton(); + break; + } + + } + + + private async Task TrierParTypeButton() + { + var action = await DisplayActionSheet("Trier par", "Annuler", null, "Batterie", "Guitare", "Piano"); + + if (action == "Annuler") + return; + + var partitionsTriees = trieur.TrierParInstrument(action); + partitionsFiltrees = new List(partitionsTriees); + chargerPartitions(); + } + + private async Task TrierParDifficulteButton() + { + var action = await DisplayActionSheet("Trier par", "Annuler", null, "Facile", "Moyen", "Difficile"); + + if (action == "Annuler") + return; + + var partitionsTriees = trieur.TrierParComplexite(action); + partitionsFiltrees = new List(partitionsTriees); + chargerPartitions(); + } + + private async Task TrierParOrdreAlphabetiqueButton() + { + var action = await DisplayActionSheet("Trier par", "Annuler", null, "Croissant", "Décroissant"); + + if (action == "Annuler") + return; + + var partitionsTriees = trieur.TrierParOrdreAlphabetique(action); + partitionsFiltrees = new List(partitionsTriees); + chargerPartitions(); + } + + private void ReinitialiserButton() + { + partitionsFiltrees.Clear(); + partitionsFiltrees.AddRange(partitionsInitiales); + chargerPartitions(); + } + } }