mirror of
https://github.com/Nioux/AideDeJeu.git
synced 2025-11-02 00:16:07 +00:00
Fusion
This commit is contained in:
commit
d41c216128
7 changed files with 164 additions and 150 deletions
|
|
@ -1,11 +1,11 @@
|
||||||
#pragma warning disable 1591
|
#pragma warning disable 1591
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// Ce code a été généré par un outil.
|
// This code was generated by a tool.
|
||||||
// Version du runtime :4.0.30319.42000
|
// Runtime Version:4.0.30319.42000
|
||||||
//
|
//
|
||||||
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
// le code est régénéré.
|
// the code is regenerated.
|
||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,27 +6,26 @@ using Foundation;
|
||||||
[assembly: Xamarin.Forms.Dependency(typeof(AideDeJeu.Droid.Version_Android))]
|
[assembly: Xamarin.Forms.Dependency(typeof(AideDeJeu.Droid.Version_Android))]
|
||||||
namespace AideDeJeu.Droid
|
namespace AideDeJeu.Droid
|
||||||
{
|
{
|
||||||
public class Version_Android : INativeAPI
|
public class Version_Android : INativeAPI
|
||||||
{
|
{
|
||||||
public string GetVersion()
|
public string GetVersion()
|
||||||
{
|
{
|
||||||
|
|
||||||
return NSBundle.MainBundle.InfoDictionary[new NSString("CFBundleShortVersionString")].ToString();
|
return NSBundle.MainBundle.InfoDictionary[new NSString("CFBundleShortVersionString")].ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int GetBuild()
|
public int GetBuild()
|
||||||
{
|
{
|
||||||
var buildVersion = NSBundle.MainBundle.InfoDictionary[new NSString("CFBundleVersion")].ToString();
|
var buildVersion = NSBundle.MainBundle.InfoDictionary[new NSString("CFBundleVersion")].ToString();
|
||||||
int build = 0;
|
int build = 0;
|
||||||
var res = int.TryParse(buildVersion, out build);
|
var res = int.TryParse(buildVersion, out build);
|
||||||
return res ? build : 0;
|
return res ? build : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetDatabasePath(string databaseName)
|
public string GetDatabasePath(string databaseName)
|
||||||
{
|
{
|
||||||
SQLitePCL.Batteries_V2.Init();
|
var databasePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "..", "Library", databaseName);
|
||||||
var databasePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "..", "Library", databaseName);
|
return databasePath;
|
||||||
return databasePath;
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
@ -7,8 +7,12 @@
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<LangVersion>Latest</LangVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<LangVersion>Latest</LangVersion>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Remove="Resources\AdJTheme.xaml" />
|
<EmbeddedResource Remove="Resources\AdJTheme.xaml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -8,13 +8,15 @@ using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace AideDeJeu.ViewModels
|
namespace AideDeJeu.ViewModels
|
||||||
{
|
{
|
||||||
public abstract class FilterViewModel : BaseViewModel
|
public abstract class FilterViewModel : BaseViewModel
|
||||||
{
|
{
|
||||||
public ICommand LoadItemsCommand { get; protected set; }
|
public ICommand LoadItemsCommand { get; protected set; }
|
||||||
public abstract IEnumerable<Item> FilterItems(IEnumerable<Item> items);
|
public abstract Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = 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
|
||||||
|
|
@ -77,7 +79,7 @@ namespace AideDeJeu.ViewModels
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if(Index >= 0 && Index < KeyValues.Count)
|
if (Index >= 0 && Index < KeyValues.Count)
|
||||||
{
|
{
|
||||||
return KeyValues[Index].Key;
|
return KeyValues[Index].Key;
|
||||||
}
|
}
|
||||||
|
|
@ -94,7 +96,7 @@ namespace AideDeJeu.ViewModels
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if(_Filters == null)
|
if (_Filters == null)
|
||||||
{
|
{
|
||||||
_Filters = new List<Filter>()
|
_Filters = new List<Filter>()
|
||||||
{
|
{
|
||||||
|
|
@ -111,29 +113,31 @@ namespace AideDeJeu.ViewModels
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public override IEnumerable<Item> FilterItems(IEnumerable<Item> items)
|
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default)
|
||||||
{
|
{
|
||||||
var classe = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Class).SelectedKey ?? "";
|
return await Task.Run(() =>
|
||||||
var niveauMin = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinLevel).SelectedKey ?? "0";
|
{
|
||||||
var niveauMax = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxLevel).SelectedKey ?? "9";
|
var classe = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Class).SelectedKey ?? "";
|
||||||
var ecole = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.School).SelectedKey ?? "";
|
var niveauMin = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinLevel).SelectedKey ?? "0";
|
||||||
var rituel = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Ritual).SelectedKey ?? "";
|
var niveauMax = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxLevel).SelectedKey ?? "9";
|
||||||
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
|
var ecole = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.School).SelectedKey ?? "";
|
||||||
|
var rituel = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Ritual).SelectedKey ?? "";
|
||||||
|
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
|
||||||
|
token.ThrowIfCancellationRequested();
|
||||||
|
return items.Where(item =>
|
||||||
|
{
|
||||||
|
var spell = item as Spell;
|
||||||
|
return (int.Parse(spell.Level) >= int.Parse(niveauMin)) &&
|
||||||
|
(int.Parse(spell.Level) <= int.Parse(niveauMax)) &&
|
||||||
|
spell.Type.ToLower().Contains(ecole.ToLower()) &&
|
||||||
|
spell.Source.Contains(source) &&
|
||||||
|
spell.Source.Contains(classe) &&
|
||||||
|
spell.Type.Contains(rituel) &&
|
||||||
|
spell.NamePHB.ToLower().Contains(SearchText.ToLower());
|
||||||
|
}).OrderBy(spell => spell.NamePHB)
|
||||||
|
.AsEnumerable();
|
||||||
|
}, token);
|
||||||
|
|
||||||
return items
|
|
||||||
.Where(item =>
|
|
||||||
{
|
|
||||||
var spell = item as Spell;
|
|
||||||
return (int.Parse(spell.Level) >= int.Parse(niveauMin)) &&
|
|
||||||
(int.Parse(spell.Level) <= int.Parse(niveauMax)) &&
|
|
||||||
spell.Type.ToLower().Contains(ecole.ToLower()) &&
|
|
||||||
spell.Source.Contains(source) &&
|
|
||||||
spell.Source.Contains(classe) &&
|
|
||||||
spell.Type.Contains(rituel) &&
|
|
||||||
Helpers.RemoveDiacritics(spell.NamePHB).ToLower().Contains(Helpers.RemoveDiacritics(SearchText).ToLower());
|
|
||||||
})
|
|
||||||
.OrderBy(spell => spell.NamePHB)
|
|
||||||
.ToList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract List<KeyValuePair<string, string>> Classes { get; }
|
public abstract List<KeyValuePair<string, string>> Classes { get; }
|
||||||
|
|
@ -343,19 +347,30 @@ namespace AideDeJeu.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override IEnumerable<Item> FilterItems(IEnumerable<Item> items)
|
public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default)
|
||||||
{
|
{
|
||||||
var powerComparer = new PowerComparer();
|
return await Task.Run(() =>
|
||||||
|
{
|
||||||
|
var powerComparer = new PowerComparer();
|
||||||
|
|
||||||
//var category = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Category).SelectedKey ?? "";
|
//var category = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Category).SelectedKey ?? "";
|
||||||
var type = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Type).SelectedKey ?? "";
|
var type = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Type).SelectedKey ?? "";
|
||||||
var minPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinPower).SelectedKey ?? "0 (0 PX)";
|
token.ThrowIfCancellationRequested();
|
||||||
var maxPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxPower).SelectedKey ?? "30 (155000 PX)";
|
|
||||||
var size = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Size).SelectedKey ?? "";
|
|
||||||
//var legendary = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Legendary).SelectedKey ?? "";
|
|
||||||
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
|
|
||||||
|
|
||||||
return items.Where(item =>
|
var minPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinPower).SelectedKey ?? "0 (0 PX)";
|
||||||
|
token.ThrowIfCancellationRequested();
|
||||||
|
|
||||||
|
var maxPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxPower).SelectedKey ?? "30 (155000 PX)";
|
||||||
|
token.ThrowIfCancellationRequested();
|
||||||
|
|
||||||
|
var size = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Size).SelectedKey ?? "";
|
||||||
|
token.ThrowIfCancellationRequested();
|
||||||
|
//var legendary = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Legendary).SelectedKey ?? "";
|
||||||
|
|
||||||
|
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
|
||||||
|
token.ThrowIfCancellationRequested();
|
||||||
|
|
||||||
|
return items.Where(item =>
|
||||||
{
|
{
|
||||||
var monster = item as Monster;
|
var monster = item as Monster;
|
||||||
return monster.Type.Contains(type) &&
|
return monster.Type.Contains(type) &&
|
||||||
|
|
@ -365,8 +380,10 @@ namespace AideDeJeu.ViewModels
|
||||||
powerComparer.Compare(monster.Challenge, maxPower) <= 0 &&
|
powerComparer.Compare(monster.Challenge, maxPower) <= 0 &&
|
||||||
Helpers.RemoveDiacritics(monster.NamePHB).ToLower().Contains(Helpers.RemoveDiacritics(SearchText).ToLower());
|
Helpers.RemoveDiacritics(monster.NamePHB).ToLower().Contains(Helpers.RemoveDiacritics(SearchText).ToLower());
|
||||||
})
|
})
|
||||||
.OrderBy(monster => monster.NamePHB)
|
.OrderBy(monster => monster.NamePHB)
|
||||||
.ToList();
|
.AsEnumerable();
|
||||||
|
}, token);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract List<KeyValuePair<string, string>> Categories { get; }
|
public abstract List<KeyValuePair<string, string>> Categories { get; }
|
||||||
|
|
|
||||||
|
|
@ -8,15 +8,18 @@ using System.Diagnostics;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace AideDeJeu.ViewModels
|
namespace AideDeJeu.ViewModels
|
||||||
{
|
{
|
||||||
public abstract class ItemsViewModel : BaseViewModel
|
public abstract class ItemsViewModel : BaseViewModel
|
||||||
{
|
{
|
||||||
|
CancellationTokenSource cancellationTokenSource;
|
||||||
|
|
||||||
public ItemsViewModel(ItemSourceType itemSourceType)
|
public ItemsViewModel(ItemSourceType itemSourceType)
|
||||||
{
|
{
|
||||||
this.ItemSourceType = itemSourceType;
|
this.ItemSourceType = itemSourceType;
|
||||||
LoadItemsCommand = new Command(() => ExecuteLoadItemsCommand());
|
LoadItemsCommand = new Command(async () => await ExecuteLoadItemsCommandAsync());
|
||||||
}
|
}
|
||||||
public ICommand LoadItemsCommand { get; protected set; }
|
public ICommand LoadItemsCommand { get; protected set; }
|
||||||
//public abstract void ExecuteLoadItemsCommand();
|
//public abstract void ExecuteLoadItemsCommand();
|
||||||
|
|
@ -66,26 +69,28 @@ namespace AideDeJeu.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ExecuteLoadItemsCommand()
|
async Task LoadItemsAsync(CancellationToken token = default)
|
||||||
{
|
{
|
||||||
if (IsBusy)
|
|
||||||
return;
|
|
||||||
|
|
||||||
IsBusy = true;
|
IsBusy = true;
|
||||||
|
Main.IsLoading = true;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Main.Items.Clear();
|
|
||||||
|
|
||||||
var filterViewModel = Main.GetFilterViewModel(ItemSourceType);
|
var filterViewModel = Main.GetFilterViewModel(ItemSourceType);
|
||||||
var items = filterViewModel.FilterItems(AllItems);
|
var items = await filterViewModel.FilterItems(AllItems, token);
|
||||||
|
await Task.Run(() =>
|
||||||
foreach (var item in items)
|
|
||||||
{
|
{
|
||||||
Main.Items.Add(item);
|
Main.Items.Clear();
|
||||||
}
|
foreach (var item in items)
|
||||||
|
{
|
||||||
|
token.ThrowIfCancellationRequested();
|
||||||
|
Main.Items.Add(item);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//On arrete le loading ici car on annule toujours avant de lancer une nouvelle opération
|
||||||
|
Main.IsLoading = false;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (OperationCanceledException ex)
|
||||||
{
|
{
|
||||||
Debug.WriteLine(ex);
|
Debug.WriteLine(ex);
|
||||||
}
|
}
|
||||||
|
|
@ -95,6 +100,14 @@ namespace AideDeJeu.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task ExecuteLoadItemsCommandAsync()
|
||||||
|
{
|
||||||
|
if (cancellationTokenSource != null)
|
||||||
|
{
|
||||||
|
cancellationTokenSource.Cancel();
|
||||||
|
}
|
||||||
|
cancellationTokenSource = new CancellationTokenSource();
|
||||||
|
await LoadItemsAsync(cancellationTokenSource.Token);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,13 @@ namespace AideDeJeu.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool _isLoading;
|
||||||
|
public bool IsLoading
|
||||||
|
{
|
||||||
|
get => _isLoading;
|
||||||
|
set => SetProperty(ref _isLoading, value);
|
||||||
|
}
|
||||||
|
|
||||||
public Dictionary<ItemSourceType, Lazy<ItemsViewModel>> AllItemsViewModel = new Dictionary<ItemSourceType, Lazy<ItemsViewModel>>()
|
public Dictionary<ItemSourceType, Lazy<ItemsViewModel>> AllItemsViewModel = new Dictionary<ItemSourceType, Lazy<ItemsViewModel>>()
|
||||||
{
|
{
|
||||||
{ ItemSourceType.SpellVF, new Lazy<ItemsViewModel>(() => new SpellsViewModel(ItemSourceType.SpellVF)) },
|
{ ItemSourceType.SpellVF, new Lazy<ItemsViewModel>(() => new SpellsViewModel(ItemSourceType.SpellVF)) },
|
||||||
|
|
@ -116,21 +123,21 @@ namespace AideDeJeu.ViewModels
|
||||||
|
|
||||||
public MainViewModel()
|
public MainViewModel()
|
||||||
{
|
{
|
||||||
LoadItemsCommand = new Command(() =>
|
LoadItemsCommand = new Command(async () =>
|
||||||
{
|
{
|
||||||
GetItemsViewModel(ItemSourceType).ExecuteLoadItemsCommand();
|
await GetItemsViewModel(ItemSourceType).ExecuteLoadItemsCommandAsync();
|
||||||
});
|
});
|
||||||
GotoItemCommand = new Command<Item>(async (item) => await GetItemsViewModel(ItemSourceType).ExecuteGotoItemCommandAsync(item));
|
GotoItemCommand = new Command<Item>(async (item) => await GetItemsViewModel(ItemSourceType).ExecuteGotoItemCommandAsync(item));
|
||||||
SwitchToSpells = new Command(() => ItemSourceType = (ItemSourceType & ~ ItemSourceType.Monster) | ItemSourceType.Spell);
|
SwitchToSpells = new Command(() => ItemSourceType = (ItemSourceType & ~ItemSourceType.Monster) | ItemSourceType.Spell);
|
||||||
SwitchToMonsters = new Command(() => ItemSourceType = (ItemSourceType & ~ItemSourceType.Spell) | ItemSourceType.Monster);
|
SwitchToMonsters = new Command(() => ItemSourceType = (ItemSourceType & ~ItemSourceType.Spell) | ItemSourceType.Monster);
|
||||||
SwitchToVF = new Command(() => ItemSourceType = (ItemSourceType & ~ItemSourceType.VO & ~ItemSourceType.HD) | ItemSourceType.VF);
|
SwitchToVF = new Command(() => ItemSourceType = (ItemSourceType & ~ItemSourceType.VO & ~ItemSourceType.HD) | ItemSourceType.VF);
|
||||||
SwitchToVO = new Command(() => ItemSourceType = (ItemSourceType & ~ItemSourceType.VF & ~ItemSourceType.HD) | ItemSourceType.VO);
|
SwitchToVO = new Command(() => ItemSourceType = (ItemSourceType & ~ItemSourceType.VF & ~ItemSourceType.HD) | ItemSourceType.VO);
|
||||||
SwitchToHD = new Command(() => ItemSourceType = (ItemSourceType & ~ItemSourceType.VF & ~ItemSourceType.VO) | ItemSourceType.HD);
|
SwitchToHD = new Command(() => ItemSourceType = (ItemSourceType & ~ItemSourceType.VF & ~ItemSourceType.VO) | ItemSourceType.HD);
|
||||||
AboutCommand = new Command(async() => await Main.Navigator.GotoAboutPageAsync());
|
AboutCommand = new Command(async () => await Main.Navigator.GotoAboutPageAsync());
|
||||||
SearchCommand = new Command<string>((text) =>
|
SearchCommand = new Command<string>(async (text) =>
|
||||||
{
|
{
|
||||||
GetFilterViewModel(ItemSourceType).SearchText = text;
|
GetFilterViewModel(ItemSourceType).SearchText = text;
|
||||||
GetItemsViewModel(ItemSourceType).ExecuteLoadItemsCommand();
|
await GetItemsViewModel(ItemSourceType).ExecuteLoadItemsCommandAsync();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,45 +1,30 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
|
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:AideDeJeu.Views" xmlns:tools="clr-namespace:AideDeJeu.Tools" x:Class="AideDeJeu.Views.MainPage" x:Name="This" IsPresented="False" Title="">
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
|
||||||
xmlns:local="clr-namespace:AideDeJeu.Views"
|
|
||||||
xmlns:tools="clr-namespace:AideDeJeu.Tools"
|
|
||||||
x:Class="AideDeJeu.Views.MainPage"
|
|
||||||
x:Name="This"
|
|
||||||
IsPresented="False"
|
|
||||||
Title="">
|
|
||||||
<MasterDetailPage.Resources>
|
<MasterDetailPage.Resources>
|
||||||
<ResourceDictionary>
|
<ResourceDictionary>
|
||||||
<tools:ItemSourceTypeToStringConverter
|
<tools:ItemSourceTypeToStringConverter x:Key="ItemSourceTypeToTitleConverter" SpellVF="Sorts" SpellVO="Spells" SpellHD="Sorts (H&D)" MonsterVF="Monstres" MonsterVO="Monsters" MonsterHD="Créatures (H&D)" />
|
||||||
x:Key="ItemSourceTypeToTitleConverter"
|
<tools:ItemSourceTypeToItemsConverter x:Key="ItemSourceTypeToItemsConverter" />
|
||||||
SpellVF="Sorts"
|
<tools:ItemSourceTypeToFilterConverter x:Key="ItemSourceTypeToFilterConverter" />
|
||||||
SpellVO="Spells"
|
|
||||||
SpellHD="Sorts (H&D)"
|
|
||||||
MonsterVF="Monstres"
|
|
||||||
MonsterVO="Monsters"
|
|
||||||
MonsterHD="Créatures (H&D)"
|
|
||||||
/>
|
|
||||||
<tools:ItemSourceTypeToItemsConverter
|
|
||||||
x:Key="ItemSourceTypeToItemsConverter" />
|
|
||||||
<tools:ItemSourceTypeToFilterConverter
|
|
||||||
x:Key="ItemSourceTypeToFilterConverter" />
|
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</MasterDetailPage.Resources>
|
</MasterDetailPage.Resources>
|
||||||
<MasterDetailPage.Master>
|
<MasterDetailPage.Master>
|
||||||
<ContentPage Title=" ">
|
<ContentPage Title=" ">
|
||||||
<ListView ItemsSource="{Binding ItemSourceType, Converter={StaticResource ItemSourceTypeToFilterConverter}}" HasUnevenRows="True" RowHeight="-1" SeparatorVisibility="None" IsPullToRefreshEnabled="False" >
|
<AbsoluteLayout>
|
||||||
<ListView.ItemTemplate>
|
<ListView ItemsSource="{Binding ItemSourceType, Converter={StaticResource ItemSourceTypeToFilterConverter}}" HasUnevenRows="True" RowHeight="-1" SeparatorVisibility="None" IsPullToRefreshEnabled="False">
|
||||||
<DataTemplate>
|
<ListView.ItemTemplate>
|
||||||
<ViewCell>
|
<DataTemplate>
|
||||||
<ViewCell.View>
|
<ViewCell>
|
||||||
<StackLayout Margin="10,5,10,0" Padding="0" Spacing="0">
|
<ViewCell.View>
|
||||||
<Label BindingContext="{Binding}" Text="{Binding Name}" Style="{StaticResource Key=subsubsection}" />
|
<StackLayout Margin="10,5,10,0" Padding="0" Spacing="0">
|
||||||
<Picker HorizontalOptions="FillAndExpand" ItemsSource="{Binding KeyValues, Mode=OneWay}" ItemDisplayBinding="{Binding Value, Mode=OneWay}" SelectedIndex="{Binding Index}" />
|
<Label BindingContext="{Binding}" Text="{Binding Name}" Style="{StaticResource Key=subsubsection}" />
|
||||||
</StackLayout>
|
<Picker HorizontalOptions="FillAndExpand" ItemsSource="{Binding KeyValues, Mode=OneWay}" ItemDisplayBinding="{Binding Value, Mode=OneWay}" SelectedIndex="{Binding Index}" />
|
||||||
</ViewCell.View>
|
</StackLayout>
|
||||||
</ViewCell>
|
</ViewCell.View>
|
||||||
</DataTemplate>
|
</ViewCell>
|
||||||
</ListView.ItemTemplate>
|
</DataTemplate>
|
||||||
</ListView>
|
</ListView.ItemTemplate>
|
||||||
|
</ListView>
|
||||||
|
</AbsoluteLayout>
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
</MasterDetailPage.Master>
|
</MasterDetailPage.Master>
|
||||||
<MasterDetailPage.Detail>
|
<MasterDetailPage.Detail>
|
||||||
|
|
@ -54,40 +39,29 @@
|
||||||
<ToolbarItem Name="VO" Text="VO AideDD/SRD" Order="Secondary" Command="{Binding SwitchToVO}" />
|
<ToolbarItem Name="VO" Text="VO AideDD/SRD" Order="Secondary" Command="{Binding SwitchToVO}" />
|
||||||
<ToolbarItem Name="HD" Text="VF H&D" Order="Secondary" Command="{Binding SwitchToHD}" />
|
<ToolbarItem Name="HD" Text="VF H&D" Order="Secondary" Command="{Binding SwitchToHD}" />
|
||||||
</ContentPage.ToolbarItems>
|
</ContentPage.ToolbarItems>
|
||||||
<StackLayout Orientation="Vertical">
|
<AbsoluteLayout>
|
||||||
<SearchBar x:Name="SearchBar" SearchCommand="{Binding SearchCommand}" SearchCommandParameter="{Binding Text, Source={x:Reference SearchBar}}">
|
<StackLayout Orientation="Vertical">
|
||||||
<SearchBar.Behaviors>
|
<SearchBar x:Name="SearchBar" SearchCommand="{Binding SearchCommand}" SearchCommandParameter="{Binding Text, Source={x:Reference SearchBar}}">
|
||||||
<tools:TextChangedBehavior />
|
<SearchBar.Behaviors>
|
||||||
</SearchBar.Behaviors>
|
<tools:TextChangedBehavior />
|
||||||
</SearchBar>
|
</SearchBar.Behaviors>
|
||||||
|
</SearchBar>
|
||||||
<ListView
|
<ListView x:Name="ItemsListView" ItemsSource="{Binding Items}" VerticalOptions="FillAndExpand" HasUnevenRows="true" IsRefreshing="{Binding IsBusy, Mode=OneWay}" CachingStrategy="RecycleElement" SelectedItem="{Binding SelectedItem}" ItemTapped="ItemsListView_ItemTapped">
|
||||||
x:Name="ItemsListView"
|
<ListView.ItemTemplate>
|
||||||
ItemsSource="{Binding Items}"
|
<DataTemplate>
|
||||||
VerticalOptions="FillAndExpand"
|
<ViewCell>
|
||||||
HasUnevenRows="true"
|
<StackLayout Padding="10">
|
||||||
IsRefreshing="{Binding IsBusy, Mode=OneWay}"
|
<Label Text="{Binding NamePHB}" LineBreakMode="NoWrap" Style="{DynamicResource subsubsection}" FontSize="16" />
|
||||||
CachingStrategy="RecycleElement"
|
</StackLayout>
|
||||||
SelectedItem="{Binding SelectedItem}"
|
</ViewCell>
|
||||||
ItemTapped="ItemsListView_ItemTapped">
|
</DataTemplate>
|
||||||
|
</ListView.ItemTemplate>
|
||||||
<ListView.ItemTemplate>
|
</ListView>
|
||||||
<DataTemplate>
|
</StackLayout>
|
||||||
<ViewCell>
|
<ActivityIndicator AbsoluteLayout.LayoutBounds="0.5,0.5" AbsoluteLayout.LayoutFlags="XProportional, YProportional" IsRunning="{x:Binding IsLoading}" Color="Olive" />
|
||||||
<StackLayout Padding="10">
|
</AbsoluteLayout>
|
||||||
<Label
|
|
||||||
Text="{Binding NamePHB}"
|
|
||||||
LineBreakMode="NoWrap"
|
|
||||||
Style="{DynamicResource subsubsection}"
|
|
||||||
FontSize="16" />
|
|
||||||
</StackLayout>
|
|
||||||
</ViewCell>
|
|
||||||
</DataTemplate>
|
|
||||||
</ListView.ItemTemplate>
|
|
||||||
</ListView>
|
|
||||||
</StackLayout>
|
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
</x:Arguments>
|
</x:Arguments>
|
||||||
</NavigationPage>
|
</NavigationPage>
|
||||||
</MasterDetailPage.Detail>
|
</MasterDetailPage.Detail>
|
||||||
</MasterDetailPage>
|
</MasterDetailPage>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue