From c0e584143ec6a9f943073a5c409819f1bbf9e52c Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Fri, 14 Jul 2023 13:09:24 +0200 Subject: [PATCH] Add search input delay of 200ms --- Elwig/Windows/AdministrationWindow.cs | 17 +++++++++++++++++ Elwig/Windows/DeliveryAdminWindow.xaml.cs | 3 +++ Elwig/Windows/MemberAdminWindow.xaml.cs | 3 +++ 3 files changed, 23 insertions(+) diff --git a/Elwig/Windows/AdministrationWindow.cs b/Elwig/Windows/AdministrationWindow.cs index f65d803..1ba6652 100644 --- a/Elwig/Windows/AdministrationWindow.cs +++ b/Elwig/Windows/AdministrationWindow.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; +using System.Windows.Threading; using Xceed.Wpf.Toolkit; namespace Elwig.Windows { @@ -225,6 +226,22 @@ namespace Elwig.Windows { UpdateComboBox(ortInput); } + protected static void InitializeDelayTimer(TextBox tb, Action handler) { + var timer = new DispatcherTimer { + Interval = TimeSpan.FromMilliseconds(250) + }; + timer.Tick += (object? sender, EventArgs evt) => { + timer.Stop(); + var (oSender, oEvent) = ((object, TextChangedEventArgs))timer.Tag; + handler(oSender, oEvent); + }; + tb.TextChanged += (object sender, TextChangedEventArgs evt) => { + timer.Stop(); + timer.Tag = (sender, evt); + timer.Start(); + }; + } + protected bool InputTextChanged(TextBox input, Func checker) { return InputTextChanged(input, (tb, required, ctx) => checker(tb, required)); } diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs index b39db3c..d3353ab 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs +++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs @@ -43,6 +43,9 @@ namespace Elwig.Windows { Timer = new DispatcherTimer(); Timer.Tick += new EventHandler(OnSecondPassed); Timer.Interval = new TimeSpan(0, 0, 1); + + InitializeDelayTimer(SearchInput, SearchInput_TextChanged); + SearchInput.TextChanged -= SearchInput_TextChanged; } public DeliveryAdminWindow(bool receipt) : this() { diff --git a/Elwig/Windows/MemberAdminWindow.xaml.cs b/Elwig/Windows/MemberAdminWindow.xaml.cs index 1a705e7..c203698 100644 --- a/Elwig/Windows/MemberAdminWindow.xaml.cs +++ b/Elwig/Windows/MemberAdminWindow.xaml.cs @@ -50,6 +50,9 @@ namespace Elwig.Windows { (PhoneNr9TypeInput, PhoneNr9Input, PhoneNr9CommentInput), }; foreach (var input in PhoneNrInputs) input.Item1.ItemsSource = PhoneNrTypes; + + InitializeDelayTimer(SearchInput, SearchInput_TextChanged); + SearchInput.TextChanged -= SearchInput_TextChanged; } private void Window_Loaded(object sender, RoutedEventArgs evt) {