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.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
{
///
/// Logique d'interaction pour UserControl1.xaml
///
public partial class UserControl1 : UserControl
{
///
/// Manager permettant le gestion de l'Application, basé sur LeManager de Application
///
public Manager Mgr => (App.Current as App).LeManager;
///
/// Url de l'image coeur vide , initialisé à icones/heart_icon_empty.png
///
static readonly Uri urlFavEmptyImage = new Uri("icones/heart_icon_empty.png", UriKind.RelativeOrAbsolute);
///
/// Url de l'image coeur plein , initialisé à icones/heart_icon_fill.png
///
static readonly Uri urlFavFillImage = new Uri("icones/heart_icon_fill.png", UriKind.RelativeOrAbsolute);
///
/// BitmapImage contenant l'Image du l'url de urlFavEmptyImage
///
BitmapImage SourceFavEmptyImage = new BitmapImage(urlFavEmptyImage);
///
/// BitmapImage contenant l'Image du l'url de urlFavFillImage
///
BitmapImage SourceFavFillImage = new BitmapImage(urlFavFillImage);
///
/// Initialisation de l'UserControl, pour tous les Titres de ListeTitre du Manager, regarde si ils sont dans la collection Favoris de ListeCollection du Manager, si oui IsFavoris est initialisé à true, sinon false
///
public UserControl1()
{
InitializeComponent();
foreach (Titre t in Mgr.ListeTitre)
{
t.IsFavoris = Mgr.GetListeFavoris().ContenirTitreDansCollection(t);
}
}
///
/// Affiche la fenêtre Modifier lors du clqiue sur le bouton crayon (Attention il faut bien sélectionner le Titre avant de cliquer sur le bouton)
///
///
///
private void Button_Modif(object sender, RoutedEventArgs e)
{
var modifierWindow = new WindowModif();
modifierWindow.ShowDialog();
}
///
/// Ajoute aux favoris le Titre sélectionné (Attention il faut bien sélectionner le Titre que l'on veut ajouter avant de cliquer sur le bouton)
///
///
///
private void Button_AddFav(object sender, RoutedEventArgs e)
{
if (Mgr.GetListeFavoris().ListeTitre.Contains(Mgr.SelectedTitre)) // Si il Titre est déjà dans les Favoris on l'enlève
{
Mgr.SelectedTitre.IsFavoris = false;
Mgr.SupprimerTitreFromCollection(Mgr.GetListeFavoris(), Mgr.SelectedTitre);
}
else // Si le Titre n'est pas dans les Favoris on l'ajoute
{
if(Mgr.SelectedTitre == null) // Si le Titre Sélectionner est null, ne rien faire
{
return;
}
Mgr.AjouterTitreToCollection(Mgr.GetListeFavoris(), Mgr.SelectedTitre);
Mgr.SelectedTitre.IsFavoris = Mgr.GetListeFavoris().ContenirTitreDansCollection(Mgr.SelectedTitre);
}
if(Mgr.GetListeFavoris().ListeTitre.Count == 0) // Si la liste des Favoris est vide, envoie de l'événement.
{
Mgr.OnFavorisEmpty(new Manager.IsFavorisEmptyEventArgs());
}
Mgr.SaveTitresFavoris(); // Sauvegarde les Titres Favoris dans la Persistance
}
public string Nom
{
get { return (string)GetValue(NomProperty); }
set { SetValue(NomProperty, value); }
}
// Using a DependencyProperty as the backing store for Nom. This enables animation, styling, binding, etc...
public static readonly DependencyProperty NomProperty =
DependencyProperty.Register("Nom", typeof(string), typeof(UserControl1), new PropertyMetadata("Lanone"));
public Artiste NomArtiste
{
get { return (Artiste)GetValue(NomArtisteProperty); }
set { SetValue(NomArtisteProperty, value); }
}
// Using a DependencyProperty as the backing store for Artiste. This enables animation, styling, binding, etc...
public static readonly DependencyProperty NomArtisteProperty =
DependencyProperty.Register("NomArtiste", typeof(Artiste), typeof(UserControl1), new PropertyMetadata(new Artiste("Colonel Reyel")));
public string NomAlbum
{
get { return (string)GetValue(NomAlbumProperty); }
set { SetValue(NomAlbumProperty, value); }
}
// Using a DependencyProperty as the backing store for NomAlbum. This enables animation, styling, binding, etc...
public static readonly DependencyProperty NomAlbumProperty =
DependencyProperty.Register("NomAlbum", typeof(string), typeof(UserControl1), new PropertyMetadata("Au rapport"));
public Modele.Image CheminImage
{
get { return (Modele.Image)GetValue(CheminImageProperty); }
set { SetValue(CheminImageProperty, value); }
}
// Using a DependencyProperty as the backing store for CheminImage. This enables animation, styling, binding, etc...
public static readonly DependencyProperty CheminImageProperty =
DependencyProperty.Register("CheminImage", typeof(Modele.Image), typeof(UserControl1), new PropertyMetadata(new Modele.Image("./music_logo.png")));
}
}