commentaires stub / app et views

pull/8/head
Vivien DUFOUR 2 years ago
parent 1aaf63b71a
commit 26daf429e3

@ -18,6 +18,7 @@ public partial class App : Application
string favorisUtilisateursFilePath = Path.Combine(FilePath, FileNameFU);
string partitionsFilePath = Path.Combine(FilePath, FileNameP);
/*Si les fichiers existent déjà, on récupère la persistance car on a donc des favoris à récupérer*/
if (File.Exists(partitionsFilePath) && File.Exists(favorisUtilisateursFilePath))
{
MyManager = new Manager(new DataContractPersistance.DataContractPers());

@ -19,7 +19,7 @@ namespace MusiLib.Stub
List<Partition> favoris = new List<Partition>();
/*Charge toutes nos partitions*/
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");

@ -21,6 +21,7 @@ namespace MusiLib.Views
chargerPartitions();
}
/*Nous redirige vers la page des favoris*/
private void GoToFavorisButton(object sender, EventArgs e)
{
if (!IAllowClick.AllowTap) return;
@ -31,6 +32,7 @@ namespace MusiLib.Views
IAllowClick.ResumeTap();
}
/*Nous redirige vers la partition sur laquelle on a cliqué*/
private void GoToPartitionButton(object sender, EventArgs e)
{
if (!IAllowClick.AllowTap) return;
@ -47,8 +49,10 @@ namespace MusiLib.Views
IAllowClick.ResumeTap();
}
/*Charge automatiquement toutes les partitions en ImageButton et les affiche à l'écran*/
private void chargerPartitions()
{
/*Supprime les partitions présentes (on les différencie des autres ImageButton grâce à l'automationId*/
var imageButtonsToRemove = grille.Children.OfType<ImageButton>().Where(btn => !string.IsNullOrEmpty(btn.AutomationId)).ToList();
foreach (var button in imageButtonsToRemove)
{
@ -59,6 +63,7 @@ namespace MusiLib.Views
int imagesParLigne = 3;
int indice = 0;
/*Crée les ImageButton des partitions*/
foreach (Partition partition in partitionsFiltrees)
{
int indicePartition = MyManager.partitions.IndexOf(partition);
@ -86,6 +91,7 @@ namespace MusiLib.Views
}
}
/*Récupère des valeurs prédéfinies pour les margin de chargerFavoris afin d'avoir un affichage aligné*/
private Thickness GetImageButtonMargin(int colonne)
{
if (colonne == 0)
@ -102,6 +108,7 @@ namespace MusiLib.Views
}
}
/*Permet de modifier l'affichage des partitions en fonction de ce qu'on recherche*/
private void SearchBar_TextChanged(object sender, TextChangedEventArgs e)
{
string texteRecherche = e.NewTextValue;
@ -119,6 +126,7 @@ namespace MusiLib.Views
chargerPartitions();
}
/*Lance un popup de plusieurs choix quand on clic sur le bouton de tri*/
private async void TriButton_Clicked(object sender, EventArgs e)
{
var action = await DisplayActionSheet("Trier par", "Annuler", null, "Type", "Difficulté", "Ordre alphabétique", "Réinitialiser");
@ -141,7 +149,7 @@ namespace MusiLib.Views
}
/*Lance un popup de plusieurs choix quand on clic sur Type dans le popup TriButton_Clicked*/
private async Task TrierParTypeButton()
{
var action = await DisplayActionSheet("Trier par", "Annuler", null, "Batterie", "Guitare", "Piano");
@ -154,6 +162,7 @@ namespace MusiLib.Views
chargerPartitions();
}
/*Lance un popup de plusieurs choix quand on clic sur Difficulté dans le popup TriButton_Clicked*/
private async Task TrierParDifficulteButton()
{
var action = await DisplayActionSheet("Trier par", "Annuler", null, "Facile", "Moyen", "Difficile");
@ -166,6 +175,7 @@ namespace MusiLib.Views
chargerPartitions();
}
/*Lance un popup de plusieurs choix quand on clic sur Ordre Alphabétique dans le popup TriButton_Clicked*/
private async Task TrierParOrdreAlphabetiqueButton()
{
var action = await DisplayActionSheet("Trier par", "Annuler", null, "Croissant", "Décroissant");
@ -178,6 +188,7 @@ namespace MusiLib.Views
chargerPartitions();
}
/*Réinitialise les partitions pour annuler le tri*/
private void ReinitialiserButton()
{
partitionsFiltrees.Clear();

@ -22,7 +22,7 @@ public partial class Favoris : ContentPage, IAllowClick
chargerFavoris();
}
/*Nous redirige vers l'accueil avec le logo de l'appli*/
private void GoToAccueilByLogoButton(object sender, EventArgs e)
{
if (!IAllowClick.AllowTap) return;
@ -33,7 +33,7 @@ public partial class Favoris : ContentPage, IAllowClick
IAllowClick.ResumeTap();
}
/*Nous redirige vers la partition sur laquelle on a cliqué*/
private void GoToPartitionButton(object sender, EventArgs e)
{
if (!IAllowClick.AllowTap) return;
@ -50,9 +50,10 @@ public partial class Favoris : ContentPage, IAllowClick
IAllowClick.ResumeTap();
}
/*Permet de charger automatiquement tout les favoris qu'on a et les afficher à l'écran*/
private void chargerFavoris()
{
/*Supprime les partitions présentes (on les différencie des autres ImageButton grâce à l'automationId*/
var imageButtonsToRemove = grille.Children.OfType<ImageButton>().Where(btn => !string.IsNullOrEmpty(btn.AutomationId)).ToList();
foreach (var button in imageButtonsToRemove)
{
@ -62,10 +63,9 @@ public partial class Favoris : ContentPage, IAllowClick
int imagesParLigne = 3;
int indice = 0;
/*Crée les ImageButton des partitions*/
foreach (Partition favoris in partitionsFiltrees)
{
/*int indicePartition = MyManager.partitions.IndexOf(favoris);*/
string nomFavori = favoris.Nom;
int indicePartition = MyManager.partitions.FindIndex(partition => partition.Nom == nomFavori);
@ -92,6 +92,7 @@ public partial class Favoris : ContentPage, IAllowClick
}
}
/*Récupère des valeurs prédéfinies pour les margin de chargerFavoris afin d'avoir un affichage aligné*/
private Thickness GetImageButtonMargin(int colonne)
{
if (colonne == 0)
@ -108,6 +109,7 @@ public partial class Favoris : ContentPage, IAllowClick
}
}
/*Permet de modifier l'affichage des partitions en fonction de ce qu'on recherche*/
private void SearchBar_TextChanged(object sender, TextChangedEventArgs e)
{
string texteRecherche = e.NewTextValue;
@ -125,6 +127,7 @@ public partial class Favoris : ContentPage, IAllowClick
chargerFavoris();
}
/*Lance un popup de plusieurs choix quand on clic sur le bouton de tri*/
private async void TriButton_Clicked(object sender, EventArgs e)
{
var action = await DisplayActionSheet("Trier par", "Annuler", null, "Type", "Difficulté", "Ordre alphabétique", "Réinitialiser");
@ -147,7 +150,7 @@ public partial class Favoris : ContentPage, IAllowClick
}
/*Lance un popup de plusieurs choix quand on clic sur Type dans le popup TriButton_Clicked*/
private async Task TrierParTypeButton()
{
var action = await DisplayActionSheet("Trier par", "Annuler", null, "Batterie", "Guitare", "Piano");
@ -160,6 +163,7 @@ public partial class Favoris : ContentPage, IAllowClick
chargerFavoris();
}
/*Lance un popup de plusieurs choix quand on clic sur Difficulté dans le popup TriButton_Clicked*/
private async Task TrierParDifficulteButton()
{
var action = await DisplayActionSheet("Trier par", "Annuler", null, "Facile", "Moyen", "Difficile");
@ -172,6 +176,7 @@ public partial class Favoris : ContentPage, IAllowClick
chargerFavoris();
}
/*Lance un popup de plusieurs choix quand on clic sur Ordre Alphabétique dans le popup TriButton_Clicked*/
private async Task TrierParOrdreAlphabetiqueButton()
{
var action = await DisplayActionSheet("Trier par", "Annuler", null, "Croissant", "Décroissant");
@ -184,6 +189,7 @@ public partial class Favoris : ContentPage, IAllowClick
chargerFavoris();
}
/*Réinitialise les partitions pour annuler le tri*/
private void ReinitialiserButton()
{
partitionsFiltrees.Clear();
@ -191,6 +197,7 @@ public partial class Favoris : ContentPage, IAllowClick
chargerFavoris();
}
/*Charge à chaque réapparition de la page (quand on revient d'une partition par exemple) les partitions afin de remettre les partitions si jamais une est supprimé des favoris*/
protected override void OnAppearing()
{
base.OnAppearing();

@ -6,6 +6,16 @@ using System.Threading.Tasks;
namespace MusiLib.Views
{
/*Permet de mettre un délai entre chaque clic pour éviter les problèmes de multi-pages sur Android*/
/*Est utilisé sur chaque bouton sous la forme :
if (!IAllowClick.AllowTap) return;
else IAllowClick.AllowTap = false;
......
IAllowClick.ResumeTap();
*/
public interface IAllowClick
{
public static bool AllowTap = true;

@ -36,6 +36,7 @@ public partial class PartitionView : ContentPage
ChargerPartitionsSimilaires();
}
/*Permet de lancer la musique de la partition en cours*/
private void Play_Music(object sender, EventArgs e)
{
@ -59,6 +60,7 @@ public partial class PartitionView : ContentPage
}
}
/*Permet de lancer le métronome*/
private void Play_Metronome(object sender, EventArgs e)
{
@ -82,6 +84,7 @@ public partial class PartitionView : ContentPage
}
}
/*Permet d'arrêter la musique*/
private void Stop_Music(object sender, EventArgs e)
{
music.StopMusic();
@ -93,6 +96,7 @@ public partial class PartitionView : ContentPage
sliderMetro.Value = 1;
}
/*Permet d'arrêter le métronome*/
private void Stop_Metronome(object sender, EventArgs e)
{
metronome.StopMusic();
@ -100,6 +104,7 @@ public partial class PartitionView : ContentPage
button.Text = "Jouer";
}
/*Coupe la musique et le métronome quand on revient en arrière avec le bouton retour du téléphone*/
protected override bool OnBackButtonPressed()
{
metronome.StopMusic();
@ -107,6 +112,7 @@ public partial class PartitionView : ContentPage
return base.OnBackButtonPressed();
}
/*Coupe la musique et le métronome quand on revient en arrière*/
protected override void OnDisappearing()
{
base.OnDisappearing();
@ -114,12 +120,14 @@ public partial class PartitionView : ContentPage
music.StopMusic();
}
/*Initialise le Shell_Navigating au chargement de la page*/
protected override void OnAppearing()
{
base.OnAppearing();
Shell.Current.Navigating += Shell_Navigating;
}
/*Coupe la musique et le métronome quand on revient en arrière avec le bouton retour de l'appli | Fonctionne avec OnDisappearing*/
private void Shell_Navigating(object sender, ShellNavigatingEventArgs e)
{
if (e.Source == ShellNavigationSource.ShellItemChanged)
@ -129,6 +137,7 @@ public partial class PartitionView : ContentPage
}
}
/*Permet de mettre la bonne image suivant si la partition est en favori ou pas au chargement*/
private void InitializeButton()
{
if (MyManager.favoris.Any(favori => favori.Nom == MyManager.partitions[IdTab].Nom))
@ -141,6 +150,7 @@ public partial class PartitionView : ContentPage
}
}
/*Initialise et crée des ImageButton des partitions du même auteur et même instrument pour les afficher automatiquement*/
private void ChargerPartitionsSimilaires()
{
string auteur = MyManager.partitions[IdTab].Auteur;
@ -176,7 +186,7 @@ public partial class PartitionView : ContentPage
/*Nous redirige vers la partition sur laquelle on a cliqué*/
private void GoToPartitionButton(object sender, EventArgs e)
{
if (!IAllowClick.AllowTap) return;
@ -193,7 +203,7 @@ public partial class PartitionView : ContentPage
IAllowClick.ResumeTap();
}
/*Permet d'ajouter une partition aux favoris, sauvegarde sur le téléphone et change l'image du bouton*/
private void AddFavoriButton(object sender, EventArgs e)
{
ImageButton button = (ImageButton)sender;
@ -212,12 +222,14 @@ public partial class PartitionView : ContentPage
}
}
/*Permet d'envoyer la valeur du slider pour modifier le tempo de la musique*/
private void TempoSlider(object sender, ValueChangedEventArgs e)
{
float selectedValue = (float)e.NewValue;
music.ReglerTempo(selectedValue);
}
/*Permet d'envoyer la valeur du slider pour modifier le tempo du métronome*/
private void BPMSlider(object sender, ValueChangedEventArgs e)
{
float selectedValue = (float)e.NewValue;

Loading…
Cancel
Save