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

Déplacements

This commit is contained in:
Yan Maniez 2019-04-17 21:54:14 +02:00
parent 73dc2a2a20
commit 2bb2173f01
39 changed files with 107 additions and 72 deletions

View file

@ -50,22 +50,22 @@
<Compile Update="Views\AboutPage.xaml.cs"> <Compile Update="Views\AboutPage.xaml.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Update="Views\ItemDetailPage.xaml.cs"> <Compile Update="Views\Library\ItemDetailPage.xaml.cs">
<DependentUpon>ItemDetailPage.xaml</DependentUpon> <DependentUpon>ItemDetailPage.xaml</DependentUpon>
</Compile> </Compile>
<Compile Update="Views\FilteredItemsPage.xaml.cs"> <Compile Update="Views\Library\FilteredItemsPage.xaml.cs">
<DependentUpon>FilteredItemsPage.xaml</DependentUpon> <DependentUpon>FilteredItemsPage.xaml</DependentUpon>
</Compile> </Compile>
<Compile Update="Views\ItemsPage.xaml.cs"> <Compile Update="Views\Library\ItemsPage.xaml.cs">
<DependentUpon>ItemsPage.xaml</DependentUpon> <DependentUpon>ItemsPage.xaml</DependentUpon>
</Compile> </Compile>
<Compile Update="Views\MainTabbedPage.xaml.cs"> <Compile Update="Views\Library\MainTabbedPage.xaml.cs">
<DependentUpon>MainTabbedPage.xaml</DependentUpon> <DependentUpon>MainTabbedPage.xaml</DependentUpon>
</Compile> </Compile>
<Compile Update="Views\ItemPicker.xaml.cs"> <Compile Update="Views\PlayerCharacter\ItemPicker.xaml.cs">
<DependentUpon>ItemPicker.xaml</DependentUpon> <DependentUpon>ItemPicker.xaml</DependentUpon>
</Compile> </Compile>
<Compile Update="Views\ItemPickerView.xaml.cs"> <Compile Update="Views\PlayerCharacter\ItemPickerView.xaml.cs">
<DependentUpon>ItemPickerView.xaml</DependentUpon> <DependentUpon>ItemPickerView.xaml</DependentUpon>
</Compile> </Compile>
</ItemGroup> </ItemGroup>
@ -85,10 +85,10 @@
<Generator>PublicResXFileCodeGenerator</Generator> <Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Resource.Designer.cs</LastGenOutput> <LastGenOutput>Resource.Designer.cs</LastGenOutput>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Update="Views\BookmarksPage.xaml"> <EmbeddedResource Update="Views\Library\BookmarksPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator> <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Update="Views\DeepSearchPage.xaml"> <EmbeddedResource Update="Views\Library\DeepSearchPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator> <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Update="Views\MainNavigationPage.xaml"> <EmbeddedResource Update="Views\MainNavigationPage.xaml">
@ -100,16 +100,16 @@
<EmbeddedResource Update="Views\MainShell.xaml"> <EmbeddedResource Update="Views\MainShell.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator> <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Update="Views\MainTabbedPage.xaml"> <EmbeddedResource Update="Views\Library\MainTabbedPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator> <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Update="Views\PlayerCharacterEditorPage.xaml"> <EmbeddedResource Update="Views\PlayerCharacter\PlayerCharacterEditorPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator> <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Update="Views\StringPicker.xaml"> <EmbeddedResource Update="Views\PlayerCharacter\StringPicker.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator> <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Update="Views\StringPickerView.xaml"> <EmbeddedResource Update="Views\PlayerCharacter\StringPickerView.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator> <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Update="Views\TextInputCancellableView.xaml"> <EmbeddedResource Update="Views\TextInputCancellableView.xaml">

View file

@ -1,4 +1,5 @@
using AideDeJeu.ViewModels; using AideDeJeu.ViewModels;
using AideDeJeu.ViewModels.Library;
using AideDeJeu.Views; using AideDeJeu.Views;
using AideDeJeuLib; using AideDeJeuLib;
using System.Linq; using System.Linq;

View file

@ -1,4 +1,5 @@
using AideDeJeu.ViewModels; using AideDeJeu.ViewModels;
using AideDeJeu.ViewModels.Library;
namespace AideDeJeuLib namespace AideDeJeuLib
{ {

View file

@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Text;
namespace AideDeJeuLib
{
public class ItemAttribute
{
public ItemAttribute(string key, string value)
{
Key = key;
Value = value;
}
public string Key { get; set; }
public string Value { get; set; }
public static OrderedDictionary ExtractKeyValues(OrderedDictionary attributes)
{
var dico = new OrderedDictionary();
foreach (string akey in attributes.Keys)
{
if (akey.EndsWith("Key"))
{
var key = akey.Substring(0, akey.Length - 3);
if (attributes.Contains(key + "Value"))
{
dico[key] = new ItemAttribute(attributes[key + "Key"] as string, attributes[key + "Value"] as string);
}
}
}
return dico;
}
}
}

View file

@ -1,5 +1,6 @@
using AideDeJeu.Tools; using AideDeJeu.Tools;
using AideDeJeu.ViewModels; using AideDeJeu.ViewModels;
using AideDeJeu.ViewModels.Library;
using SQLite; using SQLite;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -349,16 +350,6 @@ namespace AideDeJeuLib
return $"{Name} ({NewId})"; return $"{Name} ({NewId})";
} }
public class Attribute
{
public Attribute(string key, string value)
{
Key = key;
Value = value;
}
public string Key { get; set; }
public string Value { get; set; }
}
[NotMapped] [NotMapped]
[IgnoreDataMember] [IgnoreDataMember]
public virtual OrderedDictionary Attributes { get; set; } = new OrderedDictionary(); public virtual OrderedDictionary Attributes { get; set; } = new OrderedDictionary();
@ -367,19 +358,7 @@ namespace AideDeJeuLib
{ {
get get
{ {
var dico = new OrderedDictionary(); return ItemAttribute.ExtractKeyValues(Attributes);
foreach (string akey in Attributes.Keys)
{
if (akey.EndsWith("Key"))
{
var key = akey.Substring(0, akey.Length - 3);
if (Attributes.Contains(key + "Value"))
{
dico[key] = new Attribute(Attributes[key + "Key"] as string, Attributes[key + "Value"] as string);
}
}
}
return dico;
} }
} }

View file

@ -1,4 +1,5 @@
using AideDeJeu.ViewModels; using AideDeJeu.ViewModels;
using AideDeJeu.ViewModels.Library;
namespace AideDeJeuLib namespace AideDeJeuLib
{ {

View file

@ -1,4 +1,5 @@
using AideDeJeu.ViewModels; using AideDeJeu.ViewModels;
using AideDeJeu.ViewModels.Library;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;

View file

@ -5,6 +5,7 @@ using System.Runtime.Serialization;
using System.Text; using System.Text;
using YamlDotNet.Serialization; using YamlDotNet.Serialization;
using System.Linq; using System.Linq;
using AideDeJeu.ViewModels.Library;
namespace AideDeJeuLib namespace AideDeJeuLib
{ {

View file

@ -1,4 +1,5 @@
using System; using AideDeJeu.ViewModels.Library;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;

View file

@ -11,7 +11,7 @@ using System.Windows.Input;
using Xamarin.Forms; using Xamarin.Forms;
using Xamarin.Forms.Internals; using Xamarin.Forms.Internals;
namespace AideDeJeu.ViewModels namespace AideDeJeu.ViewModels.Library
{ {
public class BookmarksViewModel : BaseViewModel public class BookmarksViewModel : BaseViewModel
{ {

View file

@ -9,7 +9,7 @@ using System.Threading.Tasks;
using System.Windows.Input; using System.Windows.Input;
using Xamarin.Forms; using Xamarin.Forms;
namespace AideDeJeu.ViewModels namespace AideDeJeu.ViewModels.Library
{ {
public class DeepSearchViewModel : BaseViewModel public class DeepSearchViewModel : BaseViewModel
{ {

View file

@ -6,7 +6,7 @@ using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Input; using System.Windows.Input;
namespace AideDeJeu.ViewModels namespace AideDeJeu.ViewModels.Library
{ {
public abstract class FilterViewModel : BaseViewModel public abstract class FilterViewModel : BaseViewModel
{ {

View file

@ -1,6 +1,6 @@
using AideDeJeuLib; using AideDeJeuLib;
namespace AideDeJeu.ViewModels namespace AideDeJeu.ViewModels.Library
{ {
public class ItemDetailViewModel : BaseViewModel public class ItemDetailViewModel : BaseViewModel
{ {

View file

@ -8,7 +8,7 @@ using System.Threading.Tasks;
using System.Windows.Input; using System.Windows.Input;
using Xamarin.Forms; using Xamarin.Forms;
namespace AideDeJeu.ViewModels namespace AideDeJeu.ViewModels.Library
{ {
public class ItemsViewModel : BaseViewModel public class ItemsViewModel : BaseViewModel
{ {

View file

@ -1,4 +1,5 @@
using AideDeJeu.Tools; using AideDeJeu.Tools;
using AideDeJeu.ViewModels.Library;
using AideDeJeu.Views; using AideDeJeu.Views;
using AideDeJeuLib; using AideDeJeuLib;
using Rg.Plugins.Popup.Services; using Rg.Plugins.Popup.Services;

View file

@ -11,14 +11,14 @@ using System.Threading.Tasks;
using System.Windows.Input; using System.Windows.Input;
using Xamarin.Forms; using Xamarin.Forms;
namespace AideDeJeu.ViewModels namespace AideDeJeu.ViewModels.PlayerCharacter
{ {
public class PlayerCharacterEditorViewModel : BaseViewModel public class PlayerCharacterEditorViewModel : BaseViewModel
{ {
public PlayerCharacterEditorViewModel() public PlayerCharacterEditorViewModel()
{ {
ResetAlignments(); ResetAlignments();
Races = new NotifyTaskCompletion<List<ExpandedRaceItem>>(Task.Run(() => LoadRacesAsync())); Races = new NotifyTaskCompletion<List<RaceViewModel>>(Task.Run(() => LoadRacesAsync()));
Classes = new NotifyTaskCompletion<List<ClassItem>>(Task.Run(() => LoadClassesAsync())); Classes = new NotifyTaskCompletion<List<ClassItem>>(Task.Run(() => LoadClassesAsync()));
Backgrounds = new NotifyTaskCompletion<List<BackgroundItem>>(Task.Run(() => LoadBackgroundsAsync())); Backgrounds = new NotifyTaskCompletion<List<BackgroundItem>>(Task.Run(() => LoadBackgroundsAsync()));
@ -149,7 +149,7 @@ namespace AideDeJeu.ViewModels
#endregion Alignment #endregion Alignment
#region Race #region Race
public NotifyTaskCompletion<List<ExpandedRaceItem>> Races { get; private set; } public NotifyTaskCompletion<List<RaceViewModel>> Races { get; private set; }
private int _RaceSelectedIndex = -1; private int _RaceSelectedIndex = -1;
public int RaceSelectedIndex public int RaceSelectedIndex
{ {
@ -166,8 +166,8 @@ namespace AideDeJeu.ViewModels
} }
} }
} }
private ExpandedRaceItem _SelectedRace = null; private RaceViewModel _SelectedRace = null;
public ExpandedRaceItem SelectedRace public RaceViewModel SelectedRace
{ {
get get
{ {
@ -180,19 +180,19 @@ namespace AideDeJeu.ViewModels
} }
} }
public class ExpandedRaceItem : RaceItem public class RaceViewModel : BaseViewModel
{ {
public RaceItem Race { get; set; } public RaceItem Race { get; set; }
public SubRaceItem SubRace { get; set; } public SubRaceItem SubRace { get; set; }
private RaceItem RaceOrSubRace { get { return SubRace ?? Race; } } private RaceItem RaceOrSubRace { get { return SubRace ?? Race; } }
public override string Name { get { return RaceOrSubRace.Name; } } public string Name { get { return RaceOrSubRace.Name; } }
public override string Description { get { return RaceOrSubRace.Description; } } public string Description { get { return RaceOrSubRace.Description; } }
public override string NewId { get { return RaceOrSubRace.NewId; } } public string NewId { get { return RaceOrSubRace.NewId; } }
public override string Id { get { return RaceOrSubRace.Id; } } public string Id { get { return RaceOrSubRace.Id; } }
public override string RootId { get { return RaceOrSubRace.RootId; } } public string RootId { get { return RaceOrSubRace.RootId; } }
public override string AbilityScoreIncrease public string AbilityScoreIncrease
{ {
get get
{ {
@ -203,7 +203,7 @@ namespace AideDeJeu.ViewModels
return Race.AbilityScoreIncrease; return Race.AbilityScoreIncrease;
} }
} }
public override OrderedDictionary Attributes public OrderedDictionary Attributes
{ {
get get
{ {
@ -224,18 +224,26 @@ namespace AideDeJeu.ViewModels
} }
} }
public override string Age { get { return Race.Age; } } public virtual OrderedDictionary AttributesKeyValue
public override string Alignment { get { return Race.Alignment; } } {
public override string Size { get { return Race.Size; } } get
public override string Speed { get { return Race.Speed; } } {
public override string Darkvision { get { return Race.Darkvision; } } return AideDeJeuLib.ItemAttribute.ExtractKeyValues(Attributes);
public override string Languages { get { return Race.Languages; } } }
}
public string Age { get { return Race.Age; } }
public string Alignment { get { return Race.Alignment; } }
public string Size { get { return Race.Size; } }
public string Speed { get { return Race.Speed; } }
public string Darkvision { get { return Race.Darkvision; } }
public string Languages { get { return Race.Languages; } }
} }
public async Task<List<ExpandedRaceItem>> LoadRacesAsync() public async Task<List<RaceViewModel>> LoadRacesAsync()
{ {
using (var context = await StoreViewModel.GetLibraryContextAsync()) using (var context = await StoreViewModel.GetLibraryContextAsync())
{ {
var expandedRaces = new List<ExpandedRaceItem>(); var expandedRaces = new List<RaceViewModel>();
var races = context.Races.Where(r => r.GetType() == typeof(RaceItem)); var races = context.Races.Where(r => r.GetType() == typeof(RaceItem));
foreach(var race in races) foreach(var race in races)
{ {
@ -244,12 +252,12 @@ namespace AideDeJeu.ViewModels
var subraces = context.SubRaces.Where(sr => sr.ParentLink == race.Id); var subraces = context.SubRaces.Where(sr => sr.ParentLink == race.Id);
foreach(var subrace in subraces) foreach(var subrace in subraces)
{ {
expandedRaces.Add(new ExpandedRaceItem() { Race = race, SubRace = subrace }); expandedRaces.Add(new RaceViewModel() { Race = race, SubRace = subrace });
} }
} }
else else
{ {
expandedRaces.Add(new ExpandedRaceItem() { Race = race, SubRace = null }); expandedRaces.Add(new RaceViewModel() { Race = race, SubRace = null });
} }
} }
return expandedRaces.OrderBy(r => Tools.Helpers.RemoveDiacritics(r.Name)).ToList(); return expandedRaces.OrderBy(r => Tools.Helpers.RemoveDiacritics(r.Name)).ToList();

View file

@ -3,7 +3,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
namespace AideDeJeu.ViewModels namespace AideDeJeu.ViewModels.PlayerCharacter
{ {
public class PlayerCharacterViewModel : BaseViewModel public class PlayerCharacterViewModel : BaseViewModel
{ {

View file

@ -1,4 +1,5 @@
using AideDeJeu.ViewModels; using AideDeJeu.ViewModels;
using AideDeJeu.ViewModels.Library;
using AideDeJeuLib; using AideDeJeuLib;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;

View file

@ -1,4 +1,5 @@
using AideDeJeu.ViewModels; using AideDeJeu.ViewModels;
using AideDeJeu.ViewModels.Library;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -7,7 +8,7 @@ using System.Threading.Tasks;
using Xamarin.Forms; using Xamarin.Forms;
using Xamarin.Forms.Xaml; using Xamarin.Forms.Xaml;
using static AideDeJeu.ViewModels.DeepSearchViewModel; using static AideDeJeu.ViewModels.Library.DeepSearchViewModel;
namespace AideDeJeu.Views namespace AideDeJeu.Views
{ {

View file

@ -1,4 +1,5 @@
using AideDeJeu.ViewModels; using AideDeJeu.ViewModels;
using AideDeJeu.ViewModels.Library;
using System; using System;
using System.Linq; using System.Linq;
using Xamarin.Forms; using Xamarin.Forms;

View file

@ -1,5 +1,6 @@
 
using AideDeJeu.ViewModels; using AideDeJeu.ViewModels;
using AideDeJeu.ViewModels.Library;
using AideDeJeuLib; using AideDeJeuLib;
using SkiaSharp; using SkiaSharp;
using SkiaSharp.Views.Forms; using SkiaSharp.Views.Forms;

View file

@ -1,4 +1,5 @@
using AideDeJeu.ViewModels; using AideDeJeu.ViewModels;
using AideDeJeu.ViewModels.Library;
using System; using System;
using System.Linq; using System.Linq;
using Xamarin.Forms; using Xamarin.Forms;

View file

@ -14,7 +14,7 @@ namespace AideDeJeu.Views
[XamlCompilation(XamlCompilationOptions.Compile)] [XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ItemPicker : ContentPage public partial class ItemPicker : ContentPage
{ {
public PickerViewModel<Item> ViewModel { get; set; } = new PickerViewModel<Item>(); public PickerViewModel<object> ViewModel { get; set; } = new PickerViewModel<object>();
public ItemPicker() public ItemPicker()
{ {
InitializeComponent(); InitializeComponent();

View file

@ -49,16 +49,16 @@ namespace AideDeJeu.Views
typeof(ItemPickerView), typeof(ItemPickerView),
defaultValue: default(string)); defaultValue: default(string));
public Item SelectedItem public object SelectedItem
{ {
get { return (Item)GetValue(SelectedItemProperty); } get { return (object)GetValue(SelectedItemProperty); }
set { SetValue(SelectedItemProperty, value); } set { SetValue(SelectedItemProperty, value); }
} }
public static readonly BindableProperty SelectedItemProperty = BindableProperty.Create( public static readonly BindableProperty SelectedItemProperty = BindableProperty.Create(
nameof(SelectedItem), nameof(SelectedItem),
typeof(Item), typeof(object),
typeof(ItemPickerView), typeof(ItemPickerView),
defaultValue: default(Item), defaultValue: default(object),
defaultBindingMode: BindingMode.TwoWay); defaultBindingMode: BindingMode.TwoWay);
public System.Collections.IEnumerable ItemsSource public System.Collections.IEnumerable ItemsSource
@ -85,7 +85,7 @@ namespace AideDeJeu.Views
return new Command<System.Collections.IList>(async (items) => SelectedItem = await ExecuteItemPickerCommandAsync(items)); return new Command<System.Collections.IList>(async (items) => SelectedItem = await ExecuteItemPickerCommandAsync(items));
} }
} }
private async Task<Item> ExecuteItemPickerCommandAsync(System.Collections.IEnumerable items) private async Task<object> ExecuteItemPickerCommandAsync(System.Collections.IEnumerable items)
{ {
var picker = new Views.ItemPicker(); var picker = new Views.ItemPicker();
var vm = picker.ViewModel; var vm = picker.ViewModel;

View file

@ -1,4 +1,5 @@
using AideDeJeu.ViewModels; using AideDeJeu.ViewModels;
using AideDeJeu.ViewModels.PlayerCharacter;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;