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.
337 lines
12 KiB
337 lines
12 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.xam
|
|
/// </summary>
|
|
|
|
|
|
|
|
public partial class MainWindow : Window
|
|
{
|
|
/// <summary>
|
|
/// Manager lié à celui de l'app
|
|
/// </summary>
|
|
public Manager Mgr => (Application.Current as App).LeManager;
|
|
|
|
/// <summary>
|
|
/// ManagerUser lié à celui de l'app
|
|
/// </summary>
|
|
public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers;
|
|
|
|
/// <summary>
|
|
/// Zone qui permet de connaitre la zone de la comboBox
|
|
/// </summary>
|
|
Nullable<Zone> zonePage{ get; set; }
|
|
|
|
/// <summary>
|
|
/// Booléen qui permet de savoir si l'utilisateur a déjà changer la zone de la listBox
|
|
/// </summary>
|
|
public bool aChanger = false;
|
|
|
|
List<Zone> lesZones = new List<Zone>() { Zone.ARCTIQUE, Zone.ATLANTIQUE, Zone.INDIEN, Zone.PACIFIQUE };
|
|
|
|
/// <summary>
|
|
/// Page principal de CShark
|
|
/// </summary>
|
|
public MainWindow()
|
|
{
|
|
|
|
InitializeComponent();
|
|
|
|
DataContext = Mgr;
|
|
|
|
chargerUC();
|
|
|
|
Mgr.Requins.CollectionChanged += Requins_CollectionChanged;
|
|
|
|
var ucAccueil = new userControlAcceuil { zone = zonePage };
|
|
contentControl.Content = ucAccueil;
|
|
ucAccueil.AccueilWeChange += UcAccueil_AccueilWeChange;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Evénement associé à l'EventHandler AccueilWeChange de l'UserControlAccueil
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void UcAccueil_AccueilWeChange(object sender, AccueilWeChangeEventArgs e)
|
|
{
|
|
var ucAccueil = new userControlAcceuil { zone = zonePage };
|
|
contentControl.Content = ucAccueil;
|
|
ucAccueil.AccueilWeChange += UcAccueil_AccueilWeChange;
|
|
ChangeRegionAvecMap(e.Zone);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Evénement associé à l'EventHandler AccueilWeGo de l'UserControlRequin
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void UcDesc_AccueilWeGo(object sender, AccueilWeGoEventArgs e)
|
|
{
|
|
var ucAccueil = new userControlAcceuil { zone = zonePage };
|
|
contentControl.Content = ucAccueil;
|
|
ucAccueil.AccueilWeChange += UcAccueil_AccueilWeChange;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Evénement associé à l'EventHandler EditWeGo de l'UserControlDescription
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
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
|
|
}
|
|
|
|
/// <summary>
|
|
/// Evénement associé à l'EventHandler DescriptionWeGo de l'UserControlRequin
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
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
|
|
}
|
|
|
|
/// <summary>
|
|
/// Evénement associé à l'EventHandler DescWeGo de l'UserControlEdit
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
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
|
|
}
|
|
|
|
|
|
|
|
/// <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>
|
|
/// 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)
|
|
{
|
|
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);
|
|
}
|
|
}
|
|
|
|
|
|
/// <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
|
|
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
|
|
}
|
|
|
|
/// <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)
|
|
{
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|