mirror of
https://github.com/Nioux/AideDeJeu.git
synced 2025-10-30 15:06:06 +00:00
Recablage filtres
This commit is contained in:
parent
e04be9e458
commit
c4c7c87ee8
5 changed files with 59 additions and 41 deletions
|
|
@ -109,19 +109,19 @@ namespace AideDeJeu.Tools
|
|||
|
||||
public class ItemSourceTypeToStringConverter : ItemSourceTypeConverter<string> { }
|
||||
|
||||
public class ItemSourceTypeToFilterConverter : IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
var vm = DependencyService.Get<ItemsViewModel>();
|
||||
var itemSourceType = vm.ItemSourceType;
|
||||
return vm.Main.GetFilterViewModel(itemSourceType).Filters;
|
||||
}
|
||||
//public class ItemSourceTypeToFilterConverter : IValueConverter
|
||||
//{
|
||||
// public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
// {
|
||||
// var vm = DependencyService.Get<ItemsViewModel>();
|
||||
// var itemSourceType = vm.ItemSourceType;
|
||||
// return vm.Main.GetFilterViewModel(itemSourceType).Filters;
|
||||
// }
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
// public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
// {
|
||||
// return null;
|
||||
// }
|
||||
//}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ namespace AideDeJeu.ViewModels
|
|||
{
|
||||
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 IEnumerable<Filter> Filters { get; }
|
||||
private string _SearchText = "";
|
||||
|
|
@ -23,10 +23,27 @@ namespace AideDeJeu.ViewModels
|
|||
set
|
||||
{
|
||||
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
|
||||
|
|
@ -64,7 +81,6 @@ namespace AideDeJeu.ViewModels
|
|||
if (_Index != value)
|
||||
{
|
||||
SetProperty(ref _Index, value);
|
||||
Main.LoadItemsCommand.Execute(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -95,6 +111,7 @@ namespace AideDeJeu.ViewModels
|
|||
_Filters = new List<Filter>()
|
||||
{
|
||||
};
|
||||
RegisterFilters();
|
||||
}
|
||||
return _Filters;
|
||||
}
|
||||
|
|
@ -140,12 +157,12 @@ namespace AideDeJeu.ViewModels
|
|||
new Filter() { Key = FilterKeys.Ritual, Name = "Rituel", KeyValues = Rituels, _Index = 0 },
|
||||
new Filter() { Key = FilterKeys.Source, Name = "Source", KeyValues = Sources, _Index = 0 },
|
||||
};
|
||||
RegisterFilters();
|
||||
}
|
||||
return _Filters;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default)
|
||||
{
|
||||
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.Source, Name = "Source", KeyValues = Sources, _Index = 0 },
|
||||
};
|
||||
RegisterFilters();
|
||||
}
|
||||
return _Filters;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,9 +17,15 @@ namespace AideDeJeu.ViewModels
|
|||
public ItemsViewModel(ItemSourceType itemSourceType)
|
||||
{
|
||||
this.ItemSourceType = itemSourceType;
|
||||
Filter = Main.GetFilterViewModel(ItemSourceType);
|
||||
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 async Task ExecuteGotoItemCommandAsync(Item item)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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.SpellHD, new Lazy<ItemsViewModel>(() => new ItemsViewModel(ItemSourceType.SpellHD)) },
|
||||
{ ItemSourceType.MonsterVO, new Lazy<ItemsViewModel>(() => new ItemsViewModel(ItemSourceType.MonsterVO)) },
|
||||
{ ItemSourceType.MonsterHD, new Lazy<ItemsViewModel>(() => new ItemsViewModel(ItemSourceType.MonsterHD)) },
|
||||
{ ItemSourceType.ConditionHD, new Lazy<ItemsViewModel>(() => new ItemsViewModel(ItemSourceType.ConditionHD)) },
|
||||
{ ItemSourceType.ConditionVO, new Lazy<ItemsViewModel>(() => new ItemsViewModel(ItemSourceType.ConditionVO)) },
|
||||
{ ItemSourceType.SpellVO, () => new ItemsViewModel(ItemSourceType.SpellVO) },
|
||||
{ ItemSourceType.SpellHD, () => new ItemsViewModel(ItemSourceType.SpellHD) },
|
||||
{ ItemSourceType.MonsterVO, () => new ItemsViewModel(ItemSourceType.MonsterVO) },
|
||||
{ ItemSourceType.MonsterHD, () => new ItemsViewModel(ItemSourceType.MonsterHD) },
|
||||
{ ItemSourceType.ConditionHD, () => new ItemsViewModel(ItemSourceType.ConditionHD) },
|
||||
{ ItemSourceType.ConditionVO, () => new ItemsViewModel(ItemSourceType.ConditionVO) },
|
||||
};
|
||||
|
||||
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.SpellHD, new Lazy<FilterViewModel>(() => new HDSpellFilterViewModel()) },
|
||||
{ ItemSourceType.MonsterVO, new Lazy<FilterViewModel>(() => new VOMonsterFilterViewModel()) },
|
||||
{ ItemSourceType.MonsterHD, new Lazy<FilterViewModel>(() => new HDMonsterFilterViewModel()) },
|
||||
{ ItemSourceType.ConditionHD, new Lazy<FilterViewModel>(() => new SearchFilterViewModel()) },
|
||||
{ ItemSourceType.ConditionVO, new Lazy<FilterViewModel>(() => new SearchFilterViewModel()) },
|
||||
{ ItemSourceType.SpellVO, () => new VOSpellFilterViewModel() },
|
||||
{ ItemSourceType.SpellHD, () => new HDSpellFilterViewModel() },
|
||||
{ ItemSourceType.MonsterVO, () => new VOMonsterFilterViewModel() },
|
||||
{ ItemSourceType.MonsterHD, () => new HDMonsterFilterViewModel() },
|
||||
{ ItemSourceType.ConditionHD, () => new SearchFilterViewModel() },
|
||||
{ ItemSourceType.ConditionVO, () => new SearchFilterViewModel() },
|
||||
};
|
||||
|
||||
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
|
||||
|
|
@ -153,7 +153,6 @@ namespace AideDeJeu.ViewModels
|
|||
public Command SwitchToSpellsVO { get; private set; }
|
||||
public Command SwitchToMonstersVO { get; private set; }
|
||||
public Command AboutCommand { get; private set; }
|
||||
public Command<string> SearchCommand { get; private set; }
|
||||
|
||||
public Navigator Navigator { get; set; }
|
||||
|
||||
|
|
@ -173,11 +172,6 @@ namespace AideDeJeu.ViewModels
|
|||
//SwitchToSpellsVO = new Command(() => ItemSourceType = ItemSourceType.SpellVO);
|
||||
//SwitchToMonstersVO = new Command(() => ItemSourceType = ItemSourceType.MonsterVO);
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
<MasterDetailPage.Resources>
|
||||
<ResourceDictionary>
|
||||
<tools:ItemSourceTypeToStringConverter x:Key="ItemSourceTypeToTitleConverter" SpellVO="Spells" SpellHD="Sorts (H&D)" MonsterVO="Monsters" MonsterHD="Créatures (H&D)" />
|
||||
<tools:ItemSourceTypeToFilterConverter x:Key="ItemSourceTypeToFilterConverter" />
|
||||
<!--<tools:ItemSourceTypeToFilterConverter x:Key="ItemSourceTypeToFilterConverter" />-->
|
||||
</ResourceDictionary>
|
||||
</MasterDetailPage.Resources>
|
||||
<MasterDetailPage.Master>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue