Removed dialogs for editing equipment and points, and their related resources
This commit is contained in:
+71
-15
@@ -1,4 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Threading.Tasks;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Interactivity;
|
||||
using Avalonia.Platform.Storage;
|
||||
using CommunityToolkit.Mvvm.Messaging;
|
||||
using GazpromApp.Messages;
|
||||
using GazpromApp.ViewModels;
|
||||
@@ -7,29 +13,79 @@ namespace GazpromApp.Views;
|
||||
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
private bool _canClose = false;
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
if (Design.IsDesignMode)
|
||||
return;
|
||||
|
||||
WeakReferenceMessenger.Default.Register<MainWindow, RequestImageMessage>(this, HandleImageSelection);
|
||||
WeakReferenceMessenger.Default.Register<MainWindow, ViewImageMessage>(this, HandleImageViewer);
|
||||
WeakReferenceMessenger.Default.Register<MainWindow, ErrorMessage>(this, HandleErrorViewer);
|
||||
WeakReferenceMessenger.Default.Register<MainWindow, SaveChangesResult>(this, HandleSave);
|
||||
}
|
||||
|
||||
private static void HandleImageSelection(MainWindow sender, RequestImageMessage msg)
|
||||
{
|
||||
var files = sender.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
|
||||
{
|
||||
AllowMultiple = true,
|
||||
Title = "Выберите одну или несколько картинок",
|
||||
FileTypeFilter = [FilePickerFileTypes.ImageAll]
|
||||
});
|
||||
|
||||
msg.Reply(files);
|
||||
}
|
||||
|
||||
WeakReferenceMessenger.Default.Register<MainWindow, NewPointMessage>(this, static (w, m) =>
|
||||
private static void HandleImageViewer(MainWindow sender, ViewImageMessage msg)
|
||||
{
|
||||
var dialog = new ImageView
|
||||
{
|
||||
var dialog = new NewPointDialog
|
||||
{
|
||||
DataContext = new NewPointDialogViewModel()
|
||||
};
|
||||
m.Reply(dialog.ShowDialog<PointViewModel?>(w));
|
||||
});
|
||||
|
||||
WeakReferenceMessenger.Default.Register<MainWindow, EditPointMessage>(this, static (w, m) =>
|
||||
DataContext = msg.Image
|
||||
};
|
||||
msg.Reply(dialog.ShowDialog<ImageViewModel?>(sender));
|
||||
}
|
||||
|
||||
private static void HandleErrorViewer(MainWindow sender, ErrorMessage msg)
|
||||
{
|
||||
var dialog = new ErrorView
|
||||
{
|
||||
var dialog = new EditPointDialog
|
||||
{
|
||||
DataContext = new EditPointDialogViewModel(m.Point)
|
||||
};
|
||||
m.Reply(dialog.ShowDialog<PointViewModel?>(w));
|
||||
});
|
||||
DataContext = msg.Error
|
||||
};
|
||||
msg.Reply(dialog.ShowDialog<ErrorViewModel?>(sender));
|
||||
}
|
||||
|
||||
private void TreeView_OnSelectionChanged(object? sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
if (e.AddedItems.Count > 0)
|
||||
WeakReferenceMessenger.Default.Send(new SelectionChangedMessage((ViewModelBase)e.AddedItems[0]!));
|
||||
}
|
||||
|
||||
private void HandleSave(object sender, SaveChangesResult msg)
|
||||
{
|
||||
if (msg.Cancel) return;
|
||||
if (msg.Save)
|
||||
((MainWindowViewModel)DataContext!).SyncDbCommand.Execute(null);
|
||||
ForceClose();
|
||||
}
|
||||
|
||||
private void ForceClose()
|
||||
{
|
||||
_canClose = true;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void Window_OnClosing(object? sender, WindowClosingEventArgs e)
|
||||
{
|
||||
if (_canClose) return;
|
||||
if (!((MainWindowViewModel)DataContext!).CanSync) return;
|
||||
var dialog = new SaveChangesView
|
||||
{
|
||||
DataContext = new SaveChangesViewModel()
|
||||
};
|
||||
dialog.ShowDialog<SaveChangesViewModel?>(this);
|
||||
e.Cancel = true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user