Small fixes

This commit is contained in:
2023-03-05 03:00:13 +01:00
parent 342c7b92bd
commit 7416c03b92
3 changed files with 52 additions and 42 deletions

View File

@ -24,17 +24,23 @@ namespace WGneu.Windows {
private bool IsEditing = false;
private bool IsCreating = false;
private List<string> TextFilter = new();
private readonly Control[] ExemptInputs;
private readonly Dictionary<Control, bool> Valid = new();
private readonly Dictionary<Control, object?> OriginalValues = new();
private static readonly RoutedCommand CtrlF = new();
private readonly RoutedCommand CtrlF = new();
private readonly WgContext Context = new();
public MemberListWindow() {
InitializeComponent();
CtrlF.InputGestures.Add(new KeyGesture(Key.F, ModifierKeys.Control));
CommandBindings.Add(new CommandBinding(CtrlF, FocusSearchInput));
foreach (var tb in Utils.FindVisualChilds<TextBox>(this))
if (tb.Name != "SearchInput") Valid[tb] = true;
ExemptInputs = new Control[] {
SearchInput, ActiveMemberInput, MemberList,
NewMemberButton, EditMemberButton, DeleteMemberButton,
ResetButton, SaveButton, CancelButton
};
foreach (var tb in Utils.FindVisualChilds<TextBox>(this, ExemptInputs))
Valid[tb] = true;
}
private void Window_Loaded(object sender, RoutedEventArgs e) {
@ -86,13 +92,13 @@ namespace WGneu.Windows {
}
private void ClearInputStates() {
foreach (var tb in Utils.FindVisualChilds<TextBox>(this))
if (tb.Name != "SearchInput") Utils.ClearInputState(tb);
foreach (var cb in Utils.FindVisualChilds<ComboBox>(this))
foreach (var tb in Utils.FindVisualChilds<TextBox>(this, ExemptInputs))
Utils.ClearInputState(tb);
foreach (var cb in Utils.FindVisualChilds<ComboBox>(this, ExemptInputs))
Utils.ClearInputState(cb);
foreach (var cb in Utils.FindVisualChilds<CheckBox>(this))
if (cb.Name != "ActiveMemberInput") Utils.ClearInputState(cb);
foreach (var rb in Utils.FindVisualChilds<RadioButton>(this))
foreach (var cb in Utils.FindVisualChilds<CheckBox>(this, ExemptInputs))
Utils.ClearInputState(cb);
foreach (var rb in Utils.FindVisualChilds<RadioButton>(this, ExemptInputs))
Utils.ClearInputState(rb);
}
@ -305,24 +311,24 @@ namespace WGneu.Windows {
}
private void LockInputs() {
foreach (var tb in Utils.FindVisualChilds<TextBox>(this))
if (tb.Name != "SearchInput") tb.IsReadOnly = true;
foreach (var cb in Utils.FindVisualChilds<ComboBox>(this))
foreach (var tb in Utils.FindVisualChilds<TextBox>(this, ExemptInputs))
tb.IsReadOnly = true;
foreach (var cb in Utils.FindVisualChilds<ComboBox>(this, ExemptInputs))
cb.IsEnabled = false;
foreach (var cb in Utils.FindVisualChilds<CheckBox>(this))
if (cb.Name != "ActiveMemberInput") cb.IsEnabled = false;
foreach (var rb in Utils.FindVisualChilds<RadioButton>(this))
foreach (var cb in Utils.FindVisualChilds<CheckBox>(this, ExemptInputs))
cb.IsEnabled = false;
foreach (var rb in Utils.FindVisualChilds<RadioButton>(this, ExemptInputs))
rb.IsEnabled = false;
}
private void UnlockInputs() {
foreach (var tb in Utils.FindVisualChilds<TextBox>(this))
if (tb.Name != "SearchInput") tb.IsReadOnly = false;
foreach (var cb in Utils.FindVisualChilds<ComboBox>(this))
foreach (var tb in Utils.FindVisualChilds<TextBox>(this, ExemptInputs))
tb.IsReadOnly = false;
foreach (var cb in Utils.FindVisualChilds<ComboBox>(this, ExemptInputs))
cb.IsEnabled = true;
foreach (var cb in Utils.FindVisualChilds<CheckBox>(this))
if (cb.Name != "ActiveMemberInput") cb.IsEnabled = true;
foreach (var rb in Utils.FindVisualChilds<RadioButton>(this))
foreach (var cb in Utils.FindVisualChilds<CheckBox>(this, ExemptInputs))
cb.IsEnabled = true;
foreach (var rb in Utils.FindVisualChilds<RadioButton>(this, ExemptInputs))
rb.IsEnabled = true;
}
@ -387,31 +393,31 @@ namespace WGneu.Windows {
case "email": ContactEmailInput.IsChecked = true; break;
}
foreach (var tb in Utils.FindVisualChilds<TextBox>(this))
if (tb.Name != "SearchInput") OriginalValues[tb] = tb.Text;
foreach (var cb in Utils.FindVisualChilds<ComboBox>(this))
foreach (var tb in Utils.FindVisualChilds<TextBox>(this, ExemptInputs))
OriginalValues[tb] = tb.Text;
foreach (var cb in Utils.FindVisualChilds<ComboBox>(this, ExemptInputs))
OriginalValues[cb] = cb.SelectedItem;
foreach (var cb in Utils.FindVisualChilds<CheckBox>(this))
if (cb.Name != "ActiveMemberInput") OriginalValues[cb] = (cb.IsChecked ?? false) ? bool.TrueString : null;
foreach (var rb in Utils.FindVisualChilds<RadioButton>(this))
foreach (var cb in Utils.FindVisualChilds<CheckBox>(this, ExemptInputs))
OriginalValues[cb] = (cb.IsChecked ?? false) ? bool.TrueString : null;
foreach (var rb in Utils.FindVisualChilds<RadioButton>(this, ExemptInputs))
OriginalValues[rb] = (rb.IsChecked ?? false) ? bool.TrueString : null;
}
private void ClearInputs() {
foreach (var tb in Utils.FindVisualChilds<TextBox>(this))
if (tb.Name != "SearchInput") tb.Text = "";
foreach (var cb in Utils.FindVisualChilds<ComboBox>(this))
cb.SelectedItem = null;
foreach (var cb in Utils.FindVisualChilds<CheckBox>(this))
if (cb.Name != "ActiveMemberInput") cb.IsChecked = false;
foreach (var rb in Utils.FindVisualChilds<RadioButton>(this))
rb.IsChecked = false;
OriginalValues.Clear();
foreach (var tb in Utils.FindVisualChilds<TextBox>(this, ExemptInputs))
tb.Text = "";
foreach (var cb in Utils.FindVisualChilds<ComboBox>(this, ExemptInputs))
cb.SelectedItem = null;
foreach (var cb in Utils.FindVisualChilds<CheckBox>(this, ExemptInputs))
cb.IsChecked = false;
foreach (var rb in Utils.FindVisualChilds<RadioButton>(this, ExemptInputs))
rb.IsChecked = false;
}
private bool IsValid() {
return Valid.All(kv => kv.Value) &&
Utils.FindVisualChilds<ComboBox>(this).All(cb => cb.ItemsSource == null || cb.SelectedItem != null);
Utils.FindVisualChilds<ComboBox>(this, ExemptInputs).All(cb => cb.ItemsSource == null || cb.SelectedItem != null);
}
private void UpdateButtons() {
@ -439,10 +445,10 @@ namespace WGneu.Windows {
private bool HasChanged() {
return !IsValid() ||
Utils.FindVisualChilds<TextBox>(this).Any(InputHasChanged) ||
Utils.FindVisualChilds<ComboBox>(this).Any(InputHasChanged) ||
Utils.FindVisualChilds<CheckBox>(this).Any(InputHasChanged) ||
Utils.FindVisualChilds<RadioButton>(this).Any(InputHasChanged);
Utils.FindVisualChilds<TextBox>(this, ExemptInputs).Any(InputHasChanged) ||
Utils.FindVisualChilds<ComboBox>(this, ExemptInputs).Any(InputHasChanged) ||
Utils.FindVisualChilds<CheckBox>(this, ExemptInputs).Any(InputHasChanged) ||
Utils.FindVisualChilds<RadioButton>(this, ExemptInputs).Any(InputHasChanged);
}
private void UpdatePlz(TextBox plzInput, ComboBox ortInput) {