1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-31 07:26:09 +00:00

Test bookmarks

This commit is contained in:
Yan Maniez 2018-08-28 13:44:40 +02:00
parent fba3966ae9
commit b5670b5614
6 changed files with 124 additions and 14 deletions

View file

@ -15,6 +15,7 @@ namespace AideDeJeu
InitializeComponent(); InitializeComponent();
DependencyService.Register<MainViewModel>(); DependencyService.Register<MainViewModel>();
DependencyService.Register<BookmarksViewModel>();
var vm = DependencyService.Get<MainViewModel>(); var vm = DependencyService.Get<MainViewModel>();
var tabbeddPage = new AideDeJeu.Views.MainTabbedPage(); var tabbeddPage = new AideDeJeu.Views.MainTabbedPage();
//var mainPage = new ItemDetailPage(new ItemDetailViewModel(new HomeItem()) { Title = "Haches & Dés" }); //var mainPage = new ItemDetailPage(new ItemDetailViewModel(new HomeItem()) { Title = "Haches & Dés" });

View file

@ -1,13 +1,28 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Text; using System.Text;
using Markdig.Syntax; using Markdig.Syntax;
namespace AideDeJeuLib namespace AideDeJeuLib
{ {
[DataContract]
public class HomeItem : Item public class HomeItem : Item
{ {
public new string Markdown [DataMember]
public override string Id
{
get
{
return "index.md";
}
set
{
}
}
[DataMember]
public override string Markdown
{ {
get get
{ {

View file

@ -1,15 +1,22 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Xml; using System.Xml;
namespace AideDeJeuLib namespace AideDeJeuLib
{ {
[DataContract]
public class Item public class Item
{ {
public string Id { get; set; } [DataMember]
public virtual string Id { get; set; }
[DataMember]
public string Name { get; set; } public string Name { get; set; }
[DataMember]
public int NameLevel { get; set; } public int NameLevel { get; set; }
[DataMember]
public string AltName { get; set; } public string AltName { get; set; }
[IgnoreDataMember]
public string AltNameText public string AltNameText
{ {
get get
@ -32,7 +39,9 @@ namespace AideDeJeuLib
} }
} }
} }
[DataMember]
public string Source { get; set; } public string Source { get; set; }
public string Markdown { get; set; } [DataMember]
public virtual string Markdown { get; set; }
} }
} }

View file

@ -16,6 +16,13 @@ namespace AideDeJeu.ViewModels
return DependencyService.Get<MainViewModel>(); return DependencyService.Get<MainViewModel>();
} }
} }
public BookmarksViewModel Bookmarks
{
get
{
return DependencyService.Get<BookmarksViewModel>();
}
}
bool isBusy = false; bool isBusy = false;
public bool IsBusy public bool IsBusy

View file

@ -1,21 +1,96 @@
using AideDeJeuLib; using AideDeJeuLib;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Json;
using System.Text; using System.Text;
using System.Threading.Tasks;
namespace AideDeJeu.ViewModels namespace AideDeJeu.ViewModels
{ {
public class BookmarksViewModel : BaseViewModel public class BookmarksViewModel //: BaseViewModel
{ {
public List<KeyValuePair<string, IEnumerable<Item>>> BookmarksKeyValues { get; set; } = new List<KeyValuePair<string, IEnumerable<Item>>>() public BookmarksViewModel()
{ {
new KeyValuePair<string, IEnumerable<Item>>("Général", new List<Item>()), LoadBookmarks();
new KeyValuePair<string, IEnumerable<Item>>("Grimoire", new List<Item>()), }
new KeyValuePair<string, IEnumerable<Item>>("Bestiaire", new List<Item>()),
new KeyValuePair<string, IEnumerable<Item>>("Sac", new List<Item>()), public List<KeyValuePair<string, List<Item>>> BookmarksKeyValues { get; set; } = new List<KeyValuePair<string, List<Item>>>()
{
new KeyValuePair<string, List<Item>>("Général", new List<Item>()),
new KeyValuePair<string, List<Item>>("Grimoire", new List<Item>()),
new KeyValuePair<string, List<Item>>("Bestiaire", new List<Item>()),
new KeyValuePair<string, List<Item>>("Sac", new List<Item>()),
}; };
public int BookmarksIndex { get; set; } = 0; public int BookmarksIndex { get; set; } = 0;
public IEnumerable<Item> Bookmarks { get; set; } public List<Item> Bookmarks { get; set; }
public int BookmarksCount { get; set; } = 0; public int BookmarksCount { get; set; } = 0;
public void LoadBookmarks()
{
foreach(var key in App.Current.Properties.Keys)
{
var property = App.Current.Properties[key] as string;
if(property != null)
{
BookmarksKeyValues.Add(new KeyValuePair<string, List<Item>>(key, ToItems(property)));
}
}
}
public async Task SaveBookmarksAsync()
{
foreach(var keyValues in BookmarksKeyValues)
{
App.Current.Properties[keyValues.Key] = ToString(keyValues.Value);
}
await App.Current.SavePropertiesAsync();
}
public string ToString(List<Item> items)
{
var serializer = ItemJsonSerializer;
using(var stream = new MemoryStream())
{
serializer.WriteObject(stream, items);
stream.Seek(0, SeekOrigin.Begin);
using (StreamReader reader = new StreamReader(stream))
{
return reader.ReadToEnd();
}
}
}
public List<Item> ToItems(string str)
{
var serializer = ItemJsonSerializer;
byte[] byteArray = Encoding.UTF8.GetBytes(str);
using (var stream = new MemoryStream(byteArray))
{
return serializer.ReadObject(stream) as List<Item>;
}
}
public DataContractJsonSerializer ItemJsonSerializer
{
get
{
var settings = new DataContractJsonSerializerSettings();
settings.KnownTypes = new List<Type>()
{
typeof(HomeItem),
typeof(Spell),
typeof(Monster),
//typeof(Items),
typeof(LinkItem),
typeof(Equipment),
//typeof(Spells),
//typeof(Monsters),
//typeof(Equipments),
typeof(PageItem),
};
return new DataContractJsonSerializer(typeof(List<Item>), settings);
}
}
} }
} }

View file

@ -73,11 +73,14 @@ namespace AideDeJeu.ViewModels
} }
else if(context is ItemsViewModel) else if(context is ItemsViewModel)
{ {
item = (context as ItemsViewModel).Items; item = (context as ItemsViewModel).AllItems;
} }
await Application.Current.MainPage.DisplayAlert("Id", item.Id, "OK"); //await Application.Current.MainPage.DisplayAlert("Id", item.Id, "OK");
var vm = new BookmarksViewModel(); var vm = Main.Bookmarks;
await Application.Current.MainPage.DisplayActionSheet("Ajouter à", "Annuler", "Nouvelle liste", vm.BookmarksKeyValues.Select(kv => kv.Key).ToArray()); 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();
} }
public async Task GotoItemDetailPageAsync(Item item) public async Task GotoItemDetailPageAsync(Item item)