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

Recablage filtres

This commit is contained in:
Yan Maniez 2018-07-14 00:58:17 +02:00
parent e04be9e458
commit c4c7c87ee8
5 changed files with 59 additions and 41 deletions

View file

@ -109,19 +109,19 @@ namespace AideDeJeu.Tools
public class ItemSourceTypeToStringConverter : ItemSourceTypeConverter<string> { } public class ItemSourceTypeToStringConverter : ItemSourceTypeConverter<string> { }
public class ItemSourceTypeToFilterConverter : IValueConverter //public class ItemSourceTypeToFilterConverter : IValueConverter
{ //{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) // public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{ // {
var vm = DependencyService.Get<ItemsViewModel>(); // var vm = DependencyService.Get<ItemsViewModel>();
var itemSourceType = vm.ItemSourceType; // var itemSourceType = vm.ItemSourceType;
return vm.Main.GetFilterViewModel(itemSourceType).Filters; // return vm.Main.GetFilterViewModel(itemSourceType).Filters;
} // }
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) // public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{ // {
return null; // return null;
} // }
} //}
} }

View file

@ -10,7 +10,7 @@ namespace AideDeJeu.ViewModels
{ {
public abstract class FilterViewModel : BaseViewModel public abstract class FilterViewModel : BaseViewModel
{ {
public ICommand LoadItemsCommand { get; protected set; } public ICommand LoadItemsCommand { get; set; }
public abstract Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken cancellationToken = default); public abstract Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken cancellationToken = default);
public abstract IEnumerable<Filter> Filters { get; } public abstract IEnumerable<Filter> Filters { get; }
private string _SearchText = ""; private string _SearchText = "";
@ -23,10 +23,27 @@ namespace AideDeJeu.ViewModels
set set
{ {
SetProperty(ref _SearchText, value); SetProperty(ref _SearchText, value);
//Main.LoadItemsCommand.Execute(null); LoadItemsCommand.Execute(null);
} }
} }
protected void RegisterFilters()
{
foreach (var filter in Filters)
{
filter.PropertyChanged += Filter_PropertyChanged;
}
}
protected void Filter_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == "Index")
{
LoadItemsCommand.Execute(null);
}
}
} }
public enum FilterKeys public enum FilterKeys
@ -64,7 +81,6 @@ namespace AideDeJeu.ViewModels
if (_Index != value) if (_Index != value)
{ {
SetProperty(ref _Index, value); SetProperty(ref _Index, value);
Main.LoadItemsCommand.Execute(null);
} }
} }
} }
@ -95,6 +111,7 @@ namespace AideDeJeu.ViewModels
_Filters = new List<Filter>() _Filters = new List<Filter>()
{ {
}; };
RegisterFilters();
} }
return _Filters; return _Filters;
} }
@ -140,12 +157,12 @@ namespace AideDeJeu.ViewModels
new Filter() { Key = FilterKeys.Ritual, Name = "Rituel", KeyValues = Rituels, _Index = 0 }, new Filter() { Key = FilterKeys.Ritual, Name = "Rituel", KeyValues = Rituels, _Index = 0 },
new Filter() { Key = FilterKeys.Source, Name = "Source", KeyValues = Sources, _Index = 0 }, new Filter() { Key = FilterKeys.Source, Name = "Source", KeyValues = Sources, _Index = 0 },
}; };
RegisterFilters();
} }
return _Filters; return _Filters;
} }
} }
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default) public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default)
{ {
return await Task.Run(() => return await Task.Run(() =>
@ -378,6 +395,7 @@ namespace AideDeJeu.ViewModels
//new Filter() { Key = FilterKeys.Legendary, Name = "Légendaire", KeyValues = Legendaries, _Index = 0 }, //new Filter() { Key = FilterKeys.Legendary, Name = "Légendaire", KeyValues = Legendaries, _Index = 0 },
new Filter() { Key = FilterKeys.Source, Name = "Source", KeyValues = Sources, _Index = 0 }, new Filter() { Key = FilterKeys.Source, Name = "Source", KeyValues = Sources, _Index = 0 },
}; };
RegisterFilters();
} }
return _Filters; return _Filters;
} }

View file

@ -17,9 +17,15 @@ namespace AideDeJeu.ViewModels
public ItemsViewModel(ItemSourceType itemSourceType) public ItemsViewModel(ItemSourceType itemSourceType)
{ {
this.ItemSourceType = itemSourceType; this.ItemSourceType = itemSourceType;
Filter = Main.GetFilterViewModel(ItemSourceType);
LoadItemsCommand = new Command(async () => await ExecuteLoadItemsCommandAsync().ConfigureAwait(false)); LoadItemsCommand = new Command(async () => await ExecuteLoadItemsCommandAsync().ConfigureAwait(false));
Filter = Main.GetFilterViewModel(ItemSourceType);
Filter.LoadItemsCommand = LoadItemsCommand;
SearchCommand = new Command<string>((text) =>
{
Filter.SearchText = text;
});
} }
public Command<string> SearchCommand { get; private set; }
public ICommand LoadItemsCommand { get; protected set; } public ICommand LoadItemsCommand { get; protected set; }
public async Task ExecuteGotoItemCommandAsync(Item item) public async Task ExecuteGotoItemCommandAsync(Item item)
{ {

View file

@ -101,34 +101,34 @@ namespace AideDeJeu.ViewModels
} }
} }
public Dictionary<ItemSourceType, Lazy<ItemsViewModel>> AllItemsViewModel = new Dictionary<ItemSourceType, Lazy<ItemsViewModel>>() public Dictionary<ItemSourceType, Func<ItemsViewModel>> AllItemsViewModel = new Dictionary<ItemSourceType, Func<ItemsViewModel>>()
{ {
{ ItemSourceType.SpellVO, new Lazy<ItemsViewModel>(() => new ItemsViewModel(ItemSourceType.SpellVO)) }, { ItemSourceType.SpellVO, () => new ItemsViewModel(ItemSourceType.SpellVO) },
{ ItemSourceType.SpellHD, new Lazy<ItemsViewModel>(() => new ItemsViewModel(ItemSourceType.SpellHD)) }, { ItemSourceType.SpellHD, () => new ItemsViewModel(ItemSourceType.SpellHD) },
{ ItemSourceType.MonsterVO, new Lazy<ItemsViewModel>(() => new ItemsViewModel(ItemSourceType.MonsterVO)) }, { ItemSourceType.MonsterVO, () => new ItemsViewModel(ItemSourceType.MonsterVO) },
{ ItemSourceType.MonsterHD, new Lazy<ItemsViewModel>(() => new ItemsViewModel(ItemSourceType.MonsterHD)) }, { ItemSourceType.MonsterHD, () => new ItemsViewModel(ItemSourceType.MonsterHD) },
{ ItemSourceType.ConditionHD, new Lazy<ItemsViewModel>(() => new ItemsViewModel(ItemSourceType.ConditionHD)) }, { ItemSourceType.ConditionHD, () => new ItemsViewModel(ItemSourceType.ConditionHD) },
{ ItemSourceType.ConditionVO, new Lazy<ItemsViewModel>(() => new ItemsViewModel(ItemSourceType.ConditionVO)) }, { ItemSourceType.ConditionVO, () => new ItemsViewModel(ItemSourceType.ConditionVO) },
}; };
public ItemsViewModel GetItemsViewModel(ItemSourceType itemSourceType) public ItemsViewModel GetItemsViewModel(ItemSourceType itemSourceType)
{ {
return AllItemsViewModel[itemSourceType].Value; return AllItemsViewModel[itemSourceType].Invoke();
} }
public Dictionary<ItemSourceType, Lazy<FilterViewModel>> AllFiltersViewModel = new Dictionary<ItemSourceType, Lazy<FilterViewModel>>() public Dictionary<ItemSourceType, Func<FilterViewModel>> AllFiltersViewModel = new Dictionary<ItemSourceType, Func<FilterViewModel>>()
{ {
{ ItemSourceType.SpellVO, new Lazy<FilterViewModel>(() => new VOSpellFilterViewModel()) }, { ItemSourceType.SpellVO, () => new VOSpellFilterViewModel() },
{ ItemSourceType.SpellHD, new Lazy<FilterViewModel>(() => new HDSpellFilterViewModel()) }, { ItemSourceType.SpellHD, () => new HDSpellFilterViewModel() },
{ ItemSourceType.MonsterVO, new Lazy<FilterViewModel>(() => new VOMonsterFilterViewModel()) }, { ItemSourceType.MonsterVO, () => new VOMonsterFilterViewModel() },
{ ItemSourceType.MonsterHD, new Lazy<FilterViewModel>(() => new HDMonsterFilterViewModel()) }, { ItemSourceType.MonsterHD, () => new HDMonsterFilterViewModel() },
{ ItemSourceType.ConditionHD, new Lazy<FilterViewModel>(() => new SearchFilterViewModel()) }, { ItemSourceType.ConditionHD, () => new SearchFilterViewModel() },
{ ItemSourceType.ConditionVO, new Lazy<FilterViewModel>(() => new SearchFilterViewModel()) }, { ItemSourceType.ConditionVO, () => new SearchFilterViewModel() },
}; };
public FilterViewModel GetFilterViewModel(ItemSourceType itemSourceType) public FilterViewModel GetFilterViewModel(ItemSourceType itemSourceType)
{ {
return AllFiltersViewModel[itemSourceType].Value; return AllFiltersViewModel[itemSourceType].Invoke();
} }
// Yan : pas besoin d'ObservableCollection, on ne modifie jamais la liste item par item // Yan : pas besoin d'ObservableCollection, on ne modifie jamais la liste item par item
@ -153,7 +153,6 @@ namespace AideDeJeu.ViewModels
public Command SwitchToSpellsVO { get; private set; } public Command SwitchToSpellsVO { get; private set; }
public Command SwitchToMonstersVO { get; private set; } public Command SwitchToMonstersVO { get; private set; }
public Command AboutCommand { get; private set; } public Command AboutCommand { get; private set; }
public Command<string> SearchCommand { get; private set; }
public Navigator Navigator { get; set; } public Navigator Navigator { get; set; }
@ -173,11 +172,6 @@ namespace AideDeJeu.ViewModels
//SwitchToSpellsVO = new Command(() => ItemSourceType = ItemSourceType.SpellVO); //SwitchToSpellsVO = new Command(() => ItemSourceType = ItemSourceType.SpellVO);
//SwitchToMonstersVO = new Command(() => ItemSourceType = ItemSourceType.MonsterVO); //SwitchToMonstersVO = new Command(() => ItemSourceType = ItemSourceType.MonsterVO);
AboutCommand = new Command(async () => await Main.Navigator.GotoAboutPageAsync()); AboutCommand = new Command(async () => await Main.Navigator.GotoAboutPageAsync());
SearchCommand = new Command<string>(async (text) =>
{
//GetFilterViewModel(ItemSourceType).SearchText = text;
//await GetItemsViewModel(ItemSourceType).ExecuteLoadItemsCommandAsync();
});
} }
ItemSourceType MDFileToItemSourceType(string file) ItemSourceType MDFileToItemSourceType(string file)

View file

@ -14,7 +14,7 @@
<MasterDetailPage.Resources> <MasterDetailPage.Resources>
<ResourceDictionary> <ResourceDictionary>
<tools:ItemSourceTypeToStringConverter x:Key="ItemSourceTypeToTitleConverter" SpellVO="Spells" SpellHD="Sorts (H&amp;D)" MonsterVO="Monsters" MonsterHD="Créatures (H&amp;D)" /> <tools:ItemSourceTypeToStringConverter x:Key="ItemSourceTypeToTitleConverter" SpellVO="Spells" SpellHD="Sorts (H&amp;D)" MonsterVO="Monsters" MonsterHD="Créatures (H&amp;D)" />
<tools:ItemSourceTypeToFilterConverter x:Key="ItemSourceTypeToFilterConverter" /> <!--<tools:ItemSourceTypeToFilterConverter x:Key="ItemSourceTypeToFilterConverter" />-->
</ResourceDictionary> </ResourceDictionary>
</MasterDetailPage.Resources> </MasterDetailPage.Resources>
<MasterDetailPage.Master> <MasterDetailPage.Master>