You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CShark/WpfApp1/MainWindow.xaml.cs

266 lines
8.3 KiB

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
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// Page principal de CShark
/// </summary>
public partial class MainWindow : Window
{
public Manager Mgr => (Application.Current as App).LeManager; //Manager lié à celui de l'app
public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //Manager lié à celui de l'app
Nullable<Zone> zonePage{ get; set; } //Zone qui permet de connaitre la zone de la comboBox
public bool aChanger = false; //Booléen qui permet de savoir si l'utilisateur a déjà changer la zone de la listBox
public MainWindow()
{
InitializeComponent();
DataContext = Mgr;
chargerUC();
Mgr.Requins.CollectionChanged += Requins_CollectionChanged;
}
/// <summary>
/// Evénement qui est déclenché lorsque l'ObservableCollection change pour mettre à jour l'affichage
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Requins_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
chargerUC();
}
/// <summary>
/// Evénement qui est déclenché lorsque la sélection de la comboBox a été changée pour mettre à jour l'affichage
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Region_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ChangeRegion();
}
/// <summary>
/// Méthode qui permet de changer zonePage et l'affichage de la page
/// </summary>
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);
}
}
/// <summary>
/// Méthode qui permet de changer la sélection de la comboBox, zonePage et l'affichage de la page
/// </summary>
/// <param name="z"></param>
public void ChangeRegionAvecMap(Nullable<Zone> 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);
}
/// <summary>
/// Méthode qui permet de changer le content control en userControlDescription
/// </summary>
/// <param name="req"></param>
public void ContentControlSwapDes(Requin req)
{
contentControl.Content = new userControlDescription { requin = req };
}
/// <summary>
/// Méthode qui permet de changer le content control en userControlAcceuil
/// </summary>
public void ContentControlSwapAcc()
{
contentControl.Content = new userControlAcceuil { zone = zonePage };
}
/// <summary>
/// Méthode qui permet de changer le content control en userControlEdit
/// </summary>
/// <param name="req"></param>
public void ContentControlSwapEdit(Requin req)
{
contentControl.Content = new UserControlEdit { requin = req };
}
/// <summary>
/// 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
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TextBox_IsKeyboardFocusedChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (Rechercher.Text == "Rechercher")
{
Rechercher.Text = "";
}
}
/// <summary>
/// Méthode qui permet de charger les userControlRequin dans la listBox
/// </summary>
private void chargerUC()
{
viderListBox();
foreach (Requin req in Mgr.Requins)
{
laListe.Items.Add(new UserControlRequin { requin = req , type = UCrequinType.normal }) ;
}
}
/// <summary>
/// Méthode qui permet de changer l'affichage de la page en fonction d'une zone donnée
/// </summary>
/// <param name="zone"></param>
private void ChangerAffichage(Nullable<Zone> 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
laListe.Items.Add(new UserControlRequin { requin = req });
}
test = 0;
}
//Change le content control en userControlAcceuil
contentControl.Content = new userControlAcceuil { zone = zone };
}
/// <summary>
/// Méthode qui permet de vider la listBox
/// </summary>
private void viderListBox()
{
laListe.Items.Clear();
}
/// <summary>
/// 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
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Rechercher_KeyUp(object sender, KeyEventArgs e)
{
viderListBox();
List<Requin> nvReq = new List<Requin>();
string rech = Rechercher.Text;
if (!string.IsNullOrWhiteSpace(rech))
{
nvReq = Mgr.RechercherRequins(Mgr.Requins, zonePage, rech);
foreach(Requin req in nvReq)
{
laListe.Items.Add(new UserControlRequin { requin = req });
}
}
else
{
ChangeRegion();
}
if (rech == "Shrek" || rech=="shrek")
{
laListe.Items.Add(new UserControlRequin { requin = 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") });
}
}
}
}