1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-30 15:06:06 +00:00

Meilleure gestion filtres async

This commit is contained in:
Yan Maniez 2018-10-20 22:10:13 +02:00
parent f1a726e6b1
commit f9b6df738b
5 changed files with 99 additions and 99 deletions

View file

@ -43,7 +43,7 @@ namespace AideDeJeu.Droid
{ {
using (var outStream = new FileStream(path, FileMode.Create)) using (var outStream = new FileStream(path, FileMode.Create))
{ {
inStream.CopyTo(outStream); await inStream.CopyToAsync(outStream);
} }
} }
//using (var binaryReader = new BinaryReader(Android.App.Application.Context.Assets.Open(databaseName))) //using (var binaryReader = new BinaryReader(Android.App.Application.Context.Assets.Open(databaseName)))

View file

@ -1,6 +1,7 @@
using AideDeJeu.Tools; using AideDeJeu.Tools;
using System; using System;
using System.IO; using System.IO;
using System.Threading.Tasks;
[assembly: Xamarin.Forms.Dependency(typeof(AideDeJeu.GTK.Version_GTK))] [assembly: Xamarin.Forms.Dependency(typeof(AideDeJeu.GTK.Version_GTK))]
namespace AideDeJeu.GTK namespace AideDeJeu.GTK
@ -28,7 +29,7 @@ namespace AideDeJeu.GTK
//return info.VersionCode; //return info.VersionCode;
} }
public string GetDatabasePath(string databaseName) public async Task<string> GetDatabasePathAsync(string databaseName)
{ {
return null; return null;
//var documentsDirectoryPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); //var documentsDirectoryPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);

View file

@ -35,7 +35,7 @@ namespace AideDeJeu.UWP
{ {
using (var outStream = new FileStream(path, FileMode.Create)) using (var outStream = new FileStream(path, FileMode.Create))
{ {
inStream.CopyTo(outStream); await inStream.CopyToAsync(outStream);
} }
} }
} }

View file

@ -1,6 +1,5 @@
using AideDeJeu.Tools; using AideDeJeu.Tools;
using AideDeJeuLib; using AideDeJeuLib;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
@ -13,7 +12,7 @@ namespace AideDeJeu.ViewModels
public abstract class FilterViewModel : BaseViewModel public abstract class FilterViewModel : BaseViewModel
{ {
public ICommand LoadItemsCommand { get; set; } public ICommand LoadItemsCommand { get; set; }
public abstract Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken cancellationToken = default); public abstract Task<IEnumerable<Item>> GetFilteredItemsAsync(CancellationToken cancellationToken = default);
public abstract IEnumerable<Filter> Filters { get; } public abstract IEnumerable<Filter> Filters { get; }
private string _SearchText = ""; private string _SearchText = "";
public string SearchText public string SearchText
@ -139,43 +138,43 @@ namespace AideDeJeu.ViewModels
} }
} }
public class SearchFilterViewModel : FilterViewModel //public class SearchFilterViewModel : FilterViewModel
{ //{
private IEnumerable<Filter> _Filters = null; // private IEnumerable<Filter> _Filters = null;
public override IEnumerable<Filter> Filters // public override IEnumerable<Filter> Filters
{ // {
get // get
{ // {
if (_Filters == null) // if (_Filters == null)
{ // {
_Filters = new List<Filter>() // _Filters = new List<Filter>()
{ // {
}; // };
RegisterFilters(); // RegisterFilters();
} // }
return _Filters; // return _Filters;
} // }
} // }
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default) // public override async Task<IEnumerable<Item>> GetFilteredItemsAsync(CancellationToken token = default)
{ // {
return await Task.Run(() => // return await Task.Run(() =>
{ // {
return items.Where(item => // return items.Where(item =>
{ // {
var spell = item; // var spell = item;
return // return
( // (
(Helpers.RemoveDiacritics(spell.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) || // (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())) // (Helpers.RemoveDiacritics(spell.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
); // );
}).AsEnumerable(); // }).AsEnumerable();
}, token); // }, token);
} // }
} //}
#region Spells #region Spells
@ -249,7 +248,7 @@ namespace AideDeJeu.ViewModels
public class VFSpellFilterViewModel : SpellFilterViewModel public class VFSpellFilterViewModel : SpellFilterViewModel
{ {
public override Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken cancellationToken = default) public override Task<IEnumerable<Item>> GetFilteredItemsAsync(CancellationToken cancellationToken = default)
{ {
throw new System.NotImplementedException(); throw new System.NotImplementedException();
} }
@ -309,7 +308,7 @@ namespace AideDeJeu.ViewModels
public class VOSpellFilterViewModel : SpellFilterViewModel public class VOSpellFilterViewModel : SpellFilterViewModel
{ {
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default) public override async Task<IEnumerable<Item>> GetFilteredItemsAsync(CancellationToken token = default)
{ {
var levelComparer = new LevelComparer(); var levelComparer = new LevelComparer();
var classe = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Class).SelectedKey ?? ""; var classe = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Class).SelectedKey ?? "";
@ -389,7 +388,7 @@ namespace AideDeJeu.ViewModels
public class HDSpellFilterViewModel : SpellFilterViewModel public class HDSpellFilterViewModel : SpellFilterViewModel
{ {
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default) public override async Task<IEnumerable<Item>> GetFilteredItemsAsync(CancellationToken token = default)
{ {
var levelComparer = new LevelComparer(); var levelComparer = new LevelComparer();
var classe = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Class).SelectedKey ?? ""; var classe = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Class).SelectedKey ?? "";
@ -557,7 +556,7 @@ namespace AideDeJeu.ViewModels
public class VFMonsterFilterViewModel : MonsterFilterViewModel public class VFMonsterFilterViewModel : MonsterFilterViewModel
{ {
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default) public override async Task<IEnumerable<Item>> GetFilteredItemsAsync(CancellationToken token = default)
{ {
throw new System.Exception(); throw new System.Exception();
} }
@ -648,7 +647,7 @@ namespace AideDeJeu.ViewModels
public class VOMonsterFilterViewModel : MonsterFilterViewModel public class VOMonsterFilterViewModel : MonsterFilterViewModel
{ {
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default) public override async Task<IEnumerable<Item>> GetFilteredItemsAsync(CancellationToken token = default)
{ {
var powerComparer = new PowerComparer(); var powerComparer = new PowerComparer();
@ -764,7 +763,7 @@ namespace AideDeJeu.ViewModels
public class HDMonsterFilterViewModel : MonsterFilterViewModel public class HDMonsterFilterViewModel : MonsterFilterViewModel
{ {
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default) public override async Task<IEnumerable<Item>> GetFilteredItemsAsync(CancellationToken token = default)
{ {
var powerComparer = new PowerComparer(); var powerComparer = new PowerComparer();
@ -901,7 +900,7 @@ namespace AideDeJeu.ViewModels
} }
} }
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default) public override async Task<IEnumerable<Item>> GetFilteredItemsAsync(CancellationToken token = default)
{ {
var priceComparer = new PriceComparer(); var priceComparer = new PriceComparer();
var type = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Type).SelectedKey ?? ""; var type = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Type).SelectedKey ?? "";
@ -1001,7 +1000,7 @@ namespace AideDeJeu.ViewModels
} }
} }
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default) public override async Task<IEnumerable<Item>> GetFilteredItemsAsync(CancellationToken token = default)
{ {
var priceComparer = new PriceComparer(); var priceComparer = new PriceComparer();
var type = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Type).SelectedKey ?? ""; var type = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Type).SelectedKey ?? "";

View file

@ -119,7 +119,7 @@ namespace AideDeJeu.ViewModels
{ {
if (Filter != null) if (Filter != null)
{ {
var items = await Task.Run(async() => await Filter.FilterItems(await AllItems.GetChildrenAsync(), cancellationToken: cancellationToken)); var items = await Task.Run(async() => await Filter.GetFilteredItemsAsync(cancellationToken: cancellationToken));
Items = new Item(items.ToList()); Items = new Item(items.ToList());
Children = items; Children = items;
} }