using Modèle; 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; using Persistance; using Business; namespace WpfApp1 { /// /// Interaction logic for MainWindow.xam /// public partial class MainWindow : Window { /// /// Manager lié à celui de l'app /// public Manager Mgr => (Application.Current as App).LeManager; /// /// ManagerUser lié à celui de l'app /// public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; /// /// Zone qui permet de connaitre la zone de la comboBox /// Nullable zonePage{ get; set; } /// /// Booléen qui permet de savoir si l'utilisateur a déjà changer la zone de la listBox /// public bool aChanger = false; List lesZones = new List() { Zone.ARCTIQUE, Zone.ATLANTIQUE, Zone.INDIEN, Zone.PACIFIQUE }; /// /// Page principal de CShark /// public MainWindow() { InitializeComponent(); DataContext = Mgr; chargerUC(); Mgr.Requins.CollectionChanged += Requins_CollectionChanged; var ucAccueil = new userControlAcceuil { zone = zonePage }; contentControl.Content = ucAccueil; ucAccueil.AccueilWeChange += UcAccueil_AccueilWeChange; } /// /// Evénement associé à l'EventHandler AccueilWeChange de l'UserControlAccueil /// /// /// private void UcAccueil_AccueilWeChange(object sender, AccueilWeChangeEventArgs e) { var ucAccueil = new userControlAcceuil { zone = zonePage }; contentControl.Content = ucAccueil; ucAccueil.AccueilWeChange += UcAccueil_AccueilWeChange; ChangeRegionAvecMap(e.Zone); } /// /// Evénement associé à l'EventHandler AccueilWeGo de l'UserControlRequin /// /// /// private void UcDesc_AccueilWeGo(object sender, AccueilWeGoEventArgs e) { var ucAccueil = new userControlAcceuil { zone = zonePage }; contentControl.Content = ucAccueil; ucAccueil.AccueilWeChange += UcAccueil_AccueilWeChange; } /// /// Evénement associé à l'EventHandler EditWeGo de l'UserControlDescription /// /// /// private void UcDesc_EditWeGo(object sender, EditWeGoEventArgs e) { var ucEdit = new UserControlEdit { requin = e.Requin }; contentControl.Content = ucEdit; //Change le content control ucEdit.DescWeGo += UcEdit_DescWeGo; //lie l'événement DescWeGo à l'UserControlEdit } /// /// Evénement associé à l'EventHandler DescriptionWeGo de l'UserControlRequin /// /// /// private void GoDesc_DescriptionWeGo(object sender, DescriptionWeGoEventArgs args) { var ucDesc = new userControlDescription { requin = args.Requin, zone = zonePage }; contentControl.Content = ucDesc; //Change le content control ucDesc.EditWeGo += UcDesc_EditWeGo; //lie l'événement EditWeGo à l'UserControlDescription ucDesc.AccueilWeGo += UcDesc_AccueilWeGo; //lie l'événement EditWeGo à l'UserControlAccueil } /// /// Evénement associé à l'EventHandler DescWeGo de l'UserControlEdit /// /// /// private void UcEdit_DescWeGo(object sender, DescWeGoEventArgs e) { var ucDesc = new userControlDescription { requin = e.Requin, zone = zonePage }; contentControl.Content = ucDesc; //Change le content control ucDesc.EditWeGo += UcDesc_EditWeGo; //lie l'événement EditWeGo à l'UserControlDescription ucDesc.AccueilWeGo += UcDesc_AccueilWeGo; //lie l'événement EditWeGo à l'UserControlAccueil } /// /// Evénement qui est déclenché lorsque l'ObservableCollection change pour mettre à jour l'affichage /// /// /// private void Requins_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { chargerUC(); } /// /// Evénement qui est déclenché lorsque la sélection de la comboBox a été changée pour mettre à jour l'affichage /// /// /// private void Region_SelectionChanged(object sender, SelectionChangedEventArgs e) { ChangeRegion(); } /// /// Méthode qui permet de changer zonePage et l'affichage de la page /// private void ChangeRegion() { if (Region.SelectedIndex == 0) { zonePage = null; } else if (Region.SelectedIndex == 1) { zonePage = Zone.ARCTIQUE; aChanger = true; } else if (Region.SelectedIndex == 2) { zonePage = Zone.ATLANTIQUE; aChanger = true; } else if (Region.SelectedIndex == 3) { zonePage = Zone.INDIEN; aChanger = true; } else if (Region.SelectedIndex == 4) { zonePage = Zone.PACIFIQUE; aChanger = true; } if (aChanger == true) { ChangerAffichage(zonePage); } } /// /// Méthode qui permet de changer la sélection de la comboBox, zonePage et l'affichage de la page /// /// public void ChangeRegionAvecMap(Nullable z) { if (z == null) { Region.SelectedIndex = 0; } else if (z == Zone.ARCTIQUE) { Region.SelectedIndex = 1; } else if (z == Zone.ATLANTIQUE) { Region.SelectedIndex = 2; } else if (z == Zone.INDIEN) { Region.SelectedIndex = 3; } else if (z == Zone.PACIFIQUE) { Region.SelectedIndex = 4; } zonePage = z; ChangerAffichage(z); } /// /// Evénement qui est déclenché lorsque l'utilisateur qui sur la barre de Recherche et permet d'effacer le text "Rechercher" lorsque l'utilisateur qui sur la barre de Recherche /// /// /// private void TextBox_IsKeyboardFocusedChanged(object sender, DependencyPropertyChangedEventArgs e) { if (Rechercher.Text == "Rechercher") { Rechercher.Text = ""; } } /// /// Méthode qui permet de charger les userControlRequin dans la listBox /// private void chargerUC() { viderListBox(); foreach (Requin req in Mgr.Requins) { var goDesc = new UserControlRequin { requin = req, type = UCrequinType.normal }; goDesc.DescriptionWeGo += GoDesc_DescriptionWeGo; //lie l'événement DescriptionWeGo à tous les UserControlRequin de la listBox laListe.Items.Add(goDesc); } } /// /// Méthode qui permet de changer l'affichage de la page en fonction d'une zone donnée /// /// private void ChangerAffichage(Nullable zone) { int test = 0; viderListBox(); if (zone == null) { chargerUC(); } foreach (Requin req in Mgr.Requins) { foreach (Zone z in req.Repartition) { if (z == zone) { test++; } } if (test > 0) { //Ajoute un userControlRequin si le requin a bien une zone en commun avec la zone donnée en paramètre var goDesc = new UserControlRequin { requin = req, type = UCrequinType.normal }; goDesc.DescriptionWeGo += GoDesc_DescriptionWeGo; //lie l'événement DescriptionWeGo à tous les UserControlRequin de la listBox laListe.Items.Add(goDesc); } test = 0; } //Change le content control en userControlAcceuil var ucAccueil = new userControlAcceuil { zone = zone }; contentControl.Content = ucAccueil; ucAccueil.AccueilWeChange += UcAccueil_AccueilWeChange; //Lie l'événement AccueilWeChange au nouvel userControlAccueil } /// /// Méthode qui permet de vider la listBox /// private void viderListBox() { laListe.Items.Clear(); } /// /// Evénement qui est déclenché quand l'utilisateur écrit une lettre dans la barre de rechercher /// Permet de d'ajouter des userControlRequin dans la listBox en fonction du motif rentré par l'utilisateur /// /// /// private void Rechercher_KeyUp(object sender, KeyEventArgs e) { viderListBox(); List nvReq = new List(); string rech = Rechercher.Text; if (!string.IsNullOrWhiteSpace(rech)) { nvReq = Mgr.RechercherRequins(Mgr.Requins, zonePage, rech); foreach(Requin req in nvReq) { var goDesc = new UserControlRequin { requin = req, type = UCrequinType.normal }; goDesc.DescriptionWeGo += GoDesc_DescriptionWeGo; //lie l'événement DescriptionWeGo à tous les UserControlRequin de la listBox laListe.Items.Add(goDesc); } } else { ChangeRegion(); } if (rech == "Shrek" || rech=="shrek") { Requin req = new Requin("Shrek", "Ogre", "I see you are a person of culture as well.\n\nFais ton grrrrr", "Images/shrekin.png", "Videos/shrekin.mp4", "Images/shrekMap.png", Conservation.EW, null, "GET OUT OF MY SEA"); var goDesc = new UserControlRequin { requin = req, type = UCrequinType.normal }; goDesc.DescriptionWeGo += GoDesc_DescriptionWeGo; //lie l'événement DescriptionWeGo à tous les UserControlRequin de la listBox laListe.Items.Add(goDesc); } } } }