From 0544008b58ff8792226acb3b1c5121338ced9370 Mon Sep 17 00:00:00 2001 From: Yan Maniez Date: Fri, 12 Apr 2019 23:54:47 +0200 Subject: [PATCH] Une seule notify task pour le background --- .../AideDeJeu/Tools/NotifyTaskCompletion.cs | 2 + .../PlayerCharacterEditorViewModel.cs | 140 ++++++++++-------- .../Views/PlayerCharacterEditorPage.xaml | 64 ++------ 3 files changed, 88 insertions(+), 118 deletions(-) diff --git a/AideDeJeu/AideDeJeu/Tools/NotifyTaskCompletion.cs b/AideDeJeu/AideDeJeu/Tools/NotifyTaskCompletion.cs index c93a5964..85a31c64 100644 --- a/AideDeJeu/AideDeJeu/Tools/NotifyTaskCompletion.cs +++ b/AideDeJeu/AideDeJeu/Tools/NotifyTaskCompletion.cs @@ -27,6 +27,7 @@ namespace AideDeJeu.Tools if (propertyChanged == null) return; propertyChanged(this, new PropertyChangedEventArgs("Status")); + propertyChanged(this, new PropertyChangedEventArgs("DebugStatus")); propertyChanged(this, new PropertyChangedEventArgs("IsCompleted")); propertyChanged(this, new PropertyChangedEventArgs("IsNotCompleted")); if (task.IsCanceled) @@ -54,6 +55,7 @@ namespace AideDeJeu.Tools return (Task?.Status == TaskStatus.RanToCompletion) ? Task.Result : default(TResult); } } + public string DebugStatus { get { return Status.ToString(); } } public TaskStatus Status { get { return Task?.Status ?? TaskStatus.Running; } } public bool IsCompleted { get { return Task?.IsCompleted ?? false; } } public bool IsNotCompleted { get { return Task?.IsCompleted == true ? false : true; } } diff --git a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterEditorViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterEditorViewModel.cs index cc09a7a2..7ec7000a 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterEditorViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/PlayerCharacterEditorViewModel.cs @@ -20,12 +20,15 @@ namespace AideDeJeu.ViewModels Classes = new NotifyTaskCompletion>(Task.Run(() => LoadClassesAsync())); Backgrounds = new NotifyTaskCompletion>(Task.Run(() => LoadBackgroundsAsync())); - SubBackgrounds = new NotifyTaskCompletion>(null); - PersonalityTraits = new NotifyTaskCompletion>(null); - PersonalityIdeals = new NotifyTaskCompletion>(null); - PersonalityLinks = new NotifyTaskCompletion>(null); - PersonalityDefects = new NotifyTaskCompletion>(null); - BackgroundSpecialties = new NotifyTaskCompletion(null); + SelectedBackground = null; + NotifySelectedBackground = new NotifyTaskCompletion(null); + SubBackgrounds = null; + SelectedSubBackground = new NotifyTaskCompletion(null); + PersonalityTraits = null; + PersonalityIdeals = null; + PersonalityLinks = null; + PersonalityDefects = null; + BackgroundSpecialties = null; } #region Selected PC @@ -69,7 +72,11 @@ namespace AideDeJeu.ViewModels SetProperty(ref _AlignmentSelectedIndex, value); if (0 <= _AlignmentSelectedIndex && _AlignmentSelectedIndex < Alignments.Result.Count) { - SelectedPlayerCharacter.Alignment = Alignments.Result[_AlignmentSelectedIndex]; + SelectedAlignment = Alignments.Result[_AlignmentSelectedIndex]; + } + else + { + SelectedAlignment = null; } } } @@ -211,11 +218,23 @@ namespace AideDeJeu.ViewModels set { SetProperty(ref _SelectedBackground, value); - SelectedBackgroundChanged(); + NotifySelectedBackground = new NotifyTaskCompletion(Task.Run(() => LoadBackgroundAsync(_SelectedBackground))); + } + } + private NotifyTaskCompletion _NotifySelectedBackground = null; + public NotifyTaskCompletion NotifySelectedBackground + { + get + { + return _NotifySelectedBackground; + } + private set + { + SetProperty(ref _NotifySelectedBackground, value); } } - private void SelectedBackgroundChanged() + private async Task LoadBackgroundAsync(BackgroundItem background) { SelectedPlayerCharacter.SubBackground = null; SelectedPlayerCharacter.PersonalityTrait = null; @@ -223,26 +242,30 @@ namespace AideDeJeu.ViewModels SelectedPlayerCharacter.PersonalityLink = null; SelectedPlayerCharacter.PersonalityDefect = null; SelectedPlayerCharacter.BackgroundSpecialty = null; - SelectedPlayerCharacter.Background = SelectedBackground; + SelectedPlayerCharacter.Background = background; - SubBackgrounds = new NotifyTaskCompletion>(Task.Run(() => LoadSubBackgroundsAsync(SelectedBackground))); - PersonalityTraits = new NotifyTaskCompletion>(Task.Run(() => LoadPersonalityTraitsAsync(SelectedBackground))); - PersonalityIdeals = new NotifyTaskCompletion>(Task.Run(() => LoadPersonalityIdealsAsync(SelectedBackground))); - PersonalityLinks = new NotifyTaskCompletion>(Task.Run(() => LoadPersonalityLinksAsync(SelectedBackground))); - PersonalityDefects = new NotifyTaskCompletion>(Task.Run(() => LoadPersonalityDefectsAsync(SelectedBackground))); - BackgroundSpecialties = new NotifyTaskCompletion(Task.Run(() => LoadBackgroundsSpecialtiesAsync(SelectedBackground))); - Task.Run(async () => SelectedPlayerCharacter.BackgroundSkill = await LoadSkillAsync(SelectedBackground)); - ResetAlignments(); + if (background != null) + { + SubBackgrounds = await LoadSubBackgroundsAsync(background); + PersonalityTraits = await LoadPersonalityTraitsAsync(background); + PersonalityIdeals = await LoadPersonalityIdealsAsync(background); + PersonalityLinks = await LoadPersonalityLinksAsync(background); + PersonalityDefects = await LoadPersonalityDefectsAsync(background); + BackgroundSpecialties = await LoadBackgroundsSpecialtiesAsync(background); + await Task.Run(async () => SelectedPlayerCharacter.BackgroundSkill = await LoadSkillAsync(background)); + ResetAlignments(); + } + return background; } - private NotifyTaskCompletion> _SubBackgrounds = null; - public NotifyTaskCompletion> SubBackgrounds + private List _SubBackgrounds = null; + public List SubBackgrounds { get { return _SubBackgrounds; } - private set + set { SetProperty(ref _SubBackgrounds, value); } @@ -262,33 +285,21 @@ namespace AideDeJeu.ViewModels { //SelectedPlayerCharacter.SubBackground = null; SubBackgroundSelectedIndex = -1; - SelectedSubBackground = null; + SelectedSubBackground = new NotifyTaskCompletion(null); } else if (_SubBackgroundSelectedIndex > 0) { - SelectedSubBackground = SubBackgrounds.Result[_SubBackgroundSelectedIndex]; + SelectedSubBackground = new NotifyTaskCompletion(Task.Run(() => LoadSubBackgroundAsync(SubBackgrounds[_SubBackgroundSelectedIndex]))); } } } - private SubBackgroundItem _SelectedSubBackground = null; - public SubBackgroundItem SelectedSubBackground - { - get - { - return _SelectedSubBackground; - } - set - { - SetProperty(ref _SelectedSubBackground, value); - SelectedSubBackgroundChanged(); - } - } + public NotifyTaskCompletion SelectedSubBackground { get; private set; } - private void SelectedSubBackgroundChanged() + private async Task LoadSubBackgroundAsync(SubBackgroundItem subbackground) { - SelectedPlayerCharacter.SubBackground = SelectedSubBackground; - if (SelectedSubBackground == null) + SelectedPlayerCharacter.SubBackground = subbackground; + if (subbackground == null) { SubBackgroundSpecialties = null; SelectedPlayerCharacter.SubBackgroundSkill = null; @@ -296,19 +307,20 @@ namespace AideDeJeu.ViewModels } else { - SubBackgroundSpecialties = new NotifyTaskCompletion(Task.Run(() => LoadBackgroundsSpecialtiesAsync(SelectedSubBackground))); - Task.Run(async () => SelectedPlayerCharacter.SubBackgroundSkill = await LoadSkillAsync(SelectedSubBackground)); + SubBackgroundSpecialties = await LoadBackgroundsSpecialtiesAsync(subbackground); + await Task.Run(async () => SelectedPlayerCharacter.SubBackgroundSkill = await LoadSkillAsync(subbackground)); } + return subbackground; } - private NotifyTaskCompletion> _PersonalityTraits = null; - public NotifyTaskCompletion> PersonalityTraits + private List _PersonalityTraits = null; + public List PersonalityTraits { get { return _PersonalityTraits; } - private set + set { SetProperty(ref _PersonalityTraits, value); } @@ -320,21 +332,21 @@ namespace AideDeJeu.ViewModels { return _SelectedPersonalityTrait; } - private set + set { SetProperty(ref _SelectedPersonalityTrait, value); SelectedPlayerCharacter.PersonalityTrait = value; } } - private NotifyTaskCompletion> _PersonalityIdeals = null; - public NotifyTaskCompletion> PersonalityIdeals + private List _PersonalityIdeals = null; + public List PersonalityIdeals { get { return _PersonalityIdeals; } - private set + set { SetProperty(ref _PersonalityIdeals, value); } @@ -346,21 +358,21 @@ namespace AideDeJeu.ViewModels { return _SelectedPersonalityIdeal; } - private set + set { SetProperty(ref _SelectedPersonalityIdeal, value); SelectedPlayerCharacter.PersonalityIdeal = value; } } - private NotifyTaskCompletion> _PersonalityLinks = null; - public NotifyTaskCompletion> PersonalityLinks + private List _PersonalityLinks = null; + public List PersonalityLinks { get { return _PersonalityLinks; } - private set + set { SetProperty(ref _PersonalityLinks, value); } @@ -372,21 +384,21 @@ namespace AideDeJeu.ViewModels { return _SelectedPersonalityLink; } - private set + set { SetProperty(ref _SelectedPersonalityLink, value); SelectedPlayerCharacter.PersonalityLink = value; } } - private NotifyTaskCompletion> _PersonalityDefects = null; - public NotifyTaskCompletion> PersonalityDefects + private List _PersonalityDefects = null; + public List PersonalityDefects { get { return _PersonalityDefects; } - private set + set { SetProperty(ref _PersonalityDefects, value); } @@ -398,40 +410,40 @@ namespace AideDeJeu.ViewModels { return _SelectedPersonalityDefect; } - private set + set { SetProperty(ref _SelectedPersonalityDefect, value); SelectedPlayerCharacter.PersonalityDefect = value; } } - private NotifyTaskCompletion _BackgroundSpecialties = null; - public NotifyTaskCompletion BackgroundSpecialties + private BackgroundSpecialtyItem _BackgroundSpecialties = null; + public BackgroundSpecialtyItem BackgroundSpecialties { get { return _BackgroundSpecialties; } - private set + set { SetProperty(ref _BackgroundSpecialties, value); OnPropertyChanged(nameof(SelectedBackgroundSpecialties)); } } - private NotifyTaskCompletion _SubBackgroundSpecialties = null; - public NotifyTaskCompletion SubBackgroundSpecialties + private BackgroundSpecialtyItem _SubBackgroundSpecialties = null; + public BackgroundSpecialtyItem SubBackgroundSpecialties { get { return _SubBackgroundSpecialties; } - private set + set { SetProperty(ref _SubBackgroundSpecialties, value); OnPropertyChanged(nameof(SelectedBackgroundSpecialties)); } } - public NotifyTaskCompletion SelectedBackgroundSpecialties + public BackgroundSpecialtyItem SelectedBackgroundSpecialties { get { diff --git a/AideDeJeu/AideDeJeu/Views/PlayerCharacterEditorPage.xaml b/AideDeJeu/AideDeJeu/Views/PlayerCharacterEditorPage.xaml index 9f823976..05160788 100644 --- a/AideDeJeu/AideDeJeu/Views/PlayerCharacterEditorPage.xaml +++ b/AideDeJeu/AideDeJeu/Views/PlayerCharacterEditorPage.xaml @@ -50,74 +50,30 @@ - +