1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-29 14:35:45 +00:00

Colmatage bookmarks

This commit is contained in:
Yan Maniez 2019-10-14 17:42:34 +02:00
parent e34223173f
commit 72f450dab9
7 changed files with 135 additions and 80 deletions

View file

@ -1,4 +1,5 @@
using AideDeJeu.Pdf;
using AideDeJeu.Repositories;
using AideDeJeu.ViewModels;
using AideDeJeu.ViewModels.Library;
using AideDeJeu.ViewModels.PlayerCharacter;
@ -22,7 +23,7 @@ namespace AideDeJeu
DependencyService.Register<MainViewModel>();
DependencyService.Register<PdfService>();
DependencyService.Register<BookmarksViewModel>();
DependencyService.Register<BookmarksRepository>();
DependencyService.Register<StoreViewModel>();
DependencyService.Register<PlayerCharacterEditorViewModel>();
var vm = DependencyService.Get<MainViewModel>();

View file

@ -1,10 +1,51 @@
using System;
using AideDeJeu.ViewModels;
using AideDeJeuLib;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
namespace AideDeJeu.Repositories
{
public class BookmarksRepository
public class BookmarksRepository : BaseViewModel
{
public ObservableCollection<string> BookmarkCollectionNames { get; set; } = new ObservableCollection<string>()
{
"Général",
"Grimoire",
"Bestiaire",
"Sac",
"Nouvelle liste",
};
private int _BookmarkCollectionIndex = 0;
public int BookmarkCollectionIndex
{
get
{
return _BookmarkCollectionIndex;
}
set
{
SetProperty(ref _BookmarkCollectionIndex, value);
//LoadBookmarkCollection(BookmarkCollectionNames[BookmarkCollectionIndex]);
}
}
public Dictionary<string, ObservableCollection<Item>> _BookmarkCollections = new Dictionary<string, ObservableCollection<Item>>();
public ObservableCollection<Item> _BookmarkCollection = new ObservableCollection<Item>();
public ObservableCollection<Item> BookmarkCollection
{
get
{
return _BookmarkCollection;
}
set
{
SetProperty(ref _BookmarkCollection, value);
}
}
}
}

View file

@ -1,10 +1,13 @@
using System;
using AideDeJeu.ViewModels;
using AideDeJeuLib;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
namespace AideDeJeu.Repositories
{
public class LibraryRepository
public class LibraryRepository : BaseViewModel
{
}
}

View file

@ -1,4 +1,5 @@
using AideDeJeu.ViewModels.Library;
using AideDeJeu.Repositories;
using AideDeJeu.ViewModels.Library;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@ -17,11 +18,11 @@ namespace AideDeJeu.ViewModels
return DependencyService.Get<MainViewModel>();
}
}
public BookmarksViewModel Bookmarks
public BookmarksRepository Bookmarks
{
get
{
return DependencyService.Get<BookmarksViewModel>();
return DependencyService.Get<BookmarksRepository>();
}
}
public StoreViewModel Store

View file

@ -1,4 +1,5 @@
using AideDeJeuLib;
using AideDeJeu.Repositories;
using AideDeJeuLib;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
@ -16,49 +17,56 @@ namespace AideDeJeu.ViewModels.Library
{
public class BookmarksViewModel : BaseViewModel
{
public BookmarksRepository Repository
{
get
{
return DependencyService.Get<BookmarksRepository>();
}
}
public BookmarksViewModel()
{
//LoadBookmarkCollectionAsync(BookmarkCollectionNames[BookmarkCollectionIndex]).ConfigureAwait(true);
LoadBookmarkCollectionsAsync().ConfigureAwait(true);
}
public ObservableCollection<string> BookmarkCollectionNames { get; set; } = new ObservableCollection<string>()
{
"Général",
"Grimoire",
"Bestiaire",
"Sac",
"Nouvelle liste",
};
//public ObservableCollection<string> BookmarkCollectionNames { get; set; } = new ObservableCollection<string>()
//{
// "Général",
// "Grimoire",
// "Bestiaire",
// "Sac",
// "Nouvelle liste",
//};
private int _BookmarkCollectionIndex = 0;
public int BookmarkCollectionIndex
{
get
{
return _BookmarkCollectionIndex;
}
set
{
SetProperty(ref _BookmarkCollectionIndex, value);
//LoadBookmarkCollection(BookmarkCollectionNames[BookmarkCollectionIndex]);
}
}
//private int _BookmarkCollectionIndex = 0;
//public int BookmarkCollectionIndex
//{
// get
// {
// return _BookmarkCollectionIndex;
// }
// set
// {
// SetProperty(ref _BookmarkCollectionIndex, value);
// //LoadBookmarkCollection(BookmarkCollectionNames[BookmarkCollectionIndex]);
// }
//}
private Dictionary<string, ObservableCollection<Item>> _BookmarkCollections = new Dictionary<string, ObservableCollection<Item>>();
//private Dictionary<string, ObservableCollection<Item>> _BookmarkCollections = new Dictionary<string, ObservableCollection<Item>>();
private ObservableCollection<Item> _BookmarkCollection = new ObservableCollection<Item>();
public ObservableCollection<Item> BookmarkCollection
{
get
{
return _BookmarkCollection;
}
set
{
SetProperty(ref _BookmarkCollection, value);
}
}
//private ObservableCollection<Item> _BookmarkCollection = new ObservableCollection<Item>();
//public ObservableCollection<Item> BookmarkCollection
//{
// get
// {
// return _BookmarkCollection;
// }
// set
// {
// SetProperty(ref _BookmarkCollection, value);
// }
//}
private ICommand _SelectedIndexChangedCommand = null;
public ICommand SelectedIndexChangedCommand
@ -71,24 +79,24 @@ namespace AideDeJeu.ViewModels.Library
private async Task ExecuteSelectedIndexChangedCommandAsync()
{
if (BookmarkCollectionIndex >= 0 && BookmarkCollectionIndex < BookmarkCollectionNames.Count - 1)
if (Repository.BookmarkCollectionIndex >= 0 && Repository.BookmarkCollectionIndex < Repository.BookmarkCollectionNames.Count - 1)
{
await LoadBookmarkCollectionAsync(BookmarkCollectionNames[BookmarkCollectionIndex]);
await LoadBookmarkCollectionAsync(Repository.BookmarkCollectionNames[Repository.BookmarkCollectionIndex]);
}
else if (BookmarkCollectionIndex == BookmarkCollectionNames.Count - 1)
else if (Repository.BookmarkCollectionIndex == Repository.BookmarkCollectionNames.Count - 1)
{
var result = await Main.Navigator.OpenCancellableTextInputAlertDialog("");
if (result.Item2 == Navigator.PopupResultEnum.Save)
{
var index = BookmarkCollectionNames.Count - 1;
BookmarkCollectionNames.Insert(index, result.Item1);
var index = Repository.BookmarkCollectionNames.Count - 1;
Repository.BookmarkCollectionNames.Insert(index, result.Item1);
//BookmarkCollectionIndex = index;
BookmarkCollectionIndex = 0;
Repository.BookmarkCollectionIndex = 0;
await SaveBookmarksAsync();
}
else
{
BookmarkCollectionIndex = 0;
Repository.BookmarkCollectionIndex = 0;
}
}
}
@ -121,7 +129,7 @@ namespace AideDeJeu.ViewModels.Library
private async Task ExecuteRemoveItemCommandAsync(Item item)
{
BookmarkCollection.Remove(item);
Repository.BookmarkCollection.Remove(item);
await SaveBookmarksAsync();
}
@ -136,10 +144,10 @@ namespace AideDeJeu.ViewModels.Library
private async Task ExecuteMoveUpItemCommandAsync(Item item)
{
var index = BookmarkCollection.IndexOf(item);
var index = Repository.BookmarkCollection.IndexOf(item);
if (index > 0)
{
BookmarkCollection.Move(index, index - 1);
Repository.BookmarkCollection.Move(index, index - 1);
await SaveBookmarksAsync();
}
}
@ -155,10 +163,10 @@ namespace AideDeJeu.ViewModels.Library
private async Task ExecuteMoveDownItemCommandAsync(Item item)
{
var index = BookmarkCollection.IndexOf(item);
if (index < BookmarkCollection.Count - 1)
var index = Repository.BookmarkCollection.IndexOf(item);
if (index < Repository.BookmarkCollection.Count - 1)
{
BookmarkCollection.Move(index, index + 1);
Repository.BookmarkCollection.Move(index, index + 1);
await SaveBookmarksAsync();
}
}
@ -174,27 +182,27 @@ namespace AideDeJeu.ViewModels.Library
private async Task ExecuteConfigureCommandAsync()
{
var result = await Main.Navigator.OpenCancellableTextInputAlertDialog(BookmarkCollectionNames[BookmarkCollectionIndex]);
var result = await Main.Navigator.OpenCancellableTextInputAlertDialog(Repository.BookmarkCollectionNames[Repository.BookmarkCollectionIndex]);
if (result.Item2 == Navigator.PopupResultEnum.Delete)
{
var confirm = await App.Current.MainPage.DisplayAlert("Supprimer ?", "Etes vous sûr de vouloir supprimer la liste ?", "Supprimer", "Annuler");
if (confirm)
{
var index = BookmarkCollectionIndex;
var name = BookmarkCollectionNames[BookmarkCollectionIndex];
var index = Repository.BookmarkCollectionIndex;
var name = Repository.BookmarkCollectionNames[Repository.BookmarkCollectionIndex];
await SaveBookmarksAsync(name, null);
BookmarkCollectionNames.Remove(name);
BookmarkCollectionIndex = 0;
Repository.BookmarkCollectionNames.Remove(name);
Repository.BookmarkCollectionIndex = 0;
}
}
else if (result.Item2 == Navigator.PopupResultEnum.Save)
{
var index = BookmarkCollectionIndex;
var items = await GetBookmarkCollectionAsync(BookmarkCollectionNames[index]);
await SaveBookmarksAsync(BookmarkCollectionNames[index], null);
BookmarkCollectionNames[index] = result.Item1;
await SaveBookmarksAsync(BookmarkCollectionNames[index], items);
BookmarkCollectionIndex = index;
var index = Repository.BookmarkCollectionIndex;
var items = await GetBookmarkCollectionAsync(Repository.BookmarkCollectionNames[index]);
await SaveBookmarksAsync(Repository.BookmarkCollectionNames[index], null);
Repository.BookmarkCollectionNames[index] = result.Item1;
await SaveBookmarksAsync(Repository.BookmarkCollectionNames[index], items);
Repository.BookmarkCollectionIndex = index;
}
}
@ -218,10 +226,10 @@ namespace AideDeJeu.ViewModels.Library
public async Task LoadBookmarkCollectionAsync(string key)
{
var items = await GetBookmarkCollectionAsync(key);
BookmarkCollection.Clear();
Repository.BookmarkCollection.Clear();
if (items != null)
{
items.ForEach(item => BookmarkCollection.Add(item));
items.ForEach(item => Repository.BookmarkCollection.Add(item));
}
}
@ -235,13 +243,13 @@ namespace AideDeJeu.ViewModels.Library
}
items.Add(linkItem);
await SaveBookmarksAsync(key, items);
BookmarkCollectionIndex = BookmarkCollectionNames.IndexOf(key);
Repository.BookmarkCollectionIndex = Repository.BookmarkCollectionNames.IndexOf(key);
await LoadBookmarkCollectionAsync(key);
}
public async Task SaveBookmarksAsync()
{
App.Current.Properties[BookmarkCollectionNames[BookmarkCollectionIndex]] = ToString(BookmarkCollection);
App.Current.Properties[Repository.BookmarkCollectionNames[Repository.BookmarkCollectionIndex]] = ToString(Repository.BookmarkCollection);
await App.Current.SavePropertiesAsync();
}
@ -261,7 +269,7 @@ namespace AideDeJeu.ViewModels.Library
public async Task InitBookmarkCollectionsAsync()
{
_BookmarkCollections = new Dictionary<string, ObservableCollection<Item>>()
Repository._BookmarkCollections = new Dictionary<string, ObservableCollection<Item>>()
{
{ "Général", new ObservableCollection<Item>() },
{ "Grimoire", new ObservableCollection<Item>() },
@ -278,14 +286,14 @@ namespace AideDeJeu.ViewModels.Library
{
var spells = context.Spells.ToList();
var spell = spells.Take(1).FirstOrDefault();
_BookmarkCollections["Grimoire"].Add(new Item() { Id = spell.Id, Name = spell.Name });
Repository._BookmarkCollections["Grimoire"].Add(new Item() { Id = spell.Id, Name = spell.Name });
}
await SaveBookmarkCollectionsAsync();
}
}
public async Task SaveBookmarkCollectionsAsync()
{
var yaml = new YamlDotNet.Serialization.Serializer().Serialize(_BookmarkCollections);
var yaml = new YamlDotNet.Serialization.Serializer().Serialize(Repository._BookmarkCollections);
Debug.WriteLine(yaml);
}
public string ToString(IEnumerable<Item> items)

View file

@ -183,14 +183,15 @@ namespace AideDeJeu.ViewModels
//await Application.Current.MainPage.DisplayAlert("Id", item.Id, "OK");
var item = itemVM.Item;
var vm = Main.Bookmarks;
var result = await Application.Current.MainPage.DisplayActionSheet("Ajouter à", "Annuler", "Nouvelle liste", vm.BookmarkCollectionNames.ToArray<string>());
var repo = Main.Bookmarks;
var vm = new BookmarksViewModel();
var result = await Application.Current.MainPage.DisplayActionSheet("Ajouter à", "Annuler", "Nouvelle liste", repo.BookmarkCollectionNames.ToArray<string>());
if (result != "Annuler")
{
if (result == "Nouvelle liste")
{
int i = 1;
while (vm.BookmarkCollectionNames.Contains(result = $"Nouvelle liste ({i})"))
while (repo.BookmarkCollectionNames.Contains(result = $"Nouvelle liste ({i})"))
{
i++;
}

View file

@ -34,17 +34,17 @@
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Picker x:Name="BookmarkCollectionPicker" Grid.Column="0" Grid.Row="0" HorizontalOptions="Fill" ItemsSource="{Binding BookmarkCollectionNames, Mode=OneWay}" ItemDisplayBinding="{Binding Mode=OneWay}" SelectedIndex="{Binding BookmarkCollectionIndex, Mode=TwoWay}">
<Picker x:Name="BookmarkCollectionPicker" Grid.Column="0" Grid.Row="0" HorizontalOptions="Fill" ItemsSource="{Binding Repository.BookmarkCollectionNames, Mode=OneWay}" ItemDisplayBinding="{Binding Mode=OneWay}" SelectedIndex="{Binding Repository.BookmarkCollectionIndex, Mode=TwoWay}">
<!--Style="{StaticResource heading1}"-->
<Picker.Behaviors>
<tools:EventToCommandBehavior EventName="SelectedIndexChanged" Command="{Binding BindingContext.SelectedIndexChangedCommand, Source={x:Reference This}}" />
</Picker.Behaviors>
</Picker>
<Label Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" HorizontalOptions="Center" VerticalOptions="Center" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Margin="15,0,15,0" Style="{StaticResource heading3}" Text="Cette liste est vide, ajoutez des éléments à partir de la bibliothèque !" IsVisible="{Binding BookmarkCollection.Count, Converter={StaticResource IntToBooleanConverter}}" />
<Label Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" HorizontalOptions="Center" VerticalOptions="Center" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Margin="15,0,15,0" Style="{StaticResource heading3}" Text="Cette liste est vide, ajoutez des éléments à partir de la bibliothèque !" IsVisible="{Binding Repository.BookmarkCollection.Count, Converter={StaticResource IntToBooleanConverter}}" />
<!--SelectedItem="{Binding SelectedItem}"-->
<ListView Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" x:Name="ItemsListView" SelectionMode="None" ItemsSource="{Binding BookmarkCollection}" VerticalOptions="FillAndExpand" HasUnevenRows="true" CachingStrategy="RecycleElement">
<ListView Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" x:Name="ItemsListView" SelectionMode="None" ItemsSource="{Binding Repository.BookmarkCollection}" VerticalOptions="FillAndExpand" HasUnevenRows="true" CachingStrategy="RecycleElement">
<ListView.ItemTemplate>
<DataTemplate x:DataType="lib:Item">
<ViewCell>