mirror of
https://github.com/Nioux/AideDeJeu.git
synced 2025-10-31 23:45:39 +00:00
Test bookmarks
This commit is contained in:
parent
fba3966ae9
commit
b5670b5614
6 changed files with 124 additions and 14 deletions
|
|
@ -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" });
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue