diff --git a/Elwig/Helpers/ControlUtils.cs b/Elwig/Helpers/ControlUtils.cs index c74190b..b9f2659 100644 --- a/Elwig/Helpers/ControlUtils.cs +++ b/Elwig/Helpers/ControlUtils.cs @@ -203,5 +203,21 @@ namespace Elwig.Helpers { public static void SelectCheckComboBoxItems(Xceed.Wpf.Toolkit.CheckComboBox ccb, IEnumerable? items, Func getId) { SelectCheckComboBoxItems(ccb, getId, items?.Select(i => getId(i))); } + + public static object? GetInputValue(Control input) { + if (input is TextBox tb) { + return tb.Text; + } else if (input is ComboBox sb) { + return sb.SelectedItem; + } else if (input is Xceed.Wpf.Toolkit.CheckComboBox ccb) { + return ccb.SelectedItems.Cast().ToArray(); + } else if (input is CheckBox cb) { + return cb.IsChecked; + } else if (input is RadioButton rb) { + return rb.IsChecked; + } else { + return null; + } + } } } diff --git a/Elwig/Windows/AdministrationWindow.cs b/Elwig/Windows/AdministrationWindow.cs index b489fa1..029b00b 100644 --- a/Elwig/Windows/AdministrationWindow.cs +++ b/Elwig/Windows/AdministrationWindow.cs @@ -220,6 +220,10 @@ namespace Elwig.Windows { } } + protected void SetDefaultValue(Control input) { + SetDefaultValue(input, ControlUtils.GetInputValue(input)); + } + protected void UnsetDefaultValue(Control input) { DefaultValues.Remove(input); if (!InputHasChanged(input)) { @@ -257,9 +261,9 @@ namespace Elwig.Windows { } else if (input is CheckComboBox ccb) { return !ccb.SelectedItems.Cast().ToArray().SequenceEqual(((object[]?)OriginalValues[ccb]) ?? Array.Empty()); } else if (input is CheckBox cb) { - return (OriginalValues[cb] != null) != (cb.IsChecked ?? false); + return OriginalValues[cb] != (object?)cb.IsChecked; } else if (input is RadioButton rb) { - return (OriginalValues[rb] != null) != (rb.IsChecked ?? false); + return OriginalValues[rb] != (object?)rb.IsChecked; } else { return false; } @@ -275,9 +279,9 @@ namespace Elwig.Windows { } else if (input is CheckComboBox ccb) { return !ccb.SelectedItems.Cast().ToArray().SequenceEqual(((object[]?)DefaultValues[ccb]) ?? Array.Empty()); } else if (input is CheckBox cb) { - return (DefaultValues[cb] != null) != (cb.IsChecked ?? false); + return DefaultValues[cb] != (object?)cb.IsChecked; } else if (input is RadioButton rb) { - return (DefaultValues[rb] != null) != (rb.IsChecked ?? false); + return DefaultValues[rb] != (object?)rb.IsChecked; } else { return false; } diff --git a/Elwig/Windows/AreaComAdminWindow.xaml.cs b/Elwig/Windows/AreaComAdminWindow.xaml.cs index 60e4068..84f917f 100644 --- a/Elwig/Windows/AreaComAdminWindow.xaml.cs +++ b/Elwig/Windows/AreaComAdminWindow.xaml.cs @@ -58,6 +58,7 @@ namespace Elwig.Windows { EditAreaCommitmentButton.IsEnabled = false; DeleteAreaCommitmentButton.IsEnabled = false; ClearOriginalValues(); + ClearDefaultValues(); ClearInputs(validate); ClearInputStates(); } @@ -66,6 +67,7 @@ namespace Elwig.Windows { private void FillInputs(AreaCom a) { ClearOriginalValues(); + ClearDefaultValues(); FbNrInput.Text = a.FbNr.ToString(); MgNrInput.Text = a.MgNr.ToString(); @@ -84,9 +86,14 @@ namespace Elwig.Windows { } private async void InitInputs() { + ClearOriginalValues(); + ClearDefaultValues(); + FbNrInput.Text = (await Context.NextFbNr()).ToString(); MgNrInput.Text = Member.MgNr.ToString(); - FinishInputFilling(); + + SetDefaultValue(FbNrInput); + ValidateRequiredInputs(); } protected override async Task RenewContext() { diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs index 0605536..25a867c 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs +++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs @@ -131,17 +131,21 @@ namespace Elwig.Windows { } private void InitialInputs() { + ClearOriginalValues(); + ClearDefaultValues(); + HandPickedInput.IsChecked = null; - SetDefaultValue(HandPickedInput, null); if (App.Client.IsMatzen) { GerebeltGewogenInput.IsChecked = true; GerebeltGewogenInput.IsEnabled = false; + SetDefaultValue(GerebeltGewogenInput); } else { GerebeltGewogenInput.IsChecked = false; - UnsetDefaultValue(GerebeltGewogenInput); GerebeltGewogenInput.IsEnabled = true; + UnsetDefaultValue(GerebeltGewogenInput); } - ClearOriginalValues(); + + SetDefaultValue(HandPickedInput); ValidateRequiredInputs(); } @@ -426,6 +430,7 @@ namespace Elwig.Windows { FillInputs(d); } else { ClearOriginalValues(); + ClearDefaultValues(); ClearInputs(validate); ClearInputStates(); } @@ -434,6 +439,7 @@ namespace Elwig.Windows { private void FillInputs(Delivery d) { ClearOriginalValues(); + ClearDefaultValues(); MgNrInput.Text = d.MgNr.ToString(); ControlUtils.SelectComboBoxItem(BranchInput, i => (i as Branch)?.ZwstId, d.ZwstId); @@ -456,6 +462,7 @@ namespace Elwig.Windows { private void FillInputs(DeliveryPart p) { FillInputs(p.Delivery); ClearOriginalValues(); + ClearDefaultValues(); SortIdInput.Text = p?.SortId ?? ""; ControlUtils.SelectCheckComboBoxItems(AttributesInput, p?.Attributes, i => (i as WineAttr)?.AttrId); diff --git a/Elwig/Windows/MemberAdminWindow.xaml.cs b/Elwig/Windows/MemberAdminWindow.xaml.cs index 2fb3e61..fd0ab09 100644 --- a/Elwig/Windows/MemberAdminWindow.xaml.cs +++ b/Elwig/Windows/MemberAdminWindow.xaml.cs @@ -106,6 +106,7 @@ namespace Elwig.Windows { AreaCommitmentButton.IsEnabled = false; DeliveryButton.IsEnabled = false; ClearOriginalValues(); + ClearDefaultValues(); ClearInputs(validate); ClearInputStates(); } @@ -113,13 +114,20 @@ namespace Elwig.Windows { } private async void InitInputs() { + ClearOriginalValues(); + ClearDefaultValues(); + MgNrInput.Text = (await Context.NextMgNr()).ToString(); EntryDateInput.Text = DateTime.Now.ToString("dd.MM.yyyy"); if (Context.Branches.Count() == 1) BranchInput.SelectedItem = Context.Branches.First(); ActiveInput.IsChecked = true; ContactPostalInput.IsChecked = true; - FinishInputFilling(); + + SetDefaultValue(MgNrInput); + SetDefaultValue(EntryDateInput); + SetDefaultValue(ActiveInput); + ValidateRequiredInputs(); } protected override async Task RenewContext() { @@ -439,6 +447,7 @@ namespace Elwig.Windows { private void FillInputs(Member m) { ClearOriginalValues(); + ClearDefaultValues(); MgNrInput.Text = m.MgNr.ToString(); PredecessorMgNrInput.Text = m.PredecessorMgNr.ToString();