From 7086a72fab3c57750c018dde8addc21596e75c95 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Wed, 6 Sep 2023 18:04:13 +0200 Subject: [PATCH] Windows: Add cursor waiting --- Elwig/Windows/DeliveryAdminWindow.xaml.cs | 36 +++++++++++++++++++---- Elwig/Windows/MainWindow.xaml.cs | 16 +++++----- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs index 77a0492..e61a7cd 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs +++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs @@ -102,15 +102,19 @@ namespace Elwig.Windows { private async void Menu_Print_ShowDeliveryNote_Click(object sender, RoutedEventArgs evt) { if (DeliveryList.SelectedItem is not Delivery d) return; + Mouse.OverrideCursor = Cursors.Wait; using var doc = new DeliveryNote(d, Context); await doc.Generate(); doc.Show(); + Mouse.OverrideCursor = null; } private async void Menu_Print_PrintDeliveryNote_Click(object sender, RoutedEventArgs evt) { if (DeliveryList.SelectedItem is not Delivery d) return; + Mouse.OverrideCursor = Cursors.Wait; using var doc = new DeliveryNote(d, Context); await doc.Generate(); + Mouse.OverrideCursor = null; await doc.Print(); } @@ -702,26 +706,36 @@ namespace Elwig.Windows { } private async void NewDeliveryPartButton_Click(object sender, RoutedEventArgs evt) { + FinishButton.IsEnabled = false; + NewDeliveryPartButton.IsEnabled = false; + NewDeliveryPartButton.Cursor = Cursors.Wait; DeliveryPartList.IsEnabled = false; var p = await UpdateDeliveryPart(DeliveryList.SelectedItem as Delivery, DeliveryPartList.SelectedItem as DeliveryPart); await RefreshDeliveryList(); await RefreshDeliveryParts(); + NewDeliveryPartButton.Cursor = null; DeliveryList.SelectedItem = p?.Delivery; DeliveryPartList.SelectedItem = null; InitialInputs(); } private async void FinishButton_Click(object sender, RoutedEventArgs evt) { + FinishButton.IsEnabled = false; + NewDeliveryPartButton.IsEnabled = false; + FinishButton.Cursor = Cursors.Wait; DeliveryPartList.IsEnabled = false; var p = await UpdateDeliveryPart(DeliveryList.SelectedItem as Delivery, DeliveryPartList.SelectedItem as DeliveryPart); await RefreshDeliveryList(); await RefreshDeliveryParts(); if (p?.Delivery != null) { + Mouse.OverrideCursor = Cursors.Wait; using var doc = new DeliveryNote(p.Delivery, Context); await doc.Generate(); + Mouse.OverrideCursor = Cursors.Wait; doc.Show(); //await doc.Print(2); } + FinishButton.Cursor = null; DeliveryList.SelectedItem = null; InitInputs(); } @@ -769,6 +783,7 @@ namespace Elwig.Windows { try { if (res == null || res <= 0) return; + Mouse.OverrideCursor = Cursors.Wait; ClearOriginalValues(); if (res >= p.Weight) { ControlUtils.SelectComboBoxItem(WineQualityLevelInput, q => (q as WineQualLevel)?.QualId, "WEI"); @@ -797,6 +812,7 @@ namespace Elwig.Windows { } await Context.SaveChangesAsync(); await RefreshDeliveryParts(); + Mouse.OverrideCursor = null; FinishInputFilling(); } catch (Exception exc) { if (entry1 != null) { @@ -849,21 +865,28 @@ namespace Elwig.Windows { $"Soll die Lieferung {d.LsNr} ({d.Member.AdministrativeName}, MgNr. {d.Member.MgNr}) wirklich unwiderruflich gelöscht werden?", "Lieferung löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No); if (r == MessageBoxResult.Yes) { + Mouse.OverrideCursor = Cursors.Wait; Context.Remove(d); await Context.SaveChangesAsync(); await RefreshDeliveryList(); await RefreshDeliveryParts(); + Mouse.OverrideCursor = null; } } private async void SaveButton_Click(object sender, RoutedEventArgs evt) { - DeliveryPart p = await UpdateDeliveryPart(DeliveryList.SelectedItem as Delivery, DeliveryPartList.SelectedItem as DeliveryPart); + SaveButton.IsEnabled = false; + SaveButton.Cursor = Cursors.Wait; IsEditing = false; IsCreating = false; DeliveryList.IsEnabled = true; DeliveryPartList.IsEnabled = true; + DeliveryPart p = await UpdateDeliveryPart(DeliveryList.SelectedItem as Delivery, DeliveryPartList.SelectedItem as DeliveryPart); + + SaveButton.Cursor = null; + HideSaveResetCancelButtons(); ShowNewEditDeleteButtons(); LockInputs(); @@ -924,13 +947,13 @@ namespace Elwig.Windows { .Select(d => d.LsNr) .ToListAsync(); - var res = Utils.ShowDeliveryExtractionDialog($"{delivery.LsNr}/{p.DPNr}", delivery.Member.AdministrativeName, count == 1, lsnrs); + var res = Utils.ShowDeliveryExtractionDialog($"{delivery.LsNr}/{p.DPNr}", delivery.Member.AdministrativeName, count == 1, lsnrs); + if (res == null) return; EntityEntry? entry = null; try { Delivery? d = null; - if (res == null) { - return; - } else if (res == "new") { + Mouse.OverrideCursor = Cursors.Wait; + if (res == "new") { d = Context.CreateProxy(); d.Date = delivery.Date; d.Time = delivery.Time; @@ -958,6 +981,7 @@ namespace Elwig.Windows { await Context.Entry(p).ReloadAsync(); await Context.Entry(delivery).ReloadAsync(); + Mouse.OverrideCursor = null; await RefreshDeliveryList(); DeliveryList.SelectedItem = d; } catch (Exception exc) { @@ -979,9 +1003,11 @@ namespace Elwig.Windows { $"Soll die Teillieferung Nr. {p.DPNr} wirklich unwiderruflich gelöscht werden?", "Lieferung löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No); if (r == MessageBoxResult.Yes) { + Mouse.OverrideCursor = Cursors.Wait; Context.Remove(p); await Context.SaveChangesAsync(); await RefreshDeliveryParts(); + Mouse.OverrideCursor = null; } } diff --git a/Elwig/Windows/MainWindow.xaml.cs b/Elwig/Windows/MainWindow.xaml.cs index 8ee1189..6de9a64 100644 --- a/Elwig/Windows/MainWindow.xaml.cs +++ b/Elwig/Windows/MainWindow.xaml.cs @@ -1,7 +1,9 @@ using System.Linq; using System.Windows; +using System.Windows.Input; using Elwig.Documents; using Elwig.Helpers; +using Microsoft.EntityFrameworkCore; namespace Elwig.Windows { public partial class MainWindow : Window { @@ -38,13 +40,13 @@ namespace Elwig.Windows { // TODO } - private void PdfButton_Click(object sender, RoutedEventArgs evt) { - Utils.RunBackground("PDF Generation", async () => { - using var ctx = new AppDbContext(); - using var doc = new DeliveryNote(ctx.Deliveries.OrderBy(d => d.Parts.Count).ThenBy(d => d.Year).ThenBy(d => d.DId).Last(), ctx); - await doc.Generate(); - doc.Show(); - }); + private async void PdfButton_Click(object sender, RoutedEventArgs evt) { + Mouse.OverrideCursor = Cursors.Wait; + using var ctx = new AppDbContext(); + using var doc = new DeliveryNote(await ctx.Deliveries.OrderBy(d => d.Parts.Count).ThenBy(d => d.Year).ThenBy(d => d.DId).LastAsync(), ctx); + await doc.Generate(); + doc.Show(); + Mouse.OverrideCursor = null; } private void TestWindowButton_Click(object sender, RoutedEventArgs evt) {