using Modele;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Projet1
{
///
/// Interaction logic for MainWindow.xaml
///
public partial class MainWindow : Window
{
///
/// Manager permettant le gestion de l'Application, basé sur LeManager de Application
///
public Manager Mgr => (Application.Current as App).LeManager;
///
/// Initialisation de la Vue + Abonnement et mise en place du DataTemplate
///
public MainWindow()
{
InitializeComponent();
DataContext = Mgr;
Mgr.IsFavorisEmpty += Mgr_IsFavorisEmpty; // Abonnement de IsFavorisEmpty du Manager à Mgr_IsFavorisEmpty
App.Current.Resources["currentTitreTemplate"] = App.Current.Resources["titreListBoxItemTemplate"]; //valeur par default du datatemplate (uc1)
}
///
/// Evenement effectué lorsque la liste de Favoris est vide
///
///
///
private void Mgr_IsFavorisEmpty(object sender, Manager.IsFavorisEmptyEventArgs e)
{
if (MasterTitres.ItemsSource == Mgr.GetListeFavoris().ListeTitre ) // Si la liste Affiché est les Favoris
{
MasterTitres.ItemsSource = Mgr.ListeTitre; // Changement de la source à la liste de Titre
Button_Fav.Source = SourceFavEmptyImage; //Changement de l'Image du bouton Favoris
Mgr.SelectedTitre = Mgr.ListeTitre.ElementAt(0); // SelectedTitre mis au premier Titre
MessageBox.Show("Vous n'avez aucun favoris \n Vous avez été redirigé vers la page principale", "Problème", MessageBoxButton.OK, MessageBoxImage.Error); //Message d'erreur
}
// Sinon, la même chose mais sans le message d'erreur
MasterTitres.ItemsSource = Mgr.ListeTitre;
Button_Fav.Source = SourceFavEmptyImage;
Mgr.SelectedTitre = Mgr.ListeTitre.ElementAt(0);
}
///
/// Action lors de l'appuie du bouton Ajouter (+), Affiche la fenêtre Ajouter
///
/// Bouton add
/// Événement
private void Button_Add(object sender, RoutedEventArgs e)
{
var ajouterWindow = new WindowAdd();
ajouterWindow.ShowDialog();
}
///
/// Index du Titre Sélectionné
///
int IndexListeTitre = 0;
///
/// Action effectué lors de l'appuie du Bouton Next, Le Titre sélectionné passe au Titre sauivant
///
/// Bouton Next
/// Événement lors de l'appuie
private void Button_Next_Music_Click(object sender, RoutedEventArgs e)
{
IndexListeTitre = Mgr.ListeTitre.IndexOf(Mgr.SelectedTitre); // Donne la valeur du l'index du Titre
IndexListeTitre = (IndexListeTitre + 1) % Mgr.ListeTitre.Count; // Ajoute 1 à cette valeur et le Module pour ne pas passé à un Titre innexistant
Mgr.SelectedTitre = Mgr.ListeTitre.ElementAt(IndexListeTitre); // SelectedTitre devient le Titre suivant
}
///
/// Action effectué lors de l'appuie sur le Bouton Previous, Le Titre sélectionné passe au Titre suivant
///
/// Bouton Previous
///
private void Button_Click_Previous(object sender, RoutedEventArgs e)
{
IndexListeTitre = Mgr.ListeTitre.IndexOf(Mgr.SelectedTitre); // Donne la valeur du l'index du Titre
// Negative Modulus Formula : (x % m + m) % m;
IndexListeTitre = ((IndexListeTitre - 1) % Mgr.ListeTitre.Count + Mgr.ListeTitre.Count) % Mgr.ListeTitre.Count; // Retire 1 à cette valeur et le Module pour ne pas passé à un Titre innexistant
Mgr.SelectedTitre = Mgr.ListeTitre.ElementAt(IndexListeTitre);
}
///
/// Méthode appelé lors du Lancement de l'Application (MainWindow)
///
///
///
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Mgr?.LoadTitres();
}
///
/// Url de l'image Play , initialisé à icones/button_pause.png
///
static Uri urlPlayImage = new Uri("icones/button_pause.png", UriKind.RelativeOrAbsolute);
///
/// URl de l'image Pause, Initialisé à icones/button_play.png
///
static Uri urlPauseImage = new Uri("icones/button_play.png", UriKind.RelativeOrAbsolute);
///
/// BitmapImage contenant l'Image du l'url de urlPlayImage
///
BitmapImage SourceImagePlay = new BitmapImage(urlPlayImage);
///
/// BitmapImage contenant l'Image du l'url de urlPauseImage
///
BitmapImage SourceImagePause = new BitmapImage(urlPauseImage);
///
/// Méthode appelé lors du click sur le Bouton Play
///
/// Bouton Play/Pause
///
private void Button_Click_Play(object sender, RoutedEventArgs e)
{
if (Button_Play_Pause.Source == SourceImagePause) //Si le bouton a l'image pause
{
Video.Play(); // Lecture de la vidéo
Button_Play_Pause.Source = SourceImagePlay; // Changement de l'image du bouton
}
else
{
Video.Pause(); // Pause de la vidéo
Button_Play_Pause.Source = SourceImagePause; // Changement de l'image du bouton
}
}
///
/// Change le Template du Master et la visibilité des boutons Supprimer / Annuler
///
/// Bouton Bin
///
private void Button_Bin(object sender, RoutedEventArgs e) {
if ((sender as ToggleButton).IsChecked.GetValueOrDefault()) //si le togglebutton est activé
{
Valide_supp.Visibility = Visibility.Visible;
Annule_supp.Visibility = Visibility.Visible;
App.Current.Resources["currentTitreTemplate"] = App.Current.Resources["titreSupprimerTemplate"]; //met le datatemplate a titre supprimer (ucdelete)
}
else
{
Valide_supp.Visibility = Visibility.Collapsed;
Annule_supp.Visibility = Visibility.Collapsed;
App.Current.Resources["currentTitreTemplate"] = App.Current.Resources["titreListBoxItemTemplate"]; //sinon (il est desactive) et remet le datatemplate du uc1
}
}
// Image coeur vide noir
static Uri urlFavEmptyImage = new Uri("icones/coeur_vide.png", UriKind.RelativeOrAbsolute);
BitmapImage SourceFavEmptyImage = new BitmapImage(urlFavEmptyImage);
// Image coeur plein noir
static Uri urlFavFillImage = new Uri("icones/coeur_plein.png", UriKind.RelativeOrAbsolute);
BitmapImage SourceFavFillImage = new BitmapImage(urlFavFillImage);
// Image coeur plein blanc
static readonly Uri urlFavFillImageListe = new Uri("icones/heart_icon_fill.png", UriKind.RelativeOrAbsolute);
BitmapImage SourceFavFillImageListe = new BitmapImage(urlFavFillImageListe);
///
/// Affiche les Titres des Favoris de la listeCollection du Manager ou la listeTitre du Manager à l'appuie du bouton DisplayFavoris
///
/// Bouton DisplayFavoris
///
private void Button_DisplayFavoris(object sender, RoutedEventArgs e)
{
if (Mgr.GetListeFavoris().ListeTitre.Count == 0)
{
MessageBox.Show("Vous n'avez aucun favoris", "Problème", MessageBoxButton.OK, MessageBoxImage.Error);
MasterTitres.ItemsSource = Mgr.ListeTitre;
Button_Fav.Source = SourceFavEmptyImage;
return;
}
if (MasterTitres.ItemsSource == Mgr.ListeTitre)
{
MasterTitres.ItemsSource = Mgr.GetListeFavoris().ListeTitre;
Button_Fav.Source = SourceFavFillImage;
}
else
{
MasterTitres.ItemsSource = Mgr.ListeTitre;
Button_Fav.Source = SourceFavEmptyImage;
foreach (Titre t in Mgr.GetListeFavoris().ListeTitre)
{
//UC1.HeartImageFavoris.Source = SourceFavFillImageListe;
}
}
}
///
/// Confirme la suppression des Titres sélectionné (Attention pour bien ajouter un titre dans la suppression d'un Titre un faut dans un premier temps le sélectionné)
///
/// Bouton Supprimer
///
private void Button_Valide_Supp(object sender, RoutedEventArgs e)
{
foreach (Titre t in Mgr.ListeTitreSupp)
{
Mgr.SupprimerTitre(t);
}
Mgr.SaveTitres();
}
///
/// Annule la sélection des Titres sélectionné
///
/// Bouton annuler
///
private void Button_Annul_Supp(object sender, RoutedEventArgs e)
{
if(Mgr.ListeTitreSupp.Count <= 0)
{
Valide_supp.Visibility = Visibility.Collapsed;
Annule_supp.Visibility = Visibility.Collapsed;
App.Current.Resources["currentTitreTemplate"] = App.Current.Resources["titreListBoxItemTemplate"];
ButtonBin.IsChecked = false;
}
else
{
Mgr.ListeTitreSupp.Clear();
App.Current.Resources["currentTitreTemplate"] = App.Current.Resources["titreListBoxItemTemplate"];
App.Current.Resources["currentTitreTemplate"] = App.Current.Resources["titreSupprimerTemplate"];
}
}
}
}