mirror of
				https://github.com/Nioux/AideDeJeu.git
				synced 2025-10-30 23:16:09 +00:00 
			
		
		
		
	Début grosse refonte pour gestion vf/vo/hd
This commit is contained in:
		
							parent
							
								
									3e707e57b7
								
							
						
					
					
						commit
						64e236bb8f
					
				
					 14 changed files with 628 additions and 321 deletions
				
			
		|  | @ -12,6 +12,9 @@ EndProject | ||||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AideDeJeu", "AideDeJeu\AideDeJeu\AideDeJeu.csproj", "{C0597D88-5C09-4314-80A3-64712B02D0E9}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AideDeJeu", "AideDeJeu\AideDeJeu\AideDeJeu.csproj", "{C0597D88-5C09-4314-80A3-64712B02D0E9}" | ||||||
| EndProject | EndProject | ||||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AideDeJeuWeb", "AideDeJeu\AideDeJeuWeb\AideDeJeuWeb.csproj", "{D5065DC7-7B51-4D25-8FA5-DDF0F3E6FCE4}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AideDeJeuWeb", "AideDeJeu\AideDeJeuWeb\AideDeJeuWeb.csproj", "{D5065DC7-7B51-4D25-8FA5-DDF0F3E6FCE4}" | ||||||
|  | 	ProjectSection(ProjectDependencies) = postProject | ||||||
|  | 		{C0597D88-5C09-4314-80A3-64712B02D0E9} = {C0597D88-5C09-4314-80A3-64712B02D0E9} | ||||||
|  | 	EndProjectSection | ||||||
| EndProject | EndProject | ||||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AideDeJeuCmd", "AideDeJeu\AideDeJeuCmd\AideDeJeuCmd.csproj", "{9DDAEA8E-7B4F-4CC1-80FC-0D511D230689}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AideDeJeuCmd", "AideDeJeu\AideDeJeuCmd\AideDeJeuCmd.csproj", "{9DDAEA8E-7B4F-4CC1-80FC-0D511D230689}" | ||||||
| 	ProjectSection(ProjectDependencies) = postProject | 	ProjectSection(ProjectDependencies) = postProject | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| using System; | using System; | ||||||
| 
 | using AideDeJeu.ViewModels; | ||||||
| using AideDeJeu.Views; | using AideDeJeu.Views; | ||||||
| using Xamarin.Forms; | using Xamarin.Forms; | ||||||
| using Xamarin.Forms.Xaml; | using Xamarin.Forms.Xaml; | ||||||
|  | @ -14,7 +14,11 @@ namespace AideDeJeu | ||||||
| 		{ | 		{ | ||||||
| 			InitializeComponent(); | 			InitializeComponent(); | ||||||
| 
 | 
 | ||||||
|             MainPage = new MainPage(); |             DependencyService.Register<MainViewModel>(); | ||||||
|  |             var vm = DependencyService.Get<MainViewModel>(); | ||||||
|  |             var mainPage = new MainPage(); | ||||||
|  |             vm.Navigator = new Navigator(mainPage.Detail.Navigation); | ||||||
|  |             MainPage = mainPage; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         protected override void OnStart () |         protected override void OnStart () | ||||||
|  |  | ||||||
|  | @ -1,4 +1,5 @@ | ||||||
| using HtmlAgilityPack; | using AideDeJeu.ViewModels; | ||||||
|  | using HtmlAgilityPack; | ||||||
| using System; | using System; | ||||||
| using System.Collections.Generic; | using System.Collections.Generic; | ||||||
| using System.Globalization; | using System.Globalization; | ||||||
|  | @ -96,12 +97,12 @@ namespace AideDeJeu.Tools | ||||||
| 
 | 
 | ||||||
|         public object Convert(object value, Type targetType, object parameter, CultureInfo culture) |         public object Convert(object value, Type targetType, object parameter, CultureInfo culture) | ||||||
|         { |         { | ||||||
|             var itemType = value as ViewModels.MainViewModel.ItemType?; |             var itemType = value as ItemType?; | ||||||
|             if (itemType == ViewModels.MainViewModel.ItemType.Spell) |             if (itemType == ItemType.Spell) | ||||||
|             { |             { | ||||||
|                 return SpellsTemplate; |                 return SpellsTemplate; | ||||||
|             } |             } | ||||||
|             if (itemType == ViewModels.MainViewModel.ItemType.Monster) |             if (itemType == ItemType.Monster) | ||||||
|             { |             { | ||||||
|                 return MonstersTemplate; |                 return MonstersTemplate; | ||||||
|             } |             } | ||||||
|  | @ -121,12 +122,12 @@ namespace AideDeJeu.Tools | ||||||
| 
 | 
 | ||||||
|         public object Convert(object value, Type targetType, object parameter, CultureInfo culture) |         public object Convert(object value, Type targetType, object parameter, CultureInfo culture) | ||||||
|         { |         { | ||||||
|             var itemType = value as ViewModels.MainViewModel.ItemType?; |             var itemType = value as ItemType?; | ||||||
|             if (itemType == ViewModels.MainViewModel.ItemType.Spell) |             if (itemType == ItemType.Spell) | ||||||
|             { |             { | ||||||
|                 return Spells; |                 return Spells; | ||||||
|             } |             } | ||||||
|             if (itemType == ViewModels.MainViewModel.ItemType.Monster) |             if (itemType == ItemType.Monster) | ||||||
|             { |             { | ||||||
|                 return Monsters; |                 return Monsters; | ||||||
|             } |             } | ||||||
|  | @ -140,4 +141,81 @@ namespace AideDeJeu.Tools | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public class ItemTypeToStringConverter : ItemTypeConverter<string> { } |     public class ItemTypeToStringConverter : ItemTypeConverter<string> { } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     public class ItemSourceTypeConverter<T> : IValueConverter | ||||||
|  |     { | ||||||
|  |         public T SpellVF { get; set; } | ||||||
|  |         public T SpellVO { get; set; } | ||||||
|  |         public T SpellHD { get; set; } | ||||||
|  |         public T MonsterVF { get; set; } | ||||||
|  |         public T MonsterVO { get; set; } | ||||||
|  |         public T MonsterHD { get; set; } | ||||||
|  | 
 | ||||||
|  |         public object Convert(object value, Type targetType, object parameter, CultureInfo culture) | ||||||
|  |         { | ||||||
|  |             //var itemType = value as ItemSourceType?; | ||||||
|  |             //if (itemType == ItemSourceType.SpellVF) | ||||||
|  |             //{ | ||||||
|  |             //    return SpellVF; | ||||||
|  |             //} | ||||||
|  |             //if (itemType == ItemSourceType.SpellVO) | ||||||
|  |             //{ | ||||||
|  |             //    return SpellVO; | ||||||
|  |             //} | ||||||
|  |             //if (itemType == ItemSourceType.SpellHD) | ||||||
|  |             //{ | ||||||
|  |             //    return SpellHD; | ||||||
|  |             //} | ||||||
|  |             //if (itemType == ItemSourceType.MonsterVF) | ||||||
|  |             //{ | ||||||
|  |             //    return MonsterVF; | ||||||
|  |             //} | ||||||
|  |             //if (itemType == ItemSourceType.MonsterVO) | ||||||
|  |             //{ | ||||||
|  |             //    return MonsterVO; | ||||||
|  |             //} | ||||||
|  |             //if (itemType == ItemSourceType.MonsterHD) | ||||||
|  |             //{ | ||||||
|  |             //    return MonsterHD; | ||||||
|  |             //} | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) | ||||||
|  |         { | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public class ItemSourceTypeToItemsConverter : IValueConverter | ||||||
|  |     { | ||||||
|  |         public object Convert(object value, Type targetType, object parameter, CultureInfo culture) | ||||||
|  |         { | ||||||
|  |             var vm = DependencyService.Get<MainViewModel>(); | ||||||
|  |             var itemSourceType = vm.ItemSourceType; | ||||||
|  |             return vm.GetItemsViewModel(itemSourceType); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) | ||||||
|  |         { | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public class ItemSourceTypeToFilterConverter : IValueConverter | ||||||
|  |     { | ||||||
|  |         public object Convert(object value, Type targetType, object parameter, CultureInfo culture) | ||||||
|  |         { | ||||||
|  |             var vm = DependencyService.Get<MainViewModel>(); | ||||||
|  |             var itemSourceType = vm.ItemSourceType; | ||||||
|  |             return vm.GetFilterViewModel(itemSourceType); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) | ||||||
|  |         { | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										21
									
								
								AideDeJeu/AideDeJeu/Tools/Helpers.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								AideDeJeu/AideDeJeu/Tools/Helpers.cs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Reflection; | ||||||
|  | using System.Runtime.Serialization.Json; | ||||||
|  | using System.Text; | ||||||
|  | 
 | ||||||
|  | namespace AideDeJeu.Tools | ||||||
|  | { | ||||||
|  |     public static class Helpers | ||||||
|  |     { | ||||||
|  |         public static T GetResourceObject<T>(string resourceName) where T : class | ||||||
|  |         { | ||||||
|  |             var serializer = new DataContractJsonSerializer(typeof(T)); | ||||||
|  |             var assembly = typeof(Helpers).GetTypeInfo().Assembly; | ||||||
|  |             using (var stream = assembly.GetManifestResourceStream(resourceName)) | ||||||
|  |             { | ||||||
|  |                 return serializer.ReadObject(stream) as T; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -12,8 +12,13 @@ namespace AideDeJeu.ViewModels | ||||||
| { | { | ||||||
|     public class BaseViewModel : INotifyPropertyChanged |     public class BaseViewModel : INotifyPropertyChanged | ||||||
|     { |     { | ||||||
|         //public SpellsScrappers SpellsScrappers => DependencyService.Get<SpellsScrappers>() ?? new SpellsScrappers(); |         public MainViewModel Main | ||||||
|         //public MonstersScrappers MonstersScrappers => DependencyService.Get<MonstersScrappers>() ?? new MonstersScrappers(); |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return DependencyService.Get<MainViewModel>(); | ||||||
|  |             } | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|         bool isBusy = false; |         bool isBusy = false; | ||||||
|         public bool IsBusy |         public bool IsBusy | ||||||
|  |  | ||||||
							
								
								
									
										310
									
								
								AideDeJeu/AideDeJeu/ViewModels/FilterViewModel.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										310
									
								
								AideDeJeu/AideDeJeu/ViewModels/FilterViewModel.cs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,310 @@ | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Text; | ||||||
|  | using System.Windows.Input; | ||||||
|  | 
 | ||||||
|  | namespace AideDeJeu.ViewModels | ||||||
|  | { | ||||||
|  |     public abstract class FilterViewModel : BaseViewModel | ||||||
|  |     { | ||||||
|  |         public ICommand LoadItemsCommand { get; protected set; } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     #region Spells | ||||||
|  |     public abstract class SpellFilterViewModel : FilterViewModel | ||||||
|  |     { | ||||||
|  |         public abstract List<KeyValuePair<string, string>> Classes { get; } | ||||||
|  | 
 | ||||||
|  |         public abstract List<KeyValuePair<string, string>> Niveaux { get; } | ||||||
|  | 
 | ||||||
|  |         public abstract List<KeyValuePair<string, string>> Ecoles { get; } | ||||||
|  | 
 | ||||||
|  |         public abstract List<KeyValuePair<string, string>> Rituels { get; } | ||||||
|  | 
 | ||||||
|  |         public abstract List<KeyValuePair<string, string>> Sources { get; } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         private int _Classe = 0; | ||||||
|  |         public int Classe | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return _Classe; | ||||||
|  |             } | ||||||
|  |             set | ||||||
|  |             { | ||||||
|  |                 if (_Classe != value) | ||||||
|  |                 { | ||||||
|  |                     SetProperty(ref _Classe, value); | ||||||
|  |                     LoadItemsCommand.Execute(null); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         private int _NiveauMin = 0; | ||||||
|  |         public int NiveauMin | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return _NiveauMin; | ||||||
|  |             } | ||||||
|  |             set | ||||||
|  |             { | ||||||
|  |                 if (_NiveauMin != value) | ||||||
|  |                 { | ||||||
|  |                     SetProperty(ref _NiveauMin, value); | ||||||
|  |                     if (_NiveauMax < _NiveauMin) | ||||||
|  |                     { | ||||||
|  |                         SetProperty(ref _NiveauMax, value, nameof(NiveauMax)); | ||||||
|  |                     } | ||||||
|  |                     LoadItemsCommand.Execute(null); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         private int _NiveauMax = 9; | ||||||
|  |         public int NiveauMax | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return _NiveauMax; | ||||||
|  |             } | ||||||
|  |             set | ||||||
|  |             { | ||||||
|  |                 if (_NiveauMax != value) | ||||||
|  |                 { | ||||||
|  |                     SetProperty(ref _NiveauMax, value); | ||||||
|  |                     if (_NiveauMax < _NiveauMin) | ||||||
|  |                     { | ||||||
|  |                         SetProperty(ref _NiveauMin, value, nameof(NiveauMin)); | ||||||
|  |                     } | ||||||
|  |                     LoadItemsCommand.Execute(null); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         private int _Ecole = 0; | ||||||
|  |         public int Ecole | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return _Ecole; | ||||||
|  |             } | ||||||
|  |             set | ||||||
|  |             { | ||||||
|  |                 if (_Ecole != value) | ||||||
|  |                 { | ||||||
|  |                     SetProperty(ref _Ecole, value); | ||||||
|  |                     LoadItemsCommand.Execute(null); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         private int _Rituel = 0; | ||||||
|  |         public int Rituel | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return _Rituel; | ||||||
|  |             } | ||||||
|  |             set | ||||||
|  |             { | ||||||
|  |                 if (_Rituel != value) | ||||||
|  |                 { | ||||||
|  |                     SetProperty(ref _Rituel, value); | ||||||
|  |                     LoadItemsCommand.Execute(null); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         private int _Source = 1; | ||||||
|  |         public int Source | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return _Source; | ||||||
|  |             } | ||||||
|  |             set | ||||||
|  |             { | ||||||
|  |                 if (_Source != value) | ||||||
|  |                 { | ||||||
|  |                     SetProperty(ref _Source, value); | ||||||
|  |                     LoadItemsCommand.Execute(null); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public class VFSpellFilterViewModel : SpellFilterViewModel | ||||||
|  |     { | ||||||
|  | 
 | ||||||
|  |         public override List<KeyValuePair<string, string>> Classes { get; } = new List<KeyValuePair<string, string>>() | ||||||
|  |         { | ||||||
|  |             new KeyValuePair<string, string>("", "Toutes" ), | ||||||
|  |             new KeyValuePair<string, string>("Barde", "Barde" ), | ||||||
|  |             new KeyValuePair<string, string>("Clerc", "Clerc" ), | ||||||
|  |             new KeyValuePair<string, string>("Druide", "Druide" ), | ||||||
|  |             new KeyValuePair<string, string>("Ensorceleur", "Ensorceleur" ), | ||||||
|  |             new KeyValuePair<string, string>("Magicien", "Magicien" ), | ||||||
|  |             new KeyValuePair<string, string>("Paladin", "Paladin" ), | ||||||
|  |             new KeyValuePair<string, string>("Rôdeur", "Rôdeur" ), | ||||||
|  |             new KeyValuePair<string, string>("Sorcier", "Sorcier" ), | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         public override List<KeyValuePair<string, string>> Niveaux { get; } = new List<KeyValuePair<string, string>>() | ||||||
|  |         { | ||||||
|  |             new KeyValuePair<string, string>("0", "Sorts mineurs"), | ||||||
|  |             new KeyValuePair<string, string>("1", "Niveau 1"), | ||||||
|  |             new KeyValuePair<string, string>("2", "Niveau 2"), | ||||||
|  |             new KeyValuePair<string, string>("3", "Niveau 3"), | ||||||
|  |             new KeyValuePair<string, string>("4", "Niveau 4"), | ||||||
|  |             new KeyValuePair<string, string>("5", "Niveau 5"), | ||||||
|  |             new KeyValuePair<string, string>("6", "Niveau 6"), | ||||||
|  |             new KeyValuePair<string, string>("7", "Niveau 7"), | ||||||
|  |             new KeyValuePair<string, string>("8", "Niveau 8"), | ||||||
|  |             new KeyValuePair<string, string>("9", "Niveau 9"), | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         public override List<KeyValuePair<string, string>> Ecoles { get; } = new List<KeyValuePair<string, string>>() | ||||||
|  |         { | ||||||
|  |             new KeyValuePair<string, string>("", "Toutes"), | ||||||
|  |             new KeyValuePair<string, string>("abjuration", "Abjuration"), | ||||||
|  |             new KeyValuePair<string, string>("divination", "Divination"), | ||||||
|  |             new KeyValuePair<string, string>("enchantement", "Enchantement"), | ||||||
|  |             new KeyValuePair<string, string>("évocation", "Évocation"), | ||||||
|  |             new KeyValuePair<string, string>("illusion", "Illusion"), | ||||||
|  |             new KeyValuePair<string, string>("invocation", "Invocation"), | ||||||
|  |             new KeyValuePair<string, string>("cromancie", "Nécromancie"), | ||||||
|  |             new KeyValuePair<string, string>("transmutation", "Transmutation"), | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         public override List<KeyValuePair<string, string>> Rituels { get; } = new List<KeyValuePair<string, string>>() | ||||||
|  |         { | ||||||
|  |             new KeyValuePair<string, string>("", "Tous"), | ||||||
|  |             new KeyValuePair<string, string>("(rituel)", "Rituel"), | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         public override List<KeyValuePair<string, string>> Sources { get; } = new List<KeyValuePair<string, string>>() | ||||||
|  |         { | ||||||
|  |             new KeyValuePair<string, string>("", "Toutes"), | ||||||
|  |             new KeyValuePair<string, string>("(SRD)", "SRD"), | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public class VOSpellFilterViewModel : SpellFilterViewModel | ||||||
|  |     { | ||||||
|  |         public override List<KeyValuePair<string, string>> Classes { get; } = new List<KeyValuePair<string, string>>() | ||||||
|  |         { | ||||||
|  |             new KeyValuePair<string, string>("", "All" ), | ||||||
|  |             new KeyValuePair<string, string>("Bard", "Bard" ), | ||||||
|  |             new KeyValuePair<string, string>("Cleric", "Cleric" ), | ||||||
|  |             new KeyValuePair<string, string>("Druid", "Druid" ), | ||||||
|  |             new KeyValuePair<string, string>("Ensorceleur", "Ensorceleur" ), | ||||||
|  |             new KeyValuePair<string, string>("Wizard", "Wizard" ), | ||||||
|  |             new KeyValuePair<string, string>("Paladin", "Paladin" ), | ||||||
|  |             new KeyValuePair<string, string>("Rôdeur", "Rôdeur" ), | ||||||
|  |             new KeyValuePair<string, string>("Sorcier", "Sorcier" ), | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         public override List<KeyValuePair<string, string>> Niveaux { get; } = new List<KeyValuePair<string, string>>() | ||||||
|  |         { | ||||||
|  |             new KeyValuePair<string, string>("0", "Sorts mineurs"), | ||||||
|  |             new KeyValuePair<string, string>("1", "Level 1"), | ||||||
|  |             new KeyValuePair<string, string>("2", "Level 2"), | ||||||
|  |             new KeyValuePair<string, string>("3", "Level 3"), | ||||||
|  |             new KeyValuePair<string, string>("4", "Level 4"), | ||||||
|  |             new KeyValuePair<string, string>("5", "Level 5"), | ||||||
|  |             new KeyValuePair<string, string>("6", "Level 6"), | ||||||
|  |             new KeyValuePair<string, string>("7", "Level 7"), | ||||||
|  |             new KeyValuePair<string, string>("8", "Level 8"), | ||||||
|  |             new KeyValuePair<string, string>("9", "Level 9"), | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         public override List<KeyValuePair<string, string>> Ecoles { get; } = new List<KeyValuePair<string, string>>() | ||||||
|  |         { | ||||||
|  |             new KeyValuePair<string, string>("", "All"), | ||||||
|  |             new KeyValuePair<string, string>("abjuration", "Abjuration"), | ||||||
|  |             new KeyValuePair<string, string>("divination", "Divination"), | ||||||
|  |             new KeyValuePair<string, string>("enchantement", "Enchantement"), | ||||||
|  |             new KeyValuePair<string, string>("évocation", "Evocation"), | ||||||
|  |             new KeyValuePair<string, string>("illusion", "Illusion"), | ||||||
|  |             new KeyValuePair<string, string>("invocation", "Invocation"), | ||||||
|  |             new KeyValuePair<string, string>("necromancie", "Necromancie"), | ||||||
|  |             new KeyValuePair<string, string>("transmutation", "Transmutation"), | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         public override List<KeyValuePair<string, string>> Rituels { get; } = new List<KeyValuePair<string, string>>() | ||||||
|  |         { | ||||||
|  |             new KeyValuePair<string, string>("", "All"), | ||||||
|  |             new KeyValuePair<string, string>("(rituel)", "Rituel"), | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         public override List<KeyValuePair<string, string>> Sources { get; } = new List<KeyValuePair<string, string>>() | ||||||
|  |         { | ||||||
|  |             new KeyValuePair<string, string>("", "All"), | ||||||
|  |             new KeyValuePair<string, string>("(SRD)", "SRD"), | ||||||
|  |         }; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public class HDSpellFilterViewModel : SpellFilterViewModel | ||||||
|  |     { | ||||||
|  |         public override List<KeyValuePair<string, string>> Classes { get; } = new List<KeyValuePair<string, string>>() | ||||||
|  |         { | ||||||
|  |             new KeyValuePair<string, string>("", "Toutes" ), | ||||||
|  |             new KeyValuePair<string, string>("Barde", "Barde" ), | ||||||
|  |             new KeyValuePair<string, string>("Clerc", "Clerc" ), | ||||||
|  |             new KeyValuePair<string, string>("Druide", "Druide" ), | ||||||
|  |             new KeyValuePair<string, string>("Ensorceleur", "Ensorceleur" ), | ||||||
|  |             new KeyValuePair<string, string>("Magicien", "Magicien" ), | ||||||
|  |             new KeyValuePair<string, string>("Ombrelame", "Ombrelame" ), | ||||||
|  |             new KeyValuePair<string, string>("Paladin", "Paladin" ), | ||||||
|  |             new KeyValuePair<string, string>("Rôdeur", "Rôdeur" ), | ||||||
|  |             new KeyValuePair<string, string>("Sorcier", "Sorcier" ), | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         public override List<KeyValuePair<string, string>> Niveaux { get; } = new List<KeyValuePair<string, string>>() | ||||||
|  |         { | ||||||
|  |             new KeyValuePair<string, string>("0", "Sorts mineurs"), | ||||||
|  |             new KeyValuePair<string, string>("1", "Niveau 1"), | ||||||
|  |             new KeyValuePair<string, string>("2", "Niveau 2"), | ||||||
|  |             new KeyValuePair<string, string>("3", "Niveau 3"), | ||||||
|  |             new KeyValuePair<string, string>("4", "Niveau 4"), | ||||||
|  |             new KeyValuePair<string, string>("5", "Niveau 5"), | ||||||
|  |             new KeyValuePair<string, string>("6", "Niveau 6"), | ||||||
|  |             new KeyValuePair<string, string>("7", "Niveau 7"), | ||||||
|  |             new KeyValuePair<string, string>("8", "Niveau 8"), | ||||||
|  |             new KeyValuePair<string, string>("9", "Niveau 9"), | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         public override List<KeyValuePair<string, string>> Ecoles { get; } = new List<KeyValuePair<string, string>>() | ||||||
|  |         { | ||||||
|  |             new KeyValuePair<string, string>("", "Toutes"), | ||||||
|  |             new KeyValuePair<string, string>("abjuration", "Abjuration"), | ||||||
|  |             new KeyValuePair<string, string>("divination", "Divination"), | ||||||
|  |             new KeyValuePair<string, string>("enchantement", "Enchantement"), | ||||||
|  |             new KeyValuePair<string, string>("évocation", "Évocation"), | ||||||
|  |             new KeyValuePair<string, string>("illusion", "Illusion"), | ||||||
|  |             new KeyValuePair<string, string>("invocation", "Invocation"), | ||||||
|  |             new KeyValuePair<string, string>("cromancie", "Nécromancie"), | ||||||
|  |             new KeyValuePair<string, string>("transmutation", "Transmutation"), | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         public override List<KeyValuePair<string, string>> Rituels { get; } = new List<KeyValuePair<string, string>>() | ||||||
|  |         { | ||||||
|  |             new KeyValuePair<string, string>("", "Tous"), | ||||||
|  |             new KeyValuePair<string, string>("(rituel)", "Rituel"), | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         public override List<KeyValuePair<string, string>> Sources { get; } = new List<KeyValuePair<string, string>>() | ||||||
|  |         { | ||||||
|  |             new KeyValuePair<string, string>("", "Toutes"), | ||||||
|  |             new KeyValuePair<string, string>("(SRD)", "SRD"), | ||||||
|  |             new KeyValuePair<string, string>("(HD)", "H&D"), | ||||||
|  |         }; | ||||||
|  |     } | ||||||
|  |     #endregion Spells | ||||||
|  | 
 | ||||||
|  |     #region Monsters | ||||||
|  |     public class MonsterFilterViewModel : FilterViewModel | ||||||
|  |     { | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  |     #endregion Monsters | ||||||
|  | } | ||||||
|  | @ -8,44 +8,41 @@ namespace AideDeJeu.ViewModels | ||||||
| { | { | ||||||
|     public abstract class ItemsViewModel : BaseViewModel |     public abstract class ItemsViewModel : BaseViewModel | ||||||
|     { |     { | ||||||
|         public ItemsViewModel(INavigator navigator, ObservableCollection<Item> items) |         public ItemsViewModel() | ||||||
|         { |         { | ||||||
|             Navigator = navigator; |             LoadItemsCommand = new Command(() => ExecuteLoadItemsCommand(null)); | ||||||
|             Items = items; |  | ||||||
|             LoadItemsCommand = new Command(async () => await ExecuteLoadItemsCommandAsync()); |  | ||||||
|         } |         } | ||||||
|         protected ObservableCollection<Item> AllItems { get; set; } = new ObservableCollection<Item>(); |         protected ObservableCollection<Item> AllItems { get; set; } = new ObservableCollection<Item>(); | ||||||
|         public ObservableCollection<Item> Items { get; protected set; } |  | ||||||
|         public ICommand LoadItemsCommand { get; protected set; } |         public ICommand LoadItemsCommand { get; protected set; } | ||||||
|         public abstract Task ExecuteLoadItemsCommandAsync(); |         public abstract void ExecuteLoadItemsCommand(FilterViewModel filterViewModel); | ||||||
|         public abstract Task ExecuteGotoItemCommandAsync(Item item); |         public abstract Task ExecuteGotoItemCommandAsync(Item item); | ||||||
|         protected INavigator Navigator { get; set; } |         protected INavigator Navigator { get; set; } | ||||||
| 
 | 
 | ||||||
|         private string _SearchText = ""; |         //private string _SearchText = ""; | ||||||
|         public string SearchText |         //public string SearchText | ||||||
|         { |         //{ | ||||||
|             get |         //    get | ||||||
|             { |         //    { | ||||||
|                 return _SearchText; |         //        return _SearchText; | ||||||
|             } |         //    } | ||||||
|             set |         //    set | ||||||
|             { |         //    { | ||||||
|                 SetProperty(ref _SearchText, value); |         //        SetProperty(ref _SearchText, value); | ||||||
|                 FilterItems(); |         //        FilterItems(); | ||||||
|             } |         //    } | ||||||
|         } |         //} | ||||||
| 
 | 
 | ||||||
|         public void FilterItems() |         //public void FilterItems() | ||||||
|         { |         //{ | ||||||
|             Items.Clear(); |         //    Items.Clear(); | ||||||
|             foreach (var item in AllItems) |         //    foreach (var item in AllItems) | ||||||
|             { |         //    { | ||||||
|                 if (item.NamePHB.ToLower().Contains(SearchText.ToLower())) |         //        if (item.NamePHB.ToLower().Contains(SearchText.ToLower())) | ||||||
|                 { |         //        { | ||||||
|                     Items.Add(item); |         //            Items.Add(item); | ||||||
|                 } |         //        } | ||||||
|             } |         //    } | ||||||
|         } |         //} | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -1,51 +1,118 @@ | ||||||
| using AideDeJeuLib; | using AideDeJeuLib; | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
| using System.Collections.ObjectModel; | using System.Collections.ObjectModel; | ||||||
| using Xamarin.Forms; | using Xamarin.Forms; | ||||||
| 
 | 
 | ||||||
| namespace AideDeJeu.ViewModels | namespace AideDeJeu.ViewModels | ||||||
| { | { | ||||||
|  |     public enum ItemType | ||||||
|  |     { | ||||||
|  |         Spell, | ||||||
|  |         Monster, | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public enum ItemSource | ||||||
|  |     { | ||||||
|  |         VF, | ||||||
|  |         VO, | ||||||
|  |         HD | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     [Flags] | ||||||
|  |     public enum ItemSourceType | ||||||
|  |     { | ||||||
|  |         Spell = 0x01, | ||||||
|  |         Monster = 0x10, | ||||||
|  |         VF = 0x0100, | ||||||
|  |         VO = 0x1100, | ||||||
|  |         HD = 0x1000, | ||||||
|  |         SpellVF = Spell | VF, | ||||||
|  |         SpellVO = Spell | VO, | ||||||
|  |         SpellHD = Spell | HD, | ||||||
|  |         MonsterVF = Monster | VF, | ||||||
|  |         MonsterVO = Monster | VO, | ||||||
|  |         MonsterHD = Monster | HD, | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     public class MainViewModel : BaseViewModel |     public class MainViewModel : BaseViewModel | ||||||
|     { |     { | ||||||
|         public enum ItemType |         private ItemSourceType _ItemSourceType = ItemSourceType.SpellVF; | ||||||
|         { |         public ItemSourceType ItemSourceType | ||||||
|             Spell, |  | ||||||
|             Monster, |  | ||||||
|         } |  | ||||||
|         public SpellsViewModel Spells { get; private set; } |  | ||||||
|         public MonstersViewModel Monsters { get; private set; } |  | ||||||
| 
 |  | ||||||
|         private ItemType _ItemsType = ItemType.Spell; |  | ||||||
|         public ItemType ItemsType |  | ||||||
|         { |         { | ||||||
|             get |             get | ||||||
|             { |             { | ||||||
|                 return _ItemsType; |                 return _ItemSourceType; | ||||||
|             } |             } | ||||||
|             set |             set | ||||||
|             { |             { | ||||||
|                 CurrentViewModel.SearchText = ""; |                 //CurrentViewModel.SearchText = ""; | ||||||
|                 SetProperty(ref _ItemsType, value); |                 SetProperty(ref _ItemSourceType, value); | ||||||
|                 CurrentViewModel.SearchText = ""; |                 //CurrentViewModel.SearchText = ""; | ||||||
|                 OnPropertyChanged(nameof(CurrentViewModel)); |                 OnPropertyChanged(nameof(Items)); | ||||||
|                 LoadItemsCommand.Execute(null); |                 //LoadItemsCommand.Execute(null); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public ItemsViewModel CurrentViewModel |         //private ItemSource _ItemsSource = ItemSource.VF; | ||||||
|  |         //public ItemSource ItemsSource | ||||||
|  |         //{ | ||||||
|  |         //    get | ||||||
|  |         //    { | ||||||
|  |         //        return _ItemsSource; | ||||||
|  |         //    } | ||||||
|  |         //    set | ||||||
|  |         //    { | ||||||
|  |         //        //CurrentViewModel.SearchText = ""; | ||||||
|  |         //        SetProperty(ref _ItemsSource, value); | ||||||
|  |         //        //CurrentViewModel.SearchText = ""; | ||||||
|  |         //        //OnPropertyChanged(nameof(CurrentViewModel)); | ||||||
|  |         //        LoadItemsCommand.Execute(null); | ||||||
|  |         //    } | ||||||
|  |         //} | ||||||
|  | 
 | ||||||
|  |         public Dictionary<ItemSourceType, Lazy<ItemsViewModel>> AllItemsViewModel = new Dictionary<ItemSourceType, Lazy<ItemsViewModel>>() | ||||||
|         { |         { | ||||||
|             get |             { ItemSourceType.SpellVF, new Lazy<ItemsViewModel>(() => new SpellsViewModel()) }, | ||||||
|             { |         }; | ||||||
|                 if (ItemsType == ItemType.Spell) | 
 | ||||||
|                 { |         public ItemsViewModel GetItemsViewModel(ItemSourceType itemSourceType) | ||||||
|                     return Spells; |         { | ||||||
|                 } |             return AllItemsViewModel[itemSourceType].Value; | ||||||
|                 if (ItemsType == ItemType.Monster) |  | ||||||
|                 { |  | ||||||
|                     return Monsters; |  | ||||||
|                 } |  | ||||||
|                 return null; |  | ||||||
|             } |  | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         public Dictionary<ItemSourceType, Lazy<FilterViewModel>> AllFiltersViewModel = new Dictionary<ItemSourceType, Lazy<FilterViewModel>>() | ||||||
|  |         { | ||||||
|  |             { ItemSourceType.SpellVF, new Lazy<FilterViewModel>(() => new VFSpellFilterViewModel()) }, | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         public FilterViewModel GetFilterViewModel(ItemSourceType itemSourceType) | ||||||
|  |         { | ||||||
|  |             return AllFiltersViewModel[itemSourceType].Value; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         //public ItemsViewModel SpellsVF | ||||||
|  |         //{ | ||||||
|  |         //    get | ||||||
|  |         //    { | ||||||
|  |         //        return AllItemsViewModel[ItemSourceType.SpellVF].Value; | ||||||
|  |         //    } | ||||||
|  |         //} | ||||||
|  |         //public ItemsViewModel CurrentViewModel | ||||||
|  |         //{ | ||||||
|  |         //    get | ||||||
|  |         //    { | ||||||
|  |         //        if (ItemsType == ItemType.Spell) | ||||||
|  |         //        { | ||||||
|  |         //            return Spells; | ||||||
|  |         //        } | ||||||
|  |         //        if (ItemsType == ItemType.Monster) | ||||||
|  |         //        { | ||||||
|  |         //            return Monsters; | ||||||
|  |         //        } | ||||||
|  |         //        return null; | ||||||
|  |         //    } | ||||||
|  |         //} | ||||||
|         public ObservableCollection<Item> Items { get; private set; } = new ObservableCollection<Item>(); |         public ObservableCollection<Item> Items { get; private set; } = new ObservableCollection<Item>(); | ||||||
| 
 | 
 | ||||||
|         private Item _SelectedItem; |         private Item _SelectedItem; | ||||||
|  | @ -58,7 +125,10 @@ namespace AideDeJeu.ViewModels | ||||||
|             set |             set | ||||||
|             { |             { | ||||||
|                 SetProperty(ref _SelectedItem, value); |                 SetProperty(ref _SelectedItem, value); | ||||||
|                 GotoItemCommand.Execute(_SelectedItem); |                 if (_SelectedItem != null) | ||||||
|  |                 { | ||||||
|  |                     GotoItemCommand.Execute(_SelectedItem); | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  | @ -70,16 +140,17 @@ namespace AideDeJeu.ViewModels | ||||||
|         public Command AboutCommand { get; private set; } |         public Command AboutCommand { get; private set; } | ||||||
|         public Command<string> SearchCommand { get; private set; } |         public Command<string> SearchCommand { get; private set; } | ||||||
| 
 | 
 | ||||||
|         public MainViewModel(INavigator navigator) |         public Navigator Navigator { get; set; } | ||||||
|  |         public MainViewModel() | ||||||
|         { |         { | ||||||
|             Spells = new SpellsViewModel(navigator, Items); |             //Spells = new SpellsViewModel(navigator, Items); | ||||||
|             Monsters = new MonstersViewModel(navigator, Items); |             //Monsters = new MonstersViewModel(navigator, Items); | ||||||
|             LoadItemsCommand = new Command(async () => await CurrentViewModel.ExecuteLoadItemsCommandAsync()); |             LoadItemsCommand = new Command(async () => GetItemsViewModel(ItemSourceType).ExecuteLoadItemsCommand(GetFilterViewModel(ItemSourceType))); | ||||||
|             GotoItemCommand = new Command<Item>(async (item) => await CurrentViewModel.ExecuteGotoItemCommandAsync(item)); |             GotoItemCommand = new Command<Item>(async (item) => await GetItemsViewModel(ItemSourceType).ExecuteGotoItemCommandAsync(item)); | ||||||
|             SwitchToSpells = new Command(() => ItemsType = ItemType.Spell); |             SwitchToSpells = new Command(() => ItemSourceType = (ItemSourceType & ~ ItemSourceType.Monster) | ItemSourceType.Spell); | ||||||
|             SwitchToMonsters = new Command(() => ItemsType = ItemType.Monster); |             SwitchToMonsters = new Command(() => ItemSourceType = (ItemSourceType & ~ItemSourceType.Spell) | ItemSourceType.Monster); | ||||||
|             AboutCommand = new Command(async() => await navigator.GotoAboutPageAsync()); |             //AboutCommand = new Command(async() => await navigator.GotoAboutPageAsync()); | ||||||
|             SearchCommand = new Command<string>((text) => CurrentViewModel.SearchText = text); |             //SearchCommand = new Command<string>((text) => GetItemsViewModel(ItemSourceType).SearchText = text); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -224,14 +224,6 @@ namespace AideDeJeu.ViewModels | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|         public MonstersViewModel(INavigator navigator, ObservableCollection<Item> items) |  | ||||||
|             : base(navigator, items) |  | ||||||
|         { |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
|         private IEnumerable<Monster> _AllMonsters = null; |         private IEnumerable<Monster> _AllMonsters = null; | ||||||
|         private IEnumerable<Monster> AllMonsters |         private IEnumerable<Monster> AllMonsters | ||||||
|  | @ -267,7 +259,7 @@ namespace AideDeJeu.ViewModels | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|         public override async Task ExecuteLoadItemsCommandAsync() |         public override void ExecuteLoadItemsCommand(FilterViewModel filterViewModel) | ||||||
|         { |         { | ||||||
|             if (IsBusy) |             if (IsBusy) | ||||||
|                 return; |                 return; | ||||||
|  | @ -289,7 +281,7 @@ namespace AideDeJeu.ViewModels | ||||||
|                 { |                 { | ||||||
|                     AllItems.Add(item); |                     AllItems.Add(item); | ||||||
|                 } |                 } | ||||||
|                 FilterItems(); |                 //FilterItems(); | ||||||
|             } |             } | ||||||
|             catch (Exception ex) |             catch (Exception ex) | ||||||
|             { |             { | ||||||
|  |  | ||||||
|  | @ -14,171 +14,6 @@ namespace AideDeJeu.ViewModels | ||||||
| { | { | ||||||
|     public class SpellsViewModel : ItemsViewModel |     public class SpellsViewModel : ItemsViewModel | ||||||
|     { |     { | ||||||
|         public List<KeyValuePair<string, string>> Classes { get; set; } = new List<KeyValuePair<string, string>>() |  | ||||||
|         { |  | ||||||
|             new KeyValuePair<string, string>("", "Toutes" ), |  | ||||||
|             new KeyValuePair<string, string>("Barde", "Barde" ), |  | ||||||
|             new KeyValuePair<string, string>("Clerc", "Clerc" ), |  | ||||||
|             new KeyValuePair<string, string>("Druide", "Druide" ), |  | ||||||
|             new KeyValuePair<string, string>("Ensorceleur", "Ensorceleur" ), |  | ||||||
|             new KeyValuePair<string, string>("Magicien", "Magicien" ), |  | ||||||
|             new KeyValuePair<string, string>("Paladin", "Paladin" ), |  | ||||||
|             new KeyValuePair<string, string>("Rôdeur", "Rôdeur" ), |  | ||||||
|             new KeyValuePair<string, string>("Sorcier", "Sorcier" ), |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         public List<KeyValuePair<string, string>> Niveaux { get; set; } = new List<KeyValuePair<string, string>>() |  | ||||||
|         { |  | ||||||
|             new KeyValuePair<string, string>("0", "Sorts mineurs"), |  | ||||||
|             new KeyValuePair<string, string>("1", "Niveau 1"), |  | ||||||
|             new KeyValuePair<string, string>("2", "Niveau 2"), |  | ||||||
|             new KeyValuePair<string, string>("3", "Niveau 3"), |  | ||||||
|             new KeyValuePair<string, string>("4", "Niveau 4"), |  | ||||||
|             new KeyValuePair<string, string>("5", "Niveau 5"), |  | ||||||
|             new KeyValuePair<string, string>("6", "Niveau 6"), |  | ||||||
|             new KeyValuePair<string, string>("7", "Niveau 7"), |  | ||||||
|             new KeyValuePair<string, string>("8", "Niveau 8"), |  | ||||||
|             new KeyValuePair<string, string>("9", "Niveau 9"), |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         public List<KeyValuePair<string, string>> Ecoles { get; set; } = new List<KeyValuePair<string, string>>() |  | ||||||
|         { |  | ||||||
|             new KeyValuePair<string, string>("", "Toutes"), |  | ||||||
|             new KeyValuePair<string, string>("abjuration", "Abjuration"), |  | ||||||
|             new KeyValuePair<string, string>("divination", "Divination"), |  | ||||||
|             new KeyValuePair<string, string>("enchantement", "Enchantement"), |  | ||||||
|             new KeyValuePair<string, string>("évocation", "Évocation"), |  | ||||||
|             new KeyValuePair<string, string>("illusion", "Illusion"), |  | ||||||
|             new KeyValuePair<string, string>("invocation", "Invocation"), |  | ||||||
|             new KeyValuePair<string, string>("cromancie", "Nécromancie"), |  | ||||||
|             new KeyValuePair<string, string>("transmutation", "Transmutation"), |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         public List<KeyValuePair<string, string>> Rituels { get; set; } = new List<KeyValuePair<string, string>>() |  | ||||||
|         { |  | ||||||
|             new KeyValuePair<string, string>("", "Tous"), |  | ||||||
|             new KeyValuePair<string, string>("(rituel)", "Rituel"), |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         public List<KeyValuePair<string, string>> Sources { get; set; } = new List<KeyValuePair<string, string>>() |  | ||||||
|         { |  | ||||||
|             new KeyValuePair<string, string>("", "Toutes"), |  | ||||||
|             new KeyValuePair<string, string>("(SRD)", "SRD"), |  | ||||||
|             new KeyValuePair<string, string>("Player's Handbook", "PHB"), |  | ||||||
|             new KeyValuePair<string, string>("sup", "SCAG, XGtE"), |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         private int _Classe = 0; |  | ||||||
|         public int Classe |  | ||||||
|         { |  | ||||||
|             get |  | ||||||
|             { |  | ||||||
|                 return _Classe; |  | ||||||
|             } |  | ||||||
|             set |  | ||||||
|             { |  | ||||||
|                 if (_Classe != value) |  | ||||||
|                 { |  | ||||||
|                     SetProperty(ref _Classe, value); |  | ||||||
|                     LoadItemsCommand.Execute(null); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         private int _NiveauMin = 0; |  | ||||||
|         public int NiveauMin |  | ||||||
|         { |  | ||||||
|             get |  | ||||||
|             { |  | ||||||
|                 return _NiveauMin; |  | ||||||
|             } |  | ||||||
|             set |  | ||||||
|             { |  | ||||||
|                 if (_NiveauMin != value) |  | ||||||
|                 { |  | ||||||
|                     SetProperty(ref _NiveauMin, value); |  | ||||||
|                     if (_NiveauMax < _NiveauMin) |  | ||||||
|                     { |  | ||||||
|                         SetProperty(ref _NiveauMax, value, nameof(NiveauMax)); |  | ||||||
|                     } |  | ||||||
|                     LoadItemsCommand.Execute(null); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         private int _NiveauMax = 9; |  | ||||||
|         public int NiveauMax |  | ||||||
|         { |  | ||||||
|             get |  | ||||||
|             { |  | ||||||
|                 return _NiveauMax; |  | ||||||
|             } |  | ||||||
|             set |  | ||||||
|             { |  | ||||||
|                 if (_NiveauMax != value) |  | ||||||
|                 { |  | ||||||
|                     SetProperty(ref _NiveauMax, value); |  | ||||||
|                     if (_NiveauMax < _NiveauMin) |  | ||||||
|                     { |  | ||||||
|                         SetProperty(ref _NiveauMin, value, nameof(NiveauMin)); |  | ||||||
|                     } |  | ||||||
|                     LoadItemsCommand.Execute(null); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         private int _Ecole = 0; |  | ||||||
|         public int Ecole |  | ||||||
|         { |  | ||||||
|             get |  | ||||||
|             { |  | ||||||
|                 return _Ecole; |  | ||||||
|             } |  | ||||||
|             set |  | ||||||
|             { |  | ||||||
|                 if (_Ecole != value) |  | ||||||
|                 { |  | ||||||
|                     SetProperty(ref _Ecole, value); |  | ||||||
|                     LoadItemsCommand.Execute(null); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         private int _Rituel = 0; |  | ||||||
|         public int Rituel |  | ||||||
|         { |  | ||||||
|             get |  | ||||||
|             { |  | ||||||
|                 return _Rituel; |  | ||||||
|             } |  | ||||||
|             set |  | ||||||
|             { |  | ||||||
|                 if (_Rituel != value) |  | ||||||
|                 { |  | ||||||
|                     SetProperty(ref _Rituel, value); |  | ||||||
|                     LoadItemsCommand.Execute(null); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         private int _Source = 1; |  | ||||||
|         public int Source |  | ||||||
|         { |  | ||||||
|             get |  | ||||||
|             { |  | ||||||
|                 return _Source; |  | ||||||
|             } |  | ||||||
|             set |  | ||||||
|             { |  | ||||||
|                 if (_Source != value) |  | ||||||
|                 { |  | ||||||
|                     SetProperty(ref _Source, value); |  | ||||||
|                     LoadItemsCommand.Execute(null); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|         public SpellsViewModel(INavigator navigator, ObservableCollection<Item> items) |  | ||||||
|             : base(navigator, items) |  | ||||||
|         { |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         private IEnumerable<Spell> _AllSpells = null; |         private IEnumerable<Spell> _AllSpells = null; | ||||||
|         private IEnumerable<Spell> AllSpells |         private IEnumerable<Spell> AllSpells | ||||||
|         { |         { | ||||||
|  | @ -186,15 +21,16 @@ namespace AideDeJeu.ViewModels | ||||||
|             { |             { | ||||||
|                 if(_AllSpells == null) |                 if(_AllSpells == null) | ||||||
|                 { |                 { | ||||||
|                     var serializer = new DataContractJsonSerializer(typeof(IEnumerable<Spell>)); |                     _AllSpells = Tools.Helpers.GetResourceObject<IEnumerable<Spell>>("AideDeJeu.Data.spells_vf.json"); | ||||||
|                     var assembly = typeof(AboutViewModel).GetTypeInfo().Assembly; |                     //var serializer = new DataContractJsonSerializer(typeof(IEnumerable<Spell>)); | ||||||
|                     //var names = assembly.GetManifestResourceNames(); |                     //var assembly = typeof(AboutViewModel).GetTypeInfo().Assembly; | ||||||
|                     //using (var stream = assembly.GetManifestResourceStream("AideDeJeu.Data.spells_hd.json")) |                     ////var names = assembly.GetManifestResourceNames(); | ||||||
|                     using (var stream = assembly.GetManifestResourceStream("AideDeJeu.Data.spells_vf.json")) |                     ////using (var stream = assembly.GetManifestResourceStream("AideDeJeu.Data.spells_hd.json")) | ||||||
|                     //using (var stream = assembly.GetManifestResourceStream("AideDeJeu.Data.spells_vo.json")) |                     //using (var stream = assembly.GetManifestResourceStream("AideDeJeu.Data.spells_vf.json")) | ||||||
|                     { |                     ////using (var stream = assembly.GetManifestResourceStream("AideDeJeu.Data.spells_vo.json")) | ||||||
|                         _AllSpells = serializer.ReadObject(stream) as IEnumerable<Spell>; |                     //{ | ||||||
|                     } |                     //    _AllSpells = serializer.ReadObject(stream) as IEnumerable<Spell>; | ||||||
|  |                     //} | ||||||
|                 } |                 } | ||||||
|                 return _AllSpells; |                 return _AllSpells; | ||||||
|             } |             } | ||||||
|  | @ -216,7 +52,7 @@ namespace AideDeJeu.ViewModels | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|         public override async Task ExecuteLoadItemsCommandAsync() |         public override void ExecuteLoadItemsCommand(FilterViewModel filterViewModel) | ||||||
|         { |         { | ||||||
|             if (IsBusy) |             if (IsBusy) | ||||||
|                 return; |                 return; | ||||||
|  | @ -225,35 +61,15 @@ namespace AideDeJeu.ViewModels | ||||||
| 
 | 
 | ||||||
|             try |             try | ||||||
|             { |             { | ||||||
|                 AllItems.Clear(); |                 Main.Items.Clear(); | ||||||
|                 IEnumerable<Spell> items = null; |                 IEnumerable<Spell> items = null; | ||||||
|                 //using (var spellsScrappers = new SpellsScrappers()) |                 SpellFilterViewModel filters = filterViewModel as SpellFilterViewModel; | ||||||
|                 //{ |                 items = GetSpells(classe: filters.Classes[filters.Classe].Key, niveauMin: filters.Niveaux[filters.NiveauMin].Key, niveauMax: filters.Niveaux[filters.NiveauMax].Key, ecole: filters.Ecoles[filters.Ecole].Key, rituel: filters.Rituels[filters.Rituel].Key, source: filters.Sources[filters.Source].Key); | ||||||
|                 //    items = await spellsScrappers.GetSpells(classe: Classes[Classe].Key, niveauMin: Niveaux[NiveauMin].Key, niveauMax: Niveaux[NiveauMax].Key, ecole: Ecoles[Ecole].Key, rituel: Rituels[Rituel].Key, source: Sources[Source].Key); |  | ||||||
|                 //} |  | ||||||
| 
 |  | ||||||
|                 //ItemDatabaseHelper helper = new ItemDatabaseHelper(); |  | ||||||
|                 //items = await helper.GetSpellsAsync(classe: Classes[Classe].Key, niveauMin: Niveaux[NiveauMin].Key, niveauMax: Niveaux[NiveauMax].Key, ecole: Ecoles[Ecole].Key, rituel: Rituels[Rituel].Key, source: Sources[Source].Key); |  | ||||||
|                 items = GetSpells(classe: Classes[Classe].Key, niveauMin: Niveaux[NiveauMin].Key, niveauMax: Niveaux[NiveauMax].Key, ecole: Ecoles[Ecole].Key, rituel: Rituels[Rituel].Key, source: Sources[Source].Key); |  | ||||||
|                 //items = Spells; |  | ||||||
| 
 |  | ||||||
|                 //try |  | ||||||
|                 //{ |  | ||||||
|                 //ItemDatabaseHelper<ItemDatabaseContext> helper = new ItemDatabaseHelper<ItemDatabaseContext>(); |  | ||||||
|                 //await helper.AddOrUpdateSpellsAsync(items); |  | ||||||
|                 //var items2 = await helper.GetSpellsAsync(); |  | ||||||
|                 //} |  | ||||||
|                 //catch(Exception ex) |  | ||||||
|                 //{ |  | ||||||
|                 //    Debug.WriteLine(ex); |  | ||||||
|                 //} |  | ||||||
|                 //var aitems = items.ToArray(); |  | ||||||
|                 //Array.Sort(aitems, new ItemComparer()); |  | ||||||
|                 foreach (var item in items) |                 foreach (var item in items) | ||||||
|                 { |                 { | ||||||
|                     AllItems.Add(item); |                     Main.Items.Add(item); | ||||||
|                 } |                 } | ||||||
|                 FilterItems(); |                 //FilterItems(); | ||||||
|             } |             } | ||||||
|             catch (Exception ex) |             catch (Exception ex) | ||||||
|             { |             { | ||||||
|  | @ -267,7 +83,7 @@ namespace AideDeJeu.ViewModels | ||||||
| 
 | 
 | ||||||
|         public override async Task ExecuteGotoItemCommandAsync(Item item) |         public override async Task ExecuteGotoItemCommandAsync(Item item) | ||||||
|         { |         { | ||||||
|             await Navigator.GotoSpellDetailPageAsync(item as Spell); |             await Main.Navigator.GotoSpellDetailPageAsync(item as Spell); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -37,9 +37,6 @@ | ||||||
|                 <ScrollView Orientation="Vertical"> |                 <ScrollView Orientation="Vertical"> | ||||||
|                     <StackLayout Orientation="Vertical" Padding="15"> |                     <StackLayout Orientation="Vertical" Padding="15"> | ||||||
| 
 | 
 | ||||||
|                         <!--<Label Text="Catégorie" Style="{StaticResource Key=subsubsection}" /> |  | ||||||
|                         <Picker HorizontalOptions="FillAndExpand" ItemsSource="{TemplateBinding Parent.BindingContext.Monsters.Categories, Mode=OneWay}" ItemDisplayBinding="{Binding Value, Mode=OneWay}" SelectedIndex="{TemplateBinding Parent.BindingContext.Monsters.Category}" />--> |  | ||||||
| 
 |  | ||||||
|                         <Label Text="Type" Style="{StaticResource Key=subsubsection}" /> |                         <Label Text="Type" Style="{StaticResource Key=subsubsection}" /> | ||||||
|                         <Picker HorizontalOptions="FillAndExpand" ItemsSource="{TemplateBinding Parent.BindingContext.Monsters.Types, Mode=OneWay}" ItemDisplayBinding="{Binding Value, Mode=OneWay}" SelectedIndex="{TemplateBinding Parent.BindingContext.Monsters.Type}" /> |                         <Picker HorizontalOptions="FillAndExpand" ItemsSource="{TemplateBinding Parent.BindingContext.Monsters.Types, Mode=OneWay}" ItemDisplayBinding="{Binding Value, Mode=OneWay}" SelectedIndex="{TemplateBinding Parent.BindingContext.Monsters.Type}" /> | ||||||
| 
 | 
 | ||||||
|  | @ -58,9 +55,6 @@ | ||||||
|                         <Label Text="Taille" Style="{StaticResource Key=subsubsection}" /> |                         <Label Text="Taille" Style="{StaticResource Key=subsubsection}" /> | ||||||
|                         <Picker HorizontalOptions="FillAndExpand" ItemsSource="{TemplateBinding Parent.BindingContext.Monsters.Sizes, Mode=OneWay}" ItemDisplayBinding="{Binding Value, Mode=OneWay}" SelectedIndex="{TemplateBinding Parent.BindingContext.Monsters.Size}" /> |                         <Picker HorizontalOptions="FillAndExpand" ItemsSource="{TemplateBinding Parent.BindingContext.Monsters.Sizes, Mode=OneWay}" ItemDisplayBinding="{Binding Value, Mode=OneWay}" SelectedIndex="{TemplateBinding Parent.BindingContext.Monsters.Size}" /> | ||||||
| 
 | 
 | ||||||
|                         <!--<Label Text="Légendaire" Style="{StaticResource Key=subsubsection}" /> |  | ||||||
|                         <Picker HorizontalOptions="FillAndExpand" ItemsSource="{TemplateBinding Parent.BindingContext.Monsters.Legendaries, Mode=OneWay}" ItemDisplayBinding="{Binding Value, Mode=OneWay}" SelectedIndex="{TemplateBinding Parent.BindingContext.Monsters.Legendary}" />--> |  | ||||||
| 
 |  | ||||||
|                         <Label Text="Source" Style="{StaticResource Key=subsubsection}" /> |                         <Label Text="Source" Style="{StaticResource Key=subsubsection}" /> | ||||||
|                         <Picker HorizontalOptions="FillAndExpand" ItemsSource="{TemplateBinding Parent.BindingContext.Monsters.Sources, Mode=OneWay}" ItemDisplayBinding="{Binding Value, Mode=OneWay}" SelectedIndex="{TemplateBinding Parent.BindingContext.Monsters.Source}" IsEnabled="False"/> |                         <Picker HorizontalOptions="FillAndExpand" ItemsSource="{TemplateBinding Parent.BindingContext.Monsters.Sources, Mode=OneWay}" ItemDisplayBinding="{Binding Value, Mode=OneWay}" SelectedIndex="{TemplateBinding Parent.BindingContext.Monsters.Source}" IsEnabled="False"/> | ||||||
|                     </StackLayout> |                     </StackLayout> | ||||||
|  | @ -74,6 +68,10 @@ | ||||||
|                 x:Key="ItemsTypeTemplateConverter"  |                 x:Key="ItemsTypeTemplateConverter"  | ||||||
|                 SpellsTemplate="{StaticResource SpellsMasterDataTemplate}"  |                 SpellsTemplate="{StaticResource SpellsMasterDataTemplate}"  | ||||||
|                 MonstersTemplate="{StaticResource MonstersMasterDataTemplate}" /> |                 MonstersTemplate="{StaticResource MonstersMasterDataTemplate}" /> | ||||||
|  |             <tools:ItemSourceTypeToItemsConverter  | ||||||
|  |                 x:Key="ItemSourceTypeToItemsConverter" /> | ||||||
|  |             <tools:ItemSourceTypeToFilterConverter  | ||||||
|  |                 x:Key="ItemSourceTypeToFilterConverter" /> | ||||||
|         </ResourceDictionary> |         </ResourceDictionary> | ||||||
|     </MasterDetailPage.Resources> |     </MasterDetailPage.Resources> | ||||||
|     <MasterDetailPage.Master> |     <MasterDetailPage.Master> | ||||||
|  | @ -96,26 +94,26 @@ | ||||||
|                                 <tools:TextChangedBehavior /> |                                 <tools:TextChangedBehavior /> | ||||||
|                             </SearchBar.Behaviors> |                             </SearchBar.Behaviors> | ||||||
|                         </SearchBar> |                         </SearchBar> | ||||||
| 
 |                         <!--, Converter={StaticResource ItemSourceTypeToItemsConverter}, ConverterParameter={Binding ItemSourceType, Converter={StaticResource ItemSourceTypeToFilterConverter}}}"--> | ||||||
|                         <ListView x:Name="ItemsListView"  |                         <ListView  | ||||||
|                     ItemsSource="{Binding Items}" |                             x:Name="ItemsListView"  | ||||||
|                     VerticalOptions="FillAndExpand" |                             ItemsSource="{Binding Items}"  | ||||||
|                     HasUnevenRows="true" |                             VerticalOptions="FillAndExpand" | ||||||
|                     IsRefreshing="{Binding IsBusy, Mode=OneWay}" |                             HasUnevenRows="true" | ||||||
|                     CachingStrategy="RecycleElement" |                             IsRefreshing="{Binding IsBusy, Mode=OneWay}" | ||||||
|                     SelectedItem="{Binding SelectedItem}" |                             CachingStrategy="RecycleElement" | ||||||
|                                   ItemTapped="ItemsListView_ItemTapped"> |                             SelectedItem="{Binding SelectedItem}" | ||||||
|                             <!--RefreshCommand="{Binding LoadItemsCommand}" |                             ItemTapped="ItemsListView_ItemTapped"> | ||||||
|                     IsPullToRefreshEnabled="true"--> |  | ||||||
| 
 | 
 | ||||||
|                             <ListView.ItemTemplate> |                             <ListView.ItemTemplate> | ||||||
|                                 <DataTemplate> |                                 <DataTemplate> | ||||||
|                                     <ViewCell> |                                     <ViewCell> | ||||||
|                                         <StackLayout Padding="10"> |                                         <StackLayout Padding="10"> | ||||||
|                                             <Label Text="{Binding NamePHB}"  |                                             <Label  | ||||||
|                                         LineBreakMode="NoWrap"  |                                                 Text="{Binding NamePHB}"  | ||||||
|                                         Style="{DynamicResource subsubsection}"  |                                                 LineBreakMode="NoWrap"  | ||||||
|                                         FontSize="16" /> |                                                 Style="{DynamicResource subsubsection}"  | ||||||
|  |                                                 FontSize="16" /> | ||||||
|                                         </StackLayout> |                                         </StackLayout> | ||||||
|                                     </ViewCell> |                                     </ViewCell> | ||||||
|                                 </DataTemplate> |                                 </DataTemplate> | ||||||
|  |  | ||||||
|  | @ -11,22 +11,32 @@ namespace AideDeJeu.Views | ||||||
|     [XamlCompilation(XamlCompilationOptions.Compile)] |     [XamlCompilation(XamlCompilationOptions.Compile)] | ||||||
| 	public partial class MainPage : MasterDetailPage | 	public partial class MainPage : MasterDetailPage | ||||||
|     { |     { | ||||||
|         MainViewModel viewModel; |         MainViewModel Main | ||||||
|         INavigator Navigator; |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return DependencyService.Get<MainViewModel>(); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         //INavig//ator Navigator; | ||||||
| 
 | 
 | ||||||
|         public MainPage () |         public MainPage () | ||||||
| 		{ | 		{ | ||||||
| 			InitializeComponent (); | 			InitializeComponent (); | ||||||
|             Navigator = new Navigator((Detail as NavigationPage).Navigation); | 
 | ||||||
|             BindingContext = viewModel = new MainViewModel(Navigator); |             //DependencyService.Register<INavigator>(new Navigator((Detail as NavigationPage).Navigation)); | ||||||
|  |              | ||||||
|  |             //Navigator = new Navigator((Detail as NavigationPage).Navigation); | ||||||
|  |             //BindingContext = viewModel = new MainViewModel(Navigator); | ||||||
|  |             BindingContext = Main; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         protected override void OnAppearing() |         protected override void OnAppearing() | ||||||
|         { |         { | ||||||
|             base.OnAppearing(); |             base.OnAppearing(); | ||||||
| 
 | 
 | ||||||
|             if (viewModel.Items.Count == 0) |             if (Main.Items.Count == 0) | ||||||
|                 viewModel.LoadItemsCommand.Execute(null); |                 Main.LoadItemsCommand.Execute(null); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         private void ItemsListView_ItemTapped(object sender, ItemTappedEventArgs e) |         private void ItemsListView_ItemTapped(object sender, ItemTappedEventArgs e) | ||||||
|  |  | ||||||
|  | @ -16,4 +16,8 @@ | ||||||
|     <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.3" /> |     <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.3" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| 
 | 
 | ||||||
|  |   <ItemGroup> | ||||||
|  |     <ProjectReference Include="..\AideDeJeu\AideDeJeu.csproj" /> | ||||||
|  |   </ItemGroup> | ||||||
|  | 
 | ||||||
| </Project> | </Project> | ||||||
|  |  | ||||||
|  | @ -1,6 +1,4 @@ | ||||||
| using System; | using System.Collections.Generic; | ||||||
| using System.Collections.Generic; |  | ||||||
| using System.Linq; |  | ||||||
| using System.Threading.Tasks; | using System.Threading.Tasks; | ||||||
| using AideDeJeuLib.Cards; | using AideDeJeuLib.Cards; | ||||||
| using AideDeJeuLib.Spells; | using AideDeJeuLib.Spells; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Yan Maniez
						Yan Maniez