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/userControlDescription.xaml.cs

194 lines
6.2 KiB

using Business;
using Modèle;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
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 VideoLibrary;
namespace WpfApp1
{
public class EditWeGoEventArgs : EventArgs
{
public Requin Requin { get; private set; }
public EditWeGoEventArgs(Requin requin) => Requin = requin;
}
public class AccueilWeGoEventArgs : EventArgs
{
public Nullable<Zone> Zone { get; private set; }
public AccueilWeGoEventArgs(Zone? zone) => Zone = zone;
}
/// <summary>
/// Logique d'interaction pour userControlDescription.xaml
/// UserControl qui affiche la desription d'un requin
/// </summary>
public partial class userControlDescription : UserControl
{
public userControlDescription()
{
InitializeComponent();
}
public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //ManagerUser lié à celui de l'app
public Manager Mgr => (Application.Current as App).LeManager; //Manager lié à celui de l'app
private Requin _requin;
public Requin requin //le requin qui permet de changer l'affichage de la page
{
get { return _requin; }
set
{
_requin = value;
UptadeUi(_requin);
}
}
public Zone? zone { get; set; }
public event EventHandler<EditWeGoEventArgs> EditWeGo;
protected virtual void OnEditWeGo(EditWeGoEventArgs args)
=> EditWeGo?.Invoke(this, args);
public event EventHandler<AccueilWeGoEventArgs> AccueilWeGo;
protected virtual void OnAccueilWeGo(AccueilWeGoEventArgs args)
=> AccueilWeGo?.Invoke(this, args);
public int cmp = 0;
/// <summary>
/// Evénement qui permet de changer le content control de la main window
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void exit_Click(object sender, RoutedEventArgs e)
{
//Change le content control en UserControlAcceuil
OnAccueilWeGo(new AccueilWeGoEventArgs(zone));
}
/// <summary>
/// Evénement qui soit change le content control de la main window soit ouvre la page SeConnecter
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void edit_Click(object sender, RoutedEventArgs e)
{
//Test si l'utilisateur est connecté
if (MgrUser.SelectedUser == null)
{
//Si il ne l'est pas alors ouvrir la page SeConnecter
MessageBox.Show("Vous avez besoin d'être connecté pour accéder à cette fonctionnalité");
var seConnecter = new SeConnecter();
seConnecter.ShowDialog();
}
else
{
//Si il l'est changer le content control en UserControlEdit
OnEditWeGo(new EditWeGoEventArgs(requin));
}
}
/// <summary>
/// Méthode qui permet de transformer un url venant d'internet en BitmapImage
/// </summary>
/// <param name="url"></param>
/// <returns>BitmapImage la nouvel BitmapImage créée à partir de du string</returns>
private BitmapImage urlEnBitmap(string url)
{
var path = @url;
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new Uri(path, UriKind.Absolute);
bitmap.EndInit();
return bitmap;
}
/// <summary>
/// Méthode qui permet de mettre à jour l'affichage de la page en fonction du requin
/// </summary>
/// <param name="requin"></param>
private void UptadeUi(Requin requin)
{
string url = "Images/" + requin.StatutCons.ToString() + ".png";
nameReq.Text = requin.Nom;
sciName.Text = requin.NomSci;
desc.Text = requin.Description;
funFact.Text = requin.FunFact;
consPic.Source = new BitmapImage(new Uri(url, UriKind.Relative));
//La source des vidéos ne peut pas venir d'internet ou de youtube. Avec plus de temps nous aurions rajouté cette fonctionnalité
vid.Source = new Uri(requin.Video, UriKind.Relative);
//La source des photos peuvent venir d'internet
if (requin.Photo.Contains("Images/")) //Vérifie si la photo vient d'internet ou du dossier
{
//Si elle vient du dossier alors la transforme directement en BitmapImage
photo.Source = new BitmapImage(new Uri(requin.Photo, UriKind.RelativeOrAbsolute));
}
else
{
//Sinon appelle la fonction urlEnBitmap
BitmapImage bitmap = new BitmapImage();
bitmap = urlEnBitmap(requin.Photo);
photo.Source = bitmap;
}
//Même choses que les tests du dessus
if (requin.PhotoCarte.Contains("Images/"))
{
cartePic.Source = new BitmapImage(new Uri(requin.PhotoCarte, UriKind.RelativeOrAbsolute));
}
else
{
BitmapImage bitmap = new BitmapImage();
bitmap = urlEnBitmap(requin.PhotoCarte);
cartePic.Source = bitmap;
}
}
/// <summary>
/// Evénement qui est déclenché lorsque l'on clique sur la vidéo (easter egg)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void vid_MouseDown(object sender, MouseButtonEventArgs e)
{
cmp = cmp+1;
if (cmp == 10)
{
vid.Source = new Uri("Videos/requin_Ash ley.mp4", UriKind.Relative);
}
}
}
}