diff --git a/AideDeJeu/AideDeJeu/Models/Items/Item.cs b/AideDeJeu/AideDeJeu/Models/Items/Item.cs index d9d6b322..6acc1644 100644 --- a/AideDeJeu/AideDeJeu/Models/Items/Item.cs +++ b/AideDeJeu/AideDeJeu/Models/Items/Item.cs @@ -351,9 +351,44 @@ namespace AideDeJeuLib return $"{Name} ({NewId})"; } + static IDeserializer _Deserializer = new DeserializerBuilder().WithNamingConvention(new PascalCaseNamingConvention()).Build(); + static ISerializer _Serializer = new SerializerBuilder().WithNamingConvention(new PascalCaseNamingConvention()).Build(); + [NotMapped] [IgnoreDataMember] - public virtual OrderedDictionary Attributes { get; set; } = new OrderedDictionary(); + public virtual OrderedDictionary Attributes + { + get + { + if (string.IsNullOrEmpty(AttributesDictionary)) + { + return new OrderedDictionary(); + } + else + { + //var builder = new DeserializerBuilder(); + //var deserializer = builder + // .WithNamingConvention(new PascalCaseNamingConvention()) + // .Build(); + return _Deserializer.Deserialize(AttributesDictionary); + } + } + set + { + if (value == null) + { + AttributesDictionary = null; + } + else + { + //var builder = new SerializerBuilder(); + //var serializer = builder + // .WithNamingConvention(new PascalCaseNamingConvention()) + // .Build(); + AttributesDictionary = _Serializer.Serialize(value); + } + } + }// = new OrderedDictionary(); public virtual OrderedDictionary AttributesKeyValue { @@ -364,25 +399,25 @@ namespace AideDeJeuLib } [DataMember] - public virtual string AttributesDictionary - { - get - { - var builder = new SerializerBuilder(); - var serializer = builder - .WithNamingConvention(new PascalCaseNamingConvention()) - .Build(); - return serializer.Serialize(Attributes); - } - set - { - var builder = new DeserializerBuilder(); - var deserializer = builder - .WithNamingConvention(new PascalCaseNamingConvention()) - .Build(); - Attributes = deserializer.Deserialize(value); - } - } + public virtual string AttributesDictionary { get; set; } + // { + // get + // { + // var builder = new SerializerBuilder(); + // var serializer = builder + // .WithNamingConvention(new PascalCaseNamingConvention()) + // .Build(); + // return serializer.Serialize(Attributes); + // } + // set + // { + // var builder = new DeserializerBuilder(); + //var deserializer = builder + // .WithNamingConvention(new PascalCaseNamingConvention()) + // .Build(); + //Attributes = deserializer.Deserialize(value); + // } + // } public virtual void ResetAttribute(string name) { diff --git a/AideDeJeu/AideDeJeu/ViewModels/Library/FilterViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/Library/FilterViewModel.cs index 3ab51c0f..312fea8b 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/Library/FilterViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/Library/FilterViewModel.cs @@ -251,7 +251,8 @@ namespace AideDeJeu.ViewModels.Library ( (Helpers.RemoveDiacritics(spell.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) || (Helpers.RemoveDiacritics(spell.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) - )).OrderBy(spell => Helpers.RemoveDiacritics(spell.Name)).ToList(); + )).OrderBy(spell => Helpers.RemoveDiacritics(spell.Name) + ).ToList(); } } catch diff --git a/AideDeJeu/AideDeJeu/ViewModels/Library/ItemsViewModel.cs b/AideDeJeu/AideDeJeu/ViewModels/Library/ItemsViewModel.cs index 23ee73c1..1a2c63e8 100644 --- a/AideDeJeu/AideDeJeu/ViewModels/Library/ItemsViewModel.cs +++ b/AideDeJeu/AideDeJeu/ViewModels/Library/ItemsViewModel.cs @@ -119,7 +119,10 @@ namespace AideDeJeu.ViewModels.Library { if (Filter != null) { + var start = DateTime.Now; var items = await Task.Run(async() => await Filter.GetFilteredItemsAsync(cancellationToken: cancellationToken)); + var end = DateTime.Now; + Debug.WriteLine((end - start).TotalMilliseconds); Items = new Item(items.ToList()); Children = items; } diff --git a/AideDeJeu/AideDeJeu/Views/PlayerCharacter/PdfViewPage.xaml.cs b/AideDeJeu/AideDeJeu/Views/PlayerCharacter/PdfViewPage.xaml.cs index 0569ae25..e64078d9 100644 --- a/AideDeJeu/AideDeJeu/Views/PlayerCharacter/PdfViewPage.xaml.cs +++ b/AideDeJeu/AideDeJeu/Views/PlayerCharacter/PdfViewPage.xaml.cs @@ -46,23 +46,66 @@ namespace AideDeJeu.Views.PlayerCharacter private async Task ExecuteShareCommandAsync() { - var result = await DisplayActionSheet("Actions", "Annuler", null, "Envoyer vers...", "Ouvrir avec..."); - if(result == "Ouvrir avec...") + var SendTo = "Envoyer vers..."; + var OpenWith = "Ouvrir avec..."; + var SaveTo = "Enregistrer sous..."; + var commands = new List(); + switch(Device.RuntimePlatform) { - string filePath = Path.Combine(Xamarin.Essentials.FileSystem.CacheDirectory, Path.Combine("pdf", WebUtility.UrlEncode(PdfFile.Result))); - await DependencyService.Get().OpenPdfAsync(filePath); - + case Device.Android: + commands.Add(SendTo); + commands.Add(OpenWith); + break; + case Device.UWP: + commands.Add(SendTo); + commands.Add(OpenWith); + commands.Add(SaveTo); + break; + case Device.iOS: + commands.Add(SendTo); + break; } - if(result == "Envoyer vers...") + string result = null; + if (commands.Count > 1) { - string filePath = Path.Combine(Xamarin.Essentials.FileSystem.CacheDirectory, Path.Combine("pdf", WebUtility.UrlEncode(PdfFile.Result))); - - await Xamarin.Essentials.Share.RequestAsync(new Xamarin.Essentials.ShareFileRequest - { - Title = PdfFile.Result, - File = new Xamarin.Essentials.ShareFile(filePath) - }); + result = await DisplayActionSheet("Actions", "Annuler", null, commands.ToArray()); } + else + { + result = commands.FirstOrDefault(); + } + if(result == OpenWith) + { + await OpenWithAsync(PdfFile.Result); + } + else if(result == SendTo) + { + await SendToAsync(PdfFile.Result); + } + else if (result == SaveTo) + { + await SaveToAsync(PdfFile.Result); + } + } + + private async Task OpenWithAsync(string filename) + { + string filePath = Path.Combine(Xamarin.Essentials.FileSystem.CacheDirectory, Path.Combine("pdf", WebUtility.UrlEncode(filename))); + await DependencyService.Get().OpenPdfAsync(filePath); + } + + private async Task SendToAsync(string filename) + { + string filePath = Path.Combine(Xamarin.Essentials.FileSystem.CacheDirectory, Path.Combine("pdf", WebUtility.UrlEncode(filename))); + await Xamarin.Essentials.Share.RequestAsync(new Xamarin.Essentials.ShareFileRequest + { + Title = PdfFile.Result, + File = new Xamarin.Essentials.ShareFile(filePath) + }); + } + private async Task SaveToAsync(string filename) + { + string filePath = Path.Combine(Xamarin.Essentials.FileSystem.CacheDirectory, Path.Combine("pdf", WebUtility.UrlEncode(filename))); } } } \ No newline at end of file