119 lines
4.4 KiB
C#
119 lines
4.4 KiB
C#
using System;
|
|
using Avalonia.Controls;
|
|
using CommunityToolkit.Mvvm.Messaging;
|
|
using GazpromApp.Messages;
|
|
using GazpromApp.ViewModels;
|
|
|
|
namespace GazpromApp.Views;
|
|
|
|
public partial class EditPointDialog : Window
|
|
{
|
|
public EditPointDialog()
|
|
{
|
|
InitializeComponent();
|
|
|
|
if (Design.IsDesignMode)
|
|
return;
|
|
|
|
// view image
|
|
WeakReferenceMessenger.Default.Register<EditPointDialog, ViewImageMessage>(this, static (w, m) =>
|
|
{
|
|
var dialog = new ImageView
|
|
{
|
|
DataContext = m.Image
|
|
};
|
|
m.Reply(dialog.ShowDialog<ImageViewModel?>(w));
|
|
});
|
|
|
|
// error
|
|
WeakReferenceMessenger.Default.Register<EditPointDialog, ErrorMessage>(this, static (w, m) =>
|
|
{
|
|
var dialog = new ErrorView
|
|
{
|
|
DataContext = m.Error
|
|
};
|
|
m.Reply(dialog.ShowDialog<ErrorViewModel?>(w));
|
|
});
|
|
|
|
// new equipment
|
|
WeakReferenceMessenger.Default.Register<EditPointDialog, NewEquipmentMessage>(this, (w, m) =>
|
|
{
|
|
WeakReferenceMessenger.Default.Unregister<ErrorMessage>(this);
|
|
var dialog = new NewEquipmentDialog
|
|
{
|
|
DataContext = new NewEquipmentDialogViewModel()
|
|
};
|
|
m.Reply(dialog.ShowDialog<EquipmentViewModel?>(w));
|
|
});
|
|
|
|
// edit equipment
|
|
WeakReferenceMessenger.Default.Register<EditPointDialog, EditEquipmentMessage>(this, (w, m) =>
|
|
{
|
|
WeakReferenceMessenger.Default.Unregister<ViewImageMessage>(this);
|
|
WeakReferenceMessenger.Default.Unregister<ErrorMessage>(this);
|
|
var dialog = new EditEquipmentDialog
|
|
{
|
|
DataContext = new EditEquipmentDialogViewModel(m.Equipment)
|
|
};
|
|
m.Reply(dialog.ShowDialog<EquipmentViewModel?>(w));
|
|
});
|
|
|
|
// re registering error when new equipment done
|
|
WeakReferenceMessenger.Default.Register<EditPointDialog, NewEquipmentDone>(this, (_, _) =>
|
|
{
|
|
if (!WeakReferenceMessenger.Default.IsRegistered<ErrorMessage>(this))
|
|
WeakReferenceMessenger.Default.Register<EditPointDialog, ErrorMessage>(this, static (w, m) =>
|
|
{
|
|
var dialog = new ErrorView
|
|
{
|
|
DataContext = m.Error
|
|
};
|
|
m.Reply(dialog.ShowDialog<ErrorViewModel?>(w));
|
|
});
|
|
});
|
|
|
|
// re registering view image and error view
|
|
WeakReferenceMessenger.Default.Register<EditPointDialog, EditEquipmentDone>(this, (_, _) =>
|
|
{
|
|
if (!WeakReferenceMessenger.Default.IsRegistered<ViewImageMessage>(this))
|
|
WeakReferenceMessenger.Default.Register<EditPointDialog, ViewImageMessage>(this, static (w, m) =>
|
|
{
|
|
var dialog = new ImageView
|
|
{
|
|
DataContext = m.Image
|
|
};
|
|
m.Reply(dialog.ShowDialog<ImageViewModel?>(w));
|
|
});
|
|
if (!WeakReferenceMessenger.Default.IsRegistered<ErrorMessage>(this))
|
|
WeakReferenceMessenger.Default.Register<EditPointDialog, ErrorMessage>(this, static (w, m) =>
|
|
{
|
|
var dialog = new ErrorView
|
|
{
|
|
DataContext = m.Error
|
|
};
|
|
m.Reply(dialog.ShowDialog<ErrorViewModel?>(w));
|
|
});
|
|
});
|
|
|
|
// complete editing point
|
|
WeakReferenceMessenger.Default.Register<EditPointDialog, EditPointDone>(this, static (w, m) =>
|
|
{
|
|
w.Close(m.Point);
|
|
});
|
|
}
|
|
|
|
private void Window_OnClosing(object? sender, WindowClosingEventArgs e)
|
|
{
|
|
if (DataContext is EditPointDialogViewModel { IsClosed: false } vm)
|
|
vm.CancelEditCommand.Execute(this);
|
|
}
|
|
|
|
private void Window_OnClosed(object? sender, EventArgs e)
|
|
{
|
|
WeakReferenceMessenger.Default.Unregister<ViewImageMessage>(this);
|
|
WeakReferenceMessenger.Default.Unregister<ErrorMessage>(this);
|
|
WeakReferenceMessenger.Default.Unregister<NewEquipmentMessage>(this);
|
|
WeakReferenceMessenger.Default.Unregister<EditEquipmentMessage>(this);
|
|
WeakReferenceMessenger.Default.Unregister<EditPointDone>(this);
|
|
}
|
|
} |