data binding liste
continuous-integration/drone/push Build is failing Details

DataBinding
Vianney JOURDY 2 years ago
parent 4d65c29596
commit 56c6fe3238

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using MangaMap.Stub;
namespace MangaMap.Model namespace MangaMap.Model
{ {
@ -13,10 +14,13 @@ namespace MangaMap.Model
public List<Utilisateur> Utilisateurs { get; private set; } public List<Utilisateur> Utilisateurs { get; private set; }
public List<Oeuvre> Oeuvres { get; private set; } public List<Oeuvre> Oeuvres { get; private set; }
public Utilisateur UtilisateurActuel { get; set; }
public Manager(IPersistanceManager Pers) { public Manager(IPersistanceManager Pers) {
Admins = new List<Admin>(); Admins = new List<Admin>();
Utilisateurs = new List<Utilisateur>(); Utilisateurs = new List<Utilisateur>();
Oeuvres = new List<Oeuvre>(); Oeuvres = new List<Oeuvre>();
UtilisateurActuel = null;
Persistance = Pers; Persistance = Pers;
} }
@ -26,6 +30,7 @@ namespace MangaMap.Model
Admins = new List<Admin>(); Admins = new List<Admin>();
Utilisateurs = new List<Utilisateur>(); Utilisateurs = new List<Utilisateur>();
Oeuvres = new List<Oeuvre>(); Oeuvres = new List<Oeuvre>();
UtilisateurActuel = null;
} }
public void charger() public void charger()

@ -17,7 +17,7 @@ namespace MangaMap.Model
[DataMember] [DataMember]
public int age { get; private set; } public int age { get; private set; }
[DataMember] [DataMember]
public List<Oeuvre> ListeOeuvreEnVisionnage { get; private set; } public List<Oeuvre> ListeOeuvreEnVisionnage { get; set; }
[DataMember] [DataMember]
public List<Oeuvre> ListeOeuvreDejaVu { get; private set; } public List<Oeuvre> ListeOeuvreDejaVu { get; private set; }
[DataMember] [DataMember]

@ -3,13 +3,14 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using MangaMap.Model;
namespace MangaMap.Model namespace MangaMap.Stub
{ {
public interface IPersistanceManager public interface IPersistanceManager
{ {
(List<Oeuvre>, List<Utilisateur>) chargeDonne(); (List<Oeuvre>, List<Utilisateur>) chargeDonne();
void sauvegarder(List<Oeuvre> o , List<Utilisateur> u); void sauvegarder(List<Oeuvre> o, List<Utilisateur> u);
} }
} }

@ -6,7 +6,7 @@ using System.Xml.Linq;
public partial class ficheAnime : ContentPage, INotifyPropertyChanged public partial class ficheAnime : ContentPage, INotifyPropertyChanged
{ {
public Manager DataManager { get; set; } public Manager my_manager => (App.Current as App).MyManager;
public Oeuvre AnimeModel { get; set; } public Oeuvre AnimeModel { get; set; }
public ficheAnime() public ficheAnime()
@ -27,6 +27,19 @@ public partial class ficheAnime : ContentPage, INotifyPropertyChanged
this.BindingContext = this; this.BindingContext = this;
} }
public async void AjouterListe(object sender, EventArgs e)
{
if (my_manager.UtilisateurActuel == null)
{
await DisplayAlert("Erreur", "Vous n'êtes pas connecté.", "OK");
return;
}
my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage.Add(AnimeModel);
// Naviguez vers la page de la fiche d'anime en passant l'objet sélectionné
await Navigation.PushAsync(new listPage());
}
private void SetNote(float note) private void SetNote(float note)
{ {
note = (int)note; // Tronquer à un entier car nous ne gérons actuellement pas les demi-étoiles note = (int)note; // Tronquer à un entier car nous ne gérons actuellement pas les demi-étoiles

@ -29,19 +29,20 @@
<Label Text="test" BackgroundColor="{StaticResource Primary}"/> <Label Text="test" BackgroundColor="{StaticResource Primary}"/>
</Grid> </Grid>
<HorizontalStackLayout x:Name="star"> <HorizontalStackLayout x:Name="star">
<Image Source="star_full.png" WidthRequest="50" HeightRequest="50" Margin="10"/> <Image Source="star_full.png" WidthRequest="50" HeightRequest="50" Margin="10"/>
<Image Source="star_full.png" WidthRequest="50" HeightRequest="50" Margin="10"/> <Image Source="star_full.png" WidthRequest="50" HeightRequest="50" Margin="10"/>
<Image Source="star_full.png" WidthRequest="50" HeightRequest="50" Margin="10"/> <Image Source="star_full.png" WidthRequest="50" HeightRequest="50" Margin="10"/>
<Image Source="star_full.png" WidthRequest="50" HeightRequest="50" Margin="10"/> <Image Source="star_full.png" WidthRequest="50" HeightRequest="50" Margin="10"/>
<Image Source="star_full.png" WidthRequest="50" HeightRequest="50" Margin="10"/> <Image Source="star_full.png" WidthRequest="50" HeightRequest="50" Margin="10"/>
<Button Text="Ajouter à la liste" <Button Text="Ajouter à la liste"
TextColor="#FFFFFF" TextColor="#FFFFFF"
HorizontalOptions="Start" HorizontalOptions="Start"
Margin="20" Margin="20"
BackgroundColor="{StaticResource Primary}"/> BackgroundColor="{StaticResource Primary}"
</HorizontalStackLayout> Clicked="AjouterListe"/>
</HorizontalStackLayout>
<Label <Label

@ -39,54 +39,18 @@
</Grid> </Grid>
<ScrollView Grid.Row="1" VerticalScrollBarVisibility="Always"> <ScrollView Grid.Row="1" VerticalScrollBarVisibility="Always">
<VerticalStackLayout Spacing="10"> <VerticalStackLayout BindableLayout.ItemsSource="{Binding ListeOeuvreEnVisionnage}" Spacing="10">
<Grid Margin="20,0,20,0" ColumnDefinitions="*,*,300,300"> <BindableLayout.ItemTemplate>
<DataTemplate>
<ImageButton Grid.Column="0" BackgroundColor="#FFFFFF" WidthRequest="100" HeightRequest="100" HorizontalOptions="Start"/> <Grid Margin="20,0,20,0" ColumnDefinitions="*,*,300,300">
<Label Grid.Column="1" Text="Test Titre" FontSize="Medium" VerticalOptions="Center" Margin="15"/> <ImageButton Grid.Column="0" Source="{Binding Affiche}" BackgroundColor="#FFFFFF" WidthRequest="100" HeightRequest="100" HorizontalOptions="Start"/>
<Label Grid.Column="2" Text="4/5" VerticalOptions="Center" HorizontalOptions="Center"/> <Label Grid.Column="1" Text="Test Titre" FontSize="Medium" VerticalOptions="Center" Margin="15"/>
<Label Grid.Column="3" Text="10/85" VerticalOptions="Center" HorizontalOptions="End"/> <Label Grid.Column="2" Text="4/5" VerticalOptions="Center" HorizontalOptions="Center"/>
</Grid> <Label Grid.Column="3" Text="10/85" VerticalOptions="Center" HorizontalOptions="End"/>
</Grid>
<Grid Margin="20,0,20,0" ColumnDefinitions="*,*,300,300"> </DataTemplate>
<ImageButton Grid.Column="0" BackgroundColor="Blue" WidthRequest="100" HeightRequest="100" HorizontalOptions="Start"/> </BindableLayout.ItemTemplate>
<Label Grid.Column="1" Text="Test Titre" FontSize="Medium" VerticalOptions="Center" Margin="15"/>
<Label Grid.Column="2" Text="4/5" VerticalOptions="Center" HorizontalOptions="Center"/>
<Label Grid.Column="3" Text="10/85" VerticalOptions="Center" HorizontalOptions="End"/>
</Grid>
<Grid Margin="20,0,20,0" ColumnDefinitions="*,*,300,300">
<ImageButton Grid.Column="0" BackgroundColor="Red" WidthRequest="100" HeightRequest="100" HorizontalOptions="Start"/>
<Label Grid.Column="1" Text="Test Titre" FontSize="Medium" VerticalOptions="Center" Margin="15"/>
<Label Grid.Column="2" Text="4/5" VerticalOptions="Center" HorizontalOptions="Center"/>
<Label Grid.Column="3" Text="10/85" VerticalOptions="Center" HorizontalOptions="End"/>
</Grid>
<Grid Margin="20,0,20,0" ColumnDefinitions="*,*,300,300">
<ImageButton Grid.Column="0" BackgroundColor="#FFFFFF" WidthRequest="100" HeightRequest="100" HorizontalOptions="Start"/>
<Label Grid.Column="1" Text="Test Titre" FontSize="Medium" VerticalOptions="Center" Margin="15"/>
<Label Grid.Column="2" Text="4/5" VerticalOptions="Center" HorizontalOptions="Center"/>
<Label Grid.Column="3" Text="10/85" VerticalOptions="Center" HorizontalOptions="End"/>
</Grid>
<Grid Margin="20,0,20,0" ColumnDefinitions="*,*,300,300">
<ImageButton Grid.Column="0" BackgroundColor="Blue" WidthRequest="100" HeightRequest="100" HorizontalOptions="Start"/>
<Label Grid.Column="1" Text="Test Titre" FontSize="Medium" VerticalOptions="Center" Margin="15"/>
<Label Grid.Column="2" Text="4/5" VerticalOptions="Center" HorizontalOptions="Center"/>
<Label Grid.Column="3" Text="10/85" VerticalOptions="Center" HorizontalOptions="End"/>
</Grid>
<Grid Margin="20,0,20,0" ColumnDefinitions="*,*,300,300">
<ImageButton Grid.Column="0" BackgroundColor="Red" WidthRequest="100" HeightRequest="100" HorizontalOptions="Start"/>
<Label Grid.Column="1" Text="Test Titre" FontSize="Medium" VerticalOptions="Center" Margin="15"/>
<Label Grid.Column="2" Text="4/5" VerticalOptions="Center" HorizontalOptions="Center"/>
<Label Grid.Column="3" Text="10/85" VerticalOptions="Center" HorizontalOptions="End"/>
</Grid>
</VerticalStackLayout> </VerticalStackLayout>
</ScrollView> </ScrollView>

@ -1,10 +1,14 @@
namespace MangaMap.Views; namespace MangaMap.Views;
using MangaMap.Model;
public partial class listPage : ContentPage public partial class listPage : ContentPage
{ {
public listPage() public Manager my_manager => (App.Current as App).MyManager;
public listPage()
{ {
InitializeComponent(); InitializeComponent();
} BindingContext = my_manager.UtilisateurActuel;
}
} }

@ -41,6 +41,8 @@ public partial class loginPage : ContentPage
return; return;
} }
// On garde l'utilisateur qui vient de se connecter pour accéder à ses informations
my_manager.UtilisateurActuel = utilisateur;
// Rediriger l'utilisateur vers la page principale // Rediriger l'utilisateur vers la page principale
await Navigation.PushAsync(new homePage()); await Navigation.PushAsync(new homePage());
} }

@ -72,6 +72,7 @@ public partial class signUpPage : ContentPage
Utilisateur util = new Utilisateur(email, pseudo, password, nom, prenom, age); Utilisateur util = new Utilisateur(email, pseudo, password, nom, prenom, age);
my_manager.Utilisateurs.Add(util); my_manager.Utilisateurs.Add(util);
my_manager.sauvegarder(); my_manager.sauvegarder();
my_manager.UtilisateurActuel = util;
await Navigation.PushAsync(new homePage()); await Navigation.PushAsync(new homePage());
return; return;
} }

Loading…
Cancel
Save