From 72f450dab9cf1850fdf5286134a584e8287b94de Mon Sep 17 00:00:00 2001 From: Yan Maniez Date: Mon, 14 Oct 2019 17:42:34 +0200 Subject: [PATCH] Colmatage bookmarks --- AideDeJeu/AideDeJeu/App.xaml.cs | 3 +- .../Repositories/BookmarksRepository.cs | 45 +++++- .../Repositories/LibraryRepository.cs | 7 +- .../AideDeJeu/ViewModels/BaseViewModel.cs | 7 +- .../ViewModels/Library/BookmarksViewModel.cs | 140 +++++++++--------- AideDeJeu/AideDeJeu/ViewModels/Navigator.cs | 7 +- .../Views/Library/BookmarksPage.xaml | 6 +- 7 files changed, 135 insertions(+), 80 deletions(-) diff --git a/AideDeJeu/AideDeJeu/App.xaml.cs b/AideDeJeu/AideDeJeu/App.xaml.cs index 2bd5578a..4e08cbbf 100644 --- a/AideDeJeu/AideDeJeu/App.xaml.cs +++ b/AideDeJeu/AideDeJeu/App.xaml.cs @@ -1,4 +1,5 @@ using AideDeJeu.Pdf; +using AideDeJeu.Repositories; using AideDeJeu.ViewModels; using AideDeJeu.ViewModels.Library; using AideDeJeu.ViewModels.PlayerCharacter; @@ -22,7 +23,7 @@ namespace AideDeJeu DependencyService.Register(); DependencyService.Register(); - DependencyService.Register(); + DependencyService.Register(); DependencyService.Register(); DependencyService.Register(); var vm = DependencyService.Get(); diff --git a/AideDeJeu/AideDeJeu/Repositories/BookmarksRepository.cs b/AideDeJeu/AideDeJeu/Repositories/BookmarksRepository.cs index 52b3b6d5..72b9edd5 100644 --- a/AideDeJeu/AideDeJeu/Repositories/BookmarksRepository.cs +++ b/AideDeJeu/AideDeJeu/Repositories/BookmarksRepository.cs @@ -1,10 +1,51 @@ -using System; +using AideDeJeu.ViewModels; +using AideDeJeuLib; +using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Text; namespace AideDeJeu.Repositories { - public class BookmarksRepository + public class BookmarksRepository : BaseViewModel { + public ObservableCollection BookmarkCollectionNames { get; set; } = new ObservableCollection() + { + "Général", + "Grimoire", + "Bestiaire", + "Sac", + "Nouvelle liste", + }; + + private int _BookmarkCollectionIndex = 0; + public int BookmarkCollectionIndex + { + get + { + return _BookmarkCollectionIndex; + } + set + { + SetProperty(ref _BookmarkCollectionIndex, value); + //LoadBookmarkCollection(BookmarkCollectionNames[BookmarkCollectionIndex]); + } + } + + public Dictionary> _BookmarkCollections = new Dictionary>(); + + public ObservableCollection _BookmarkCollection = new ObservableCollection(); + public ObservableCollection BookmarkCollection + { + get + { + return _BookmarkCollection; + } + set + { + SetProperty(ref _BookmarkCollection, value); + } + } + } } diff --git a/AideDeJeu/AideDeJeu/Repositories/LibraryRepository.cs b/AideDeJeu/AideDeJeu/Repositories/LibraryRepository.cs index 6cbe335c..9256db55 100644 --- a/AideDeJeu/AideDeJeu/Repositories/LibraryRepository.cs +++ b/AideDeJeu/AideDeJeu/Repositories/LibraryRepository.cs @@ -1,10 +1,13 @@ -using System; +using AideDeJeu.ViewModels; +using AideDeJeuLib; +using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Text; namespace AideDeJeu.Repositories { - public class LibraryRepository + public class LibraryRepository : BaseViewModel { } } diff --git a/AideDeJeu/AideDeJeu/ViewModels/BaseViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/BaseViewModel.cs index 1e65c4a8..624d69c9 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/BaseViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/BaseViewModel.cs @@ -1,4 +1,5 @@ -using AideDeJeu.ViewModels.Library; +using AideDeJeu.Repositories; +using AideDeJeu.ViewModels.Library; using System; using System.Collections.Generic; using System.ComponentModel; @@ -17,11 +18,11 @@ namespace AideDeJeu.ViewModels return DependencyService.Get(); } } - public BookmarksViewModel Bookmarks + public BookmarksRepository Bookmarks { get { - return DependencyService.Get(); + return DependencyService.Get(); } } public StoreViewModel Store diff --git a/AideDeJeu/AideDeJeu/ViewModels/Library/BookmarksViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/Library/BookmarksViewModel.cs index 5d418a61..39ee9257 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/Library/BookmarksViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/Library/BookmarksViewModel.cs @@ -1,4 +1,5 @@ -using AideDeJeuLib; +using AideDeJeu.Repositories; +using AideDeJeuLib; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -16,49 +17,56 @@ namespace AideDeJeu.ViewModels.Library { public class BookmarksViewModel : BaseViewModel { + public BookmarksRepository Repository + { + get + { + return DependencyService.Get(); + } + } public BookmarksViewModel() { //LoadBookmarkCollectionAsync(BookmarkCollectionNames[BookmarkCollectionIndex]).ConfigureAwait(true); LoadBookmarkCollectionsAsync().ConfigureAwait(true); } - public ObservableCollection BookmarkCollectionNames { get; set; } = new ObservableCollection() - { - "Général", - "Grimoire", - "Bestiaire", - "Sac", - "Nouvelle liste", - }; + //public ObservableCollection BookmarkCollectionNames { get; set; } = new ObservableCollection() + //{ + // "Général", + // "Grimoire", + // "Bestiaire", + // "Sac", + // "Nouvelle liste", + //}; - private int _BookmarkCollectionIndex = 0; - public int BookmarkCollectionIndex - { - get - { - return _BookmarkCollectionIndex; - } - set - { - SetProperty(ref _BookmarkCollectionIndex, value); - //LoadBookmarkCollection(BookmarkCollectionNames[BookmarkCollectionIndex]); - } - } + //private int _BookmarkCollectionIndex = 0; + //public int BookmarkCollectionIndex + //{ + // get + // { + // return _BookmarkCollectionIndex; + // } + // set + // { + // SetProperty(ref _BookmarkCollectionIndex, value); + // //LoadBookmarkCollection(BookmarkCollectionNames[BookmarkCollectionIndex]); + // } + //} - private Dictionary> _BookmarkCollections = new Dictionary>(); + //private Dictionary> _BookmarkCollections = new Dictionary>(); - private ObservableCollection _BookmarkCollection = new ObservableCollection(); - public ObservableCollection BookmarkCollection - { - get - { - return _BookmarkCollection; - } - set - { - SetProperty(ref _BookmarkCollection, value); - } - } + //private ObservableCollection _BookmarkCollection = new ObservableCollection(); + //public ObservableCollection BookmarkCollection + //{ + // get + // { + // return _BookmarkCollection; + // } + // set + // { + // SetProperty(ref _BookmarkCollection, value); + // } + //} private ICommand _SelectedIndexChangedCommand = null; public ICommand SelectedIndexChangedCommand @@ -71,24 +79,24 @@ namespace AideDeJeu.ViewModels.Library private async Task ExecuteSelectedIndexChangedCommandAsync() { - if (BookmarkCollectionIndex >= 0 && BookmarkCollectionIndex < BookmarkCollectionNames.Count - 1) + if (Repository.BookmarkCollectionIndex >= 0 && Repository.BookmarkCollectionIndex < Repository.BookmarkCollectionNames.Count - 1) { - await LoadBookmarkCollectionAsync(BookmarkCollectionNames[BookmarkCollectionIndex]); + await LoadBookmarkCollectionAsync(Repository.BookmarkCollectionNames[Repository.BookmarkCollectionIndex]); } - else if (BookmarkCollectionIndex == BookmarkCollectionNames.Count - 1) + else if (Repository.BookmarkCollectionIndex == Repository.BookmarkCollectionNames.Count - 1) { var result = await Main.Navigator.OpenCancellableTextInputAlertDialog(""); if (result.Item2 == Navigator.PopupResultEnum.Save) { - var index = BookmarkCollectionNames.Count - 1; - BookmarkCollectionNames.Insert(index, result.Item1); + var index = Repository.BookmarkCollectionNames.Count - 1; + Repository.BookmarkCollectionNames.Insert(index, result.Item1); //BookmarkCollectionIndex = index; - BookmarkCollectionIndex = 0; + Repository.BookmarkCollectionIndex = 0; await SaveBookmarksAsync(); } else { - BookmarkCollectionIndex = 0; + Repository.BookmarkCollectionIndex = 0; } } } @@ -121,7 +129,7 @@ namespace AideDeJeu.ViewModels.Library private async Task ExecuteRemoveItemCommandAsync(Item item) { - BookmarkCollection.Remove(item); + Repository.BookmarkCollection.Remove(item); await SaveBookmarksAsync(); } @@ -136,10 +144,10 @@ namespace AideDeJeu.ViewModels.Library private async Task ExecuteMoveUpItemCommandAsync(Item item) { - var index = BookmarkCollection.IndexOf(item); + var index = Repository.BookmarkCollection.IndexOf(item); if (index > 0) { - BookmarkCollection.Move(index, index - 1); + Repository.BookmarkCollection.Move(index, index - 1); await SaveBookmarksAsync(); } } @@ -155,10 +163,10 @@ namespace AideDeJeu.ViewModels.Library private async Task ExecuteMoveDownItemCommandAsync(Item item) { - var index = BookmarkCollection.IndexOf(item); - if (index < BookmarkCollection.Count - 1) + var index = Repository.BookmarkCollection.IndexOf(item); + if (index < Repository.BookmarkCollection.Count - 1) { - BookmarkCollection.Move(index, index + 1); + Repository.BookmarkCollection.Move(index, index + 1); await SaveBookmarksAsync(); } } @@ -174,27 +182,27 @@ namespace AideDeJeu.ViewModels.Library private async Task ExecuteConfigureCommandAsync() { - var result = await Main.Navigator.OpenCancellableTextInputAlertDialog(BookmarkCollectionNames[BookmarkCollectionIndex]); + var result = await Main.Navigator.OpenCancellableTextInputAlertDialog(Repository.BookmarkCollectionNames[Repository.BookmarkCollectionIndex]); if (result.Item2 == Navigator.PopupResultEnum.Delete) { var confirm = await App.Current.MainPage.DisplayAlert("Supprimer ?", "Etes vous sûr de vouloir supprimer la liste ?", "Supprimer", "Annuler"); if (confirm) { - var index = BookmarkCollectionIndex; - var name = BookmarkCollectionNames[BookmarkCollectionIndex]; + var index = Repository.BookmarkCollectionIndex; + var name = Repository.BookmarkCollectionNames[Repository.BookmarkCollectionIndex]; await SaveBookmarksAsync(name, null); - BookmarkCollectionNames.Remove(name); - BookmarkCollectionIndex = 0; + Repository.BookmarkCollectionNames.Remove(name); + Repository.BookmarkCollectionIndex = 0; } } else if (result.Item2 == Navigator.PopupResultEnum.Save) { - var index = BookmarkCollectionIndex; - var items = await GetBookmarkCollectionAsync(BookmarkCollectionNames[index]); - await SaveBookmarksAsync(BookmarkCollectionNames[index], null); - BookmarkCollectionNames[index] = result.Item1; - await SaveBookmarksAsync(BookmarkCollectionNames[index], items); - BookmarkCollectionIndex = index; + var index = Repository.BookmarkCollectionIndex; + var items = await GetBookmarkCollectionAsync(Repository.BookmarkCollectionNames[index]); + await SaveBookmarksAsync(Repository.BookmarkCollectionNames[index], null); + Repository.BookmarkCollectionNames[index] = result.Item1; + await SaveBookmarksAsync(Repository.BookmarkCollectionNames[index], items); + Repository.BookmarkCollectionIndex = index; } } @@ -218,10 +226,10 @@ namespace AideDeJeu.ViewModels.Library public async Task LoadBookmarkCollectionAsync(string key) { var items = await GetBookmarkCollectionAsync(key); - BookmarkCollection.Clear(); + Repository.BookmarkCollection.Clear(); if (items != null) { - items.ForEach(item => BookmarkCollection.Add(item)); + items.ForEach(item => Repository.BookmarkCollection.Add(item)); } } @@ -235,13 +243,13 @@ namespace AideDeJeu.ViewModels.Library } items.Add(linkItem); await SaveBookmarksAsync(key, items); - BookmarkCollectionIndex = BookmarkCollectionNames.IndexOf(key); + Repository.BookmarkCollectionIndex = Repository.BookmarkCollectionNames.IndexOf(key); await LoadBookmarkCollectionAsync(key); } public async Task SaveBookmarksAsync() { - App.Current.Properties[BookmarkCollectionNames[BookmarkCollectionIndex]] = ToString(BookmarkCollection); + App.Current.Properties[Repository.BookmarkCollectionNames[Repository.BookmarkCollectionIndex]] = ToString(Repository.BookmarkCollection); await App.Current.SavePropertiesAsync(); } @@ -261,7 +269,7 @@ namespace AideDeJeu.ViewModels.Library public async Task InitBookmarkCollectionsAsync() { - _BookmarkCollections = new Dictionary>() + Repository._BookmarkCollections = new Dictionary>() { { "Général", new ObservableCollection() }, { "Grimoire", new ObservableCollection() }, @@ -278,14 +286,14 @@ namespace AideDeJeu.ViewModels.Library { var spells = context.Spells.ToList(); var spell = spells.Take(1).FirstOrDefault(); - _BookmarkCollections["Grimoire"].Add(new Item() { Id = spell.Id, Name = spell.Name }); + Repository._BookmarkCollections["Grimoire"].Add(new Item() { Id = spell.Id, Name = spell.Name }); } await SaveBookmarkCollectionsAsync(); } } public async Task SaveBookmarkCollectionsAsync() { - var yaml = new YamlDotNet.Serialization.Serializer().Serialize(_BookmarkCollections); + var yaml = new YamlDotNet.Serialization.Serializer().Serialize(Repository._BookmarkCollections); Debug.WriteLine(yaml); } public string ToString(IEnumerable items) diff --git a/AideDeJeu/AideDeJeu/ViewModels/Navigator.cs b/AideDeJeu/AideDeJeu/ViewModels/Navigator.cs index 4fcf50bb..a80a6df3 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/Navigator.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/Navigator.cs @@ -183,14 +183,15 @@ namespace AideDeJeu.ViewModels //await Application.Current.MainPage.DisplayAlert("Id", item.Id, "OK"); var item = itemVM.Item; - var vm = Main.Bookmarks; - var result = await Application.Current.MainPage.DisplayActionSheet("Ajouter à", "Annuler", "Nouvelle liste", vm.BookmarkCollectionNames.ToArray()); + var repo = Main.Bookmarks; + var vm = new BookmarksViewModel(); + var result = await Application.Current.MainPage.DisplayActionSheet("Ajouter à", "Annuler", "Nouvelle liste", repo.BookmarkCollectionNames.ToArray()); if (result != "Annuler") { if (result == "Nouvelle liste") { int i = 1; - while (vm.BookmarkCollectionNames.Contains(result = $"Nouvelle liste ({i})")) + while (repo.BookmarkCollectionNames.Contains(result = $"Nouvelle liste ({i})")) { i++; } diff --git a/AideDeJeu/AideDeJeu/Views/Library/BookmarksPage.xaml b/AideDeJeu/AideDeJeu/Views/Library/BookmarksPage.xaml index be5dc39c..c9406cce 100644 --- a/AideDeJeu/AideDeJeu/Views/Library/BookmarksPage.xaml +++ b/AideDeJeu/AideDeJeu/Views/Library/BookmarksPage.xaml @@ -34,17 +34,17 @@ - + -