From 62b17e86598a3932f011372070302974fbfa80cd Mon Sep 17 00:00:00 2001 From: Yan Maniez Date: Tue, 9 Apr 2019 18:52:05 +0200 Subject: [PATCH] =?UTF-8?q?Picker=20am=C3=A9lior=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AideDeJeu/AideDeJeu/AideDeJeu.csproj | 3 ++ AideDeJeu/AideDeJeu/ViewModels/Navigator.cs | 2 +- .../AideDeJeu/ViewModels/PickerViewModel.cs | 47 +++++++++++++++++++ .../PlayerCharacterEditorViewModel.cs | 31 ++++++++++-- .../ViewModels/PlayerCharacterViewModel.cs | 12 +++++ .../Views/PlayerCharacterEditorPage.xaml | 6 ++- AideDeJeu/AideDeJeu/Views/StringPicker.xaml | 19 ++++++++ .../AideDeJeu/Views/StringPicker.xaml.cs | 23 +++++++++ 8 files changed, 136 insertions(+), 7 deletions(-) create mode 100644 AideDeJeu/AideDeJeu/ViewModels/PickerViewModel.cs create mode 100644 AideDeJeu/AideDeJeu/Views/StringPicker.xaml create mode 100644 AideDeJeu/AideDeJeu/Views/StringPicker.xaml.cs diff --git a/AideDeJeu/AideDeJeu/AideDeJeu.csproj b/AideDeJeu/AideDeJeu/AideDeJeu.csproj index aba5a5a2..184f06f3 100644 --- a/AideDeJeu/AideDeJeu/AideDeJeu.csproj +++ b/AideDeJeu/AideDeJeu/AideDeJeu.csproj @@ -100,6 +100,9 @@ MSBuild:UpdateDesignTimeXaml + + MSBuild:UpdateDesignTimeXaml + MSBuild:UpdateDesignTimeXaml diff --git a/AideDeJeu/AideDeJeu/ViewModels/Navigator.cs b/AideDeJeu/AideDeJeu/ViewModels/Navigator.cs index 345952fa..cacdc220 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/Navigator.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/Navigator.cs @@ -18,7 +18,7 @@ namespace AideDeJeu.ViewModels } public class Navigator : BaseViewModel, INavigator { - INavigation Navigation; + public INavigation Navigation; public Navigator(INavigation navigation) { diff --git a/AideDeJeu/AideDeJeu/ViewModels/PickerViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/PickerViewModel.cs new file mode 100644 index 00000000..018621f8 --- /dev/null +++ b/AideDeJeu/AideDeJeu/ViewModels/PickerViewModel.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; + +namespace AideDeJeu.ViewModels +{ + public class PickerViewModel : BaseViewModel where T:class + { + private List _Items = null; + public List Items + { + get + { + return _Items; + } + set + { + SetProperty(ref _Items, value); + } + } + + private T _SelectedItem = null; + public T SelectedItem + { + get + { + return _SelectedItem; + } + set + { + SetProperty(ref _SelectedItem, value); + if (_taskCompletionSource != null) + { + _taskCompletionSource.SetResult(value); + _taskCompletionSource = null; + } + } + } + private TaskCompletionSource _taskCompletionSource; + public Task PickValueAsync() + { + _taskCompletionSource = new TaskCompletionSource(); + return _taskCompletionSource.Task; + } + } +} diff --git a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterEditorViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterEditorViewModel.cs index 104fd90a..2b846920 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterEditorViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterEditorViewModel.cs @@ -3,9 +3,12 @@ using AideDeJeuLib; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows.Input; +using Xamarin.Forms; namespace AideDeJeu.ViewModels { @@ -133,12 +136,12 @@ namespace AideDeJeu.ViewModels set { SetProperty(ref _SubBackgroundSelectedIndex, value); - if(_SubBackgroundSelectedIndex == 0) + if (_SubBackgroundSelectedIndex == 0) { SelectedPlayerCharacter.SubBackground = null; SubBackgroundSelectedIndex = -1; } - else if(_SubBackgroundSelectedIndex > 0) + else if (_SubBackgroundSelectedIndex > 0) { SelectedPlayerCharacter.SubBackground = SubBackgrounds.Result[_SubBackgroundSelectedIndex]; } @@ -178,12 +181,13 @@ namespace AideDeJeu.ViewModels var table = item.Table; var lines = table.Split('\n'); var result = new List(); - foreach(var line in lines.Skip(2)) + foreach (var line in lines.Skip(2)) { if (line.StartsWith("|")) { var cols = line.Split('|'); - result.Add(cols[2]); + var text = cols[2].Replace("", " ").Replace(" ", " "); + result.Add(text); } } return result; @@ -211,6 +215,25 @@ namespace AideDeJeu.ViewModels return new List(); } } + + public ICommand StringPickerCommand + { + get + { + return new Command>(async (strings) => await ExecuteStringPickerCommandAsync(strings)); + } + } + + private async Task ExecuteStringPickerCommandAsync(List strings) + { + var picker = new Views.StringPicker(); + var vm = picker.ViewModel; + vm.Items = strings; + await Main.Navigator.Navigation.PushModalAsync(picker, true); + var result = await vm.PickValueAsync(); + await Main.Navigator.Navigation.PopModalAsync(true); + SelectedPlayerCharacter.PersonalityTrait = result; + } #endregion Background #region Abilities diff --git a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterViewModel.cs index 264faef3..b5794fde 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterViewModel.cs @@ -55,5 +55,17 @@ namespace AideDeJeu.ViewModels SetProperty(ref _SubBackground, value); } } + private string _PersonalityTrait = null; + public string PersonalityTrait + { + get + { + return _PersonalityTrait; + } + set + { + SetProperty(ref _PersonalityTrait, value); + } + } } } diff --git a/AideDeJeu/AideDeJeu/Views/PlayerCharacterEditorPage.xaml b/AideDeJeu/AideDeJeu/Views/PlayerCharacterEditorPage.xaml index 748f1387..cb5fa27e 100644 --- a/AideDeJeu/AideDeJeu/Views/PlayerCharacterEditorPage.xaml +++ b/AideDeJeu/AideDeJeu/Views/PlayerCharacterEditorPage.xaml @@ -58,7 +58,9 @@ - +