using System; using System.Collections.Generic; using System.IO; 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.Shapes; using Modele; using Projet1.Converters; namespace Projet1 { /// /// Logique d'interaction pour WindowAdd.xaml /// /// public partial class WindowAdd : Window { /// /// Manager permettant le gestion de l'Application, basé sur LeManager de Application /// public Manager Mgr => (App.Current as App).LeManager; /// /// Titre à ajouter /// public Titre LeTitre { get; set; } /// /// Id du Titre /// public string Id { get; set; } /// /// Initialise la fenêtre WindowAdd, Abonemment de Closing et Uploading de ucAdd à Uc3_Closing et UcAdd_Uploading, /// public WindowAdd() { InitializeComponent(); ucAdd.Closing += Uc3_Closing; ucAdd.Uploading += UcAdd_Uploading; var t = new Titre("", "", "", new Modele.Video(""), new Artiste(""), new Modele.Image("music_logo.png"), ""); LeTitre = new Titre(t.Id, t.Nom, t.NomAlbum, t.LienVideo, t.NomArtiste, t.CheminImage, t.Bio); DataContext = this; } /// /// Methode appelé lors du clique sur le bouton upload d'Ajouter /// /// /// private void UcAdd_Uploading(object sender, UserControl3.UploadingEventArgs e) { if (e.Type == "image") //Si le bouton upload qui a envoyé l'événement est celui de Image, ouvre le parcours de dossier pour l'Image { Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog(); dlg.InitialDirectory = "C:\\Users\\Public\\Pictures\\Sample Pictures"; dlg.FileName = "Images"; // Default file name dlg.DefaultExt = ".jpg | .png | .gif"; dlg.Filter = "All images files (.jpg, .png, .gif)|*.jpg;*.png;*.gif|JPG files (.jpg)|*.jpg|PNG files (.png)|*.png|GIF files (.gif)|*.gif"; // Filter files by extension bool? result = dlg.ShowDialog(); if (result == true) { // Open document FileInfo fi = new FileInfo(dlg.FileName); string filename = fi.Name; if (!File.Exists(System.IO.Path.Combine(String2ImageConverter.ImagesPath, filename))) { File.Copy(dlg.FileName, System.IO.Path.Combine(String2ImageConverter.ImagesPath, filename)); } LeTitre.CheminImage.Chemin = filename; } } if (e.Type == "video") //Si le bouton upload qui a envoyé l'événement est celui de Video, ouvre le parcours de dossier pour la Video { Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog(); dlg.InitialDirectory = "C:\\Users\\Public\\Videos"; dlg.FileName = "Videos"; // Default file name dlg.DefaultExt = ".mp3 | .mp4"; dlg.Filter = "All video files (.mp3, .mp4)|*.mp3;*.mp4;|MP3 files (.mp3)|*.mp3|MP4 files (.mp4)|*.mp4"; // Filter files by extension bool? result = dlg.ShowDialog(); if (result != true) { return; } // Open document FileInfo fi = new FileInfo(dlg.FileName); string filename = fi.Name; if (!File.Exists(System.IO.Path.Combine(String2VideoConverter.VideosPath, filename))) { File.Copy(dlg.FileName, System.IO.Path.Combine(String2VideoConverter.VideosPath, filename)); } LeTitre.LienVideo.Lien = filename; } } /// /// Méthode appelé lors de l'appuie du Bouton Valider ou Annuler du l'UserControl3 /// /// /// private void Uc3_Closing(object sender, UserControl3.ClosingEventArgs e) { if (e.Save == true) //Si le Bouton Valider est auppuyé { if (string.IsNullOrWhiteSpace(Id)) // Si l'Id est null ou vide { MessageBox.Show("Veuillez Choisir un Identifiant", "Attention, Identifiant Invalide", MessageBoxButton.OK, MessageBoxImage.Error); // Message d'erreur return; } if (Mgr.GetTitreById(Id) != null) // Si l'Id est déjà pris { MessageBox.Show("Un Titre existe deja avec cet Id", "Choisir un autre Identifiant (Id deja utilisé)", MessageBoxButton.OK, MessageBoxImage.Error); // Message d'erreur int i = 0; string id; do { i++; id = $"{Id}_{i:000}"; } while (i <= 999 && Mgr.GetTitreById(id) != null); //Tant que l'Id est déjà pris et que i est inférieur à 999, change l'Id par Id_i sous forme 000 (Exemple Id = 001, Id pris alors Id = 001_001) if (i != 1000) Id = id; return; } Mgr.AjouterTitre(new Titre(Id, LeTitre.Nom, LeTitre.NomAlbum, LeTitre.LienVideo, LeTitre.NomArtiste, LeTitre.CheminImage, LeTitre.Bio)); // AJoout du nouveau Titre Mgr.SelectedTitre = Mgr.ListeTitre.Last(); // SelectedTitre devient le dernierTitre (Celui qui vient d'être ajouté) Mgr.SaveTitres(); // Sauvegarde la ListeTitre du Manager dans la persistance } Close(); // Fermeture de la fenêtre } } }