DB integration added, multiple images for equipment
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using Avalonia.Controls;
|
||||
@@ -24,44 +26,44 @@ public partial class NewEquipmentDialogViewModel : ViewModelBase
|
||||
[NotifyCanExecuteChangedFor(nameof(EnterEquipmentCommand))]
|
||||
private string? _description;
|
||||
|
||||
[ObservableProperty]
|
||||
private ImageViewModel? _image;
|
||||
public ObservableCollection<ImageViewModel> Images { get; } = [];
|
||||
|
||||
[RelayCommand]
|
||||
private async Task AddImage(Window w)
|
||||
{
|
||||
var files = await w.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
|
||||
{
|
||||
AllowMultiple = false,
|
||||
Title = "Выберите картинку",
|
||||
AllowMultiple = true,
|
||||
Title = "Выберите одну или несколько картинок",
|
||||
FileTypeFilter = [FilePickerFileTypes.ImageAll]
|
||||
});
|
||||
|
||||
IsImageSelected = files.Count > 0;
|
||||
|
||||
try
|
||||
foreach (var file in files)
|
||||
{
|
||||
Image = IsImageSelected ? new ImageViewModel(new Image()) { FileName = new Bitmap(HttpUtility.UrlDecode(files[0].Path.AbsolutePath)) } : null;
|
||||
}
|
||||
catch (ArgumentException)
|
||||
{
|
||||
var error = new Error
|
||||
try
|
||||
{
|
||||
Title = "Ошибка обработки картинки",
|
||||
Message = "Картинка не была добавлена",
|
||||
Severity = ErrorSeverity.Error
|
||||
};
|
||||
_ = await WeakReferenceMessenger.Default.Send(new ErrorMessage(new ErrorViewModel(error)));
|
||||
|
||||
IsImageSelected = false;
|
||||
Images.Add(new ImageViewModel(new Image()) { FileName = new Bitmap(HttpUtility.UrlDecode(file.Path.AbsolutePath)) });
|
||||
}
|
||||
catch (ArgumentException)
|
||||
{
|
||||
var error = new Error
|
||||
{
|
||||
Title = "Ошибка обработки картинки",
|
||||
Message = $"Картинка не была добавлена: \"{HttpUtility.UrlDecode(file.Name)}\"",
|
||||
Severity = ErrorSeverity.Error
|
||||
};
|
||||
_ = await WeakReferenceMessenger.Default.Send(new ErrorMessage(new ErrorViewModel(error)));
|
||||
}
|
||||
}
|
||||
|
||||
IsImagesEmpty = Images.Count == 0;
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
private void DeleteImage()
|
||||
private void DeleteImage(ImageViewModel image)
|
||||
{
|
||||
Image = null;
|
||||
IsImageSelected = false;
|
||||
Images.Remove(image);
|
||||
IsImagesEmpty = Images.Count == 0;
|
||||
}
|
||||
|
||||
private bool CanEnterEquipment() => !string.IsNullOrEmpty(Name);
|
||||
@@ -73,7 +75,7 @@ public partial class NewEquipmentDialogViewModel : ViewModelBase
|
||||
{
|
||||
Name = Name,
|
||||
Description = Description ?? string.Empty,
|
||||
Image = (Image ?? new ImageViewModel()).GetImage()
|
||||
Images = Images.Select(e => e.GetImage()).ToList()
|
||||
|
||||
};
|
||||
WeakReferenceMessenger.Default.Send(new NewEquipmentDone(new EquipmentViewModel(equipment)));
|
||||
@@ -88,5 +90,5 @@ public partial class NewEquipmentDialogViewModel : ViewModelBase
|
||||
// Visual and other stuff
|
||||
|
||||
[ObservableProperty]
|
||||
private bool _isImageSelected;
|
||||
private bool _isImagesEmpty;
|
||||
}
|
||||
Reference in New Issue
Block a user