/*! * \file Animal.xaml.cs * \author Léana Besson */ using Model; using Persistance; /*! * \namespace Views */ namespace Views; /*! * \class DetailAnimal * \brief Regroups functions for DetailAnimal page operation */ public partial class DetailAnimal : ContentPage { /*! * \fn AppShell() * \brief Animaux page constructor with component initialization and context binding assignment */ public DetailAnimal() { InitializeComponent(); BindingContext = (App.Current as App).AnimalSelectionner; Picker_especes.BindingContext = (App.Current as App).Theque; if((App.Current as App).AnimalSelectionner.Espece != null) { if ((App.Current as App).AnimalSelectionner.Race != null) { PetAdvice.BindingContext = (App.Current as App).AnimalSelectionner.Race; } else PetAdvice.BindingContext = (App.Current as App).AnimalSelectionner.Espece; } } /*! * \fn Button_OnClick(object sender, EventArgs e) * \brief Delete the animal from the theque, serialize the theque and go to the Animaux page * \param sender object - Event emitter information, namely the DetailAnimal.xaml page * \param e EventArgs - Information related to the clicked button event */ public async void Button_OnClick(object sender, EventArgs e) { (App.Current as App).Theque.SupprimerAnimal((App.Current as App).AnimalSelectionner); DataSerializerBinary.Serializer((App.Current as App).SerializationPath, (App.Current as App).Theque); await Shell.Current.GoToAsync("//Animaux"); } private void EspeceClic(object sender, EventArgs e) { (App.Current as App).AnimalSelectionner.Espece = (sender as Picker).SelectedItem as Espece; (App.Current as App).AnimalSelectionner.Race = null; } private void RaceClic(object sender, EventArgs e) { (App.Current as App).AnimalSelectionner.Race = (sender as Picker).SelectedItem as Race; } private void SexeClick(object sender, EventArgs e) { (App.Current as App).AnimalSelectionner.Sexe = (sender as Picker).SelectedItem as string; } public async void TakePhoto(object sender, EventArgs e) { if (MediaPicker.Default.IsCaptureSupported) { FileResult photo = await MediaPicker.Default.PickPhotoAsync(); if (photo != null) { string localFilePath = Path.Combine(FileSystem.AppDataDirectory, photo.FileName); using Stream sourceStream = await photo.OpenReadAsync(); using FileStream localFileStream = File.OpenWrite(localFilePath); await sourceStream.CopyToAsync(localFileStream); (App.Current as App).AnimalSelectionner.Image = Path.Combine(FileSystem.AppDataDirectory, photo.FileName); } } } protected override bool OnBackButtonPressed() { if((App.Current as App).AnimalSelectionner.NomIsValid == true) { DataSerializerBinary.Serializer((App.Current as App).SerializationPath, (App.Current as App).Theque); return base.OnBackButtonPressed(); } return true; } }