You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.2 KiB

using System;
using ViewModel;
namespace View.ModelViewPage
{
public class EditChampionViewM
{
public Command PickIconCommand { get; }
public Command PickImageCommand { get; }
public EditChampionViewM(ChampionManagerVM manager, EditChampionVm aditableChampion,ChampionVm championVM)
{
Manager = manager;
EditableChampion = aditableChampion;
ChampionVM = championVM;
SaveChampionCommand = new Command(SaveChampion);
PickIconCommand = new Command(async () => await PickIcon());
PickImageCommand = new Command(async () => await PickImage());
Title = aditableChampion.IsNew ? "Create" : "Update";
}
public string Title { get; }
private ChampionManagerVM Manager;
public EditChampionVm EditableChampion { get; }
private ChampionVm ChampionVM;
public Command SaveChampionCommand { get; }
private async void SaveChampion()
{
Manager.SaveChampion(EditableChampion, ChampionVM);
await Shell.Current.Navigation.PopAsync();
}
private async Task PickIcon()
{
var result = await FilePicker.PickAsync(new PickOptions
{
FileTypes = FilePickerFileType.Images,
PickerTitle = "Pick an icon",
});
if (result != null)
{
var stream = await result.OpenReadAsync();
var bytes = new byte[stream.Length];
await stream.ReadAsync(bytes, 0, (int)stream.Length);
EditableChampion.Icon = Convert.ToBase64String(bytes);
}
}
private async Task PickImage()
{
var result = await FilePicker.PickAsync(new PickOptions
{
FileTypes = FilePickerFileType.Images,
PickerTitle = "Pick an image",
});
if (result != null)
{
var stream = await result.OpenReadAsync();
var bytes = new byte[stream.Length];
await stream.ReadAsync(bytes, 0, (int)stream.Length);
EditableChampion.Image = Convert.ToBase64String(bytes);
}
}
}
}