Upgrade Sitzplan - Jetzt mit Bewertungsfeature
This commit is contained in:
@@ -1,11 +1,17 @@
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Input;
|
||||
using LehrerApp.Desktop.ViewModels;
|
||||
using LehrerApp.Sync;
|
||||
|
||||
namespace LehrerApp.Desktop.Views;
|
||||
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
private static readonly TimeSpan FinalSyncDelay = TimeSpan.FromMilliseconds(350);
|
||||
private SyncEngine? _syncEngine;
|
||||
private bool _finalSyncStarted;
|
||||
private bool _closeAfterFinalSync;
|
||||
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
@@ -14,6 +20,24 @@ public partial class MainWindow : Window
|
||||
KeyDown += (_, _) => NotifyActivity();
|
||||
}
|
||||
|
||||
public void EnableFinalSync(SyncEngine syncEngine)
|
||||
{
|
||||
_syncEngine = syncEngine;
|
||||
Closing += OnClosing;
|
||||
}
|
||||
|
||||
private async void OnClosing(object? sender, WindowClosingEventArgs e)
|
||||
{
|
||||
if (_closeAfterFinalSync || _finalSyncStarted || _syncEngine is null)
|
||||
return;
|
||||
|
||||
e.Cancel = true;
|
||||
_finalSyncStarted = true;
|
||||
await _syncEngine.SyncBeforeShutdownAsync(FinalSyncDelay);
|
||||
_closeAfterFinalSync = true;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void NotifyActivity()
|
||||
{
|
||||
if (DataContext is MainWindowViewModel vm) vm.AppLock.NotifyActivity();
|
||||
|
||||
Reference in New Issue
Block a user