From a2d10199169f76bcbf241f35a72cfd718f78decb Mon Sep 17 00:00:00 2001 From: Yan Maniez Date: Wed, 29 Aug 2018 13:38:50 +0200 Subject: [PATCH] Suite bookmarks --- AideDeJeu/AideDeJeu/Models/HomeItem.cs | 12 --- .../ViewModels/BookmarksViewModel.cs | 83 ++++++++++++++----- AideDeJeu/AideDeJeu/ViewModels/Navigator.cs | 6 +- AideDeJeu/AideDeJeu/Views/BookmarksPage.xaml | 8 +- .../AideDeJeu/Views/ItemDetailPage.xaml.cs | 2 +- 5 files changed, 69 insertions(+), 42 deletions(-) diff --git a/AideDeJeu/AideDeJeu/Models/HomeItem.cs b/AideDeJeu/AideDeJeu/Models/HomeItem.cs index 6713b6a7..c2ea5dca 100644 --- a/AideDeJeu/AideDeJeu/Models/HomeItem.cs +++ b/AideDeJeu/AideDeJeu/Models/HomeItem.cs @@ -9,18 +9,6 @@ namespace AideDeJeuLib [DataContract] public class HomeItem : Item { - [DataMember] - public override string Id - { - get - { - return "index.md"; - } - set - { - } - } - [DataMember] public override string Markdown { diff --git a/AideDeJeu/AideDeJeu/ViewModels/BookmarksViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/BookmarksViewModel.cs index 023ffe00..f5420f1b 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/BookmarksViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/BookmarksViewModel.cs @@ -1,49 +1,90 @@ using AideDeJeuLib; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.IO; using System.Runtime.Serialization.Json; using System.Text; using System.Threading.Tasks; +using Xamarin.Forms.Internals; namespace AideDeJeu.ViewModels { - public class BookmarksViewModel //: BaseViewModel + public class BookmarksViewModel : BaseViewModel { public BookmarksViewModel() { - LoadBookmarks(); + LoadBookmarkCollection(); } - public List>> BookmarksKeyValues { get; set; } = new List>>() + public ObservableCollection BookmarkCollectionNames { get; set; } = new ObservableCollection() { - new KeyValuePair>("Général", new List()), - new KeyValuePair>("Grimoire", new List()), - new KeyValuePair>("Bestiaire", new List()), - new KeyValuePair>("Sac", new List()), + "Général", + "Grimoire", + "Bestiaire", + "Sac", }; - public int BookmarksIndex { get; set; } = 0; - public List Bookmarks { get; set; } - public int BookmarksCount { get; set; } = 0; - - public void LoadBookmarks() + private int _BookmarkCollectionIndex = 0; + public int BookmarkCollectionIndex { - foreach(var key in App.Current.Properties.Keys) + get { - var property = App.Current.Properties[key] as string; - if(property != null) - { - BookmarksKeyValues.Add(new KeyValuePair>(key, ToItems(property))); - } + return _BookmarkCollectionIndex; + } + set + { + SetProperty(ref _BookmarkCollectionIndex, value); + LoadBookmarkCollection(); + } + } + private ObservableCollection _BookmarkCollection = new ObservableCollection(); + public ObservableCollection BookmarkCollection + { + get + { + return _BookmarkCollection; + } + set + { + SetProperty(ref _BookmarkCollection, value); + } + } + + public List GetBookmarkCollection(string key) + { + var property = App.Current.Properties[key] as string; + if (property != null) + { + return ToItems(property); + } + return null; + } + public void LoadBookmarkCollection() + { + var items = GetBookmarkCollection(BookmarkCollectionNames[BookmarkCollectionIndex]); + BookmarkCollection.Clear(); + if (items != null) + { + items.ForEach(item => BookmarkCollection.Add(item)); } } - public async Task SaveBookmarksAsync() + public async Task AddBookmarkAsync(string key, Item item) { - foreach(var keyValues in BookmarksKeyValues) + var linkItem = new LinkItem() { Name = item.Name, AltName = item.AltName, Link = item.Id }; + var items = GetBookmarkCollection(key); + if(items == null) { - App.Current.Properties[keyValues.Key] = ToString(keyValues.Value); + items = new List(); } + items.Add(linkItem); + await SaveBookmarksAsync(key, items); + LoadBookmarkCollection(); + } + + public async Task SaveBookmarksAsync(string key, List items) + { + App.Current.Properties[key] = ToString(items); await App.Current.SavePropertiesAsync(); } diff --git a/AideDeJeu/AideDeJeu/ViewModels/Navigator.cs b/AideDeJeu/AideDeJeu/ViewModels/Navigator.cs index d154bb53..13764e83 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/Navigator.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/Navigator.cs @@ -77,10 +77,8 @@ namespace AideDeJeu.ViewModels } //await Application.Current.MainPage.DisplayAlert("Id", item.Id, "OK"); var vm = Main.Bookmarks; - var result = await Application.Current.MainPage.DisplayActionSheet("Ajouter à", "Annuler", "Nouvelle liste", vm.BookmarksKeyValues.Select(kv => kv.Key).ToArray()); - var kval = vm.BookmarksKeyValues.FirstOrDefault(kv => kv.Key == result); - kval.Value.Add(item); - await vm.SaveBookmarksAsync(); + var result = await Application.Current.MainPage.DisplayActionSheet("Ajouter à", "Annuler", "Nouvelle liste", vm.BookmarkCollectionNames.ToArray()); + await vm.AddBookmarkAsync(result, item); } public async Task GotoItemDetailPageAsync(Item item) diff --git a/AideDeJeu/AideDeJeu/Views/BookmarksPage.xaml b/AideDeJeu/AideDeJeu/Views/BookmarksPage.xaml index 4c58e6e9..c3c44385 100644 --- a/AideDeJeu/AideDeJeu/Views/BookmarksPage.xaml +++ b/AideDeJeu/AideDeJeu/Views/BookmarksPage.xaml @@ -16,17 +16,17 @@ - + -