Handle ComboCheckBoxes in AdministrationWindow

This commit is contained in:
2023-07-20 21:00:13 +02:00
parent d43633cb65
commit 9ba45e58f6
2 changed files with 31 additions and 16 deletions

View File

@ -107,7 +107,8 @@ namespace Elwig.Windows {
Utils.ClearInputState(tb);
foreach (var cb in ComboBoxInputs)
Utils.ClearInputState(cb);
// TODO ComboCheckBox
foreach (var ccb in CheckComboBoxInputs)
Utils.ClearInputState(ccb);
foreach (var cb in CheckBoxInputs)
Utils.ClearInputState(cb);
foreach (var rb in RadioButtonInputs)
@ -126,8 +127,10 @@ namespace Elwig.Windows {
}
protected void LockInputs() {
foreach (var tb in TextBoxInputs)
foreach (var tb in TextBoxInputs) {
tb.IsReadOnly = true;
tb.Focusable = false;
}
foreach (var cb in ComboBoxInputs)
cb.IsEnabled = false;
foreach (var ccb in CheckComboBoxInputs)
@ -139,8 +142,10 @@ namespace Elwig.Windows {
}
protected void UnlockInputs() {
foreach (var tb in TextBoxInputs)
foreach (var tb in TextBoxInputs) {
tb.IsReadOnly = false;
tb.Focusable = true;
}
foreach (var cb in ComboBoxInputs)
cb.IsEnabled = true;
foreach (var ccb in CheckComboBoxInputs)
@ -160,7 +165,8 @@ namespace Elwig.Windows {
OriginalValues[tb] = tb.Text;
foreach (var cb in ComboBoxInputs)
OriginalValues[cb] = cb.SelectedItem;
// TODO ComboCheckBox
foreach (var ccb in CheckComboBoxInputs)
OriginalValues[ccb] = ccb.SelectedItems.Cast<object>().ToArray();
foreach (var cb in CheckBoxInputs)
OriginalValues[cb] = (cb.IsChecked ?? false) ? bool.TrueString : null;
foreach (var rb in RadioButtonInputs)
@ -180,6 +186,8 @@ namespace Elwig.Windows {
tb.Text = "";
foreach (var cb in ComboBoxInputs)
cb.SelectedItem = null;
foreach (var ccb in CheckComboBoxInputs)
ccb.SelectedItems.Clear();
foreach (var cb in CheckBoxInputs)
cb.IsChecked = false;
foreach (var rb in RadioButtonInputs)
@ -200,6 +208,8 @@ namespace Elwig.Windows {
return OriginalValues[tb]?.ToString() != tb.Text;
} else if (input is ComboBox sb) {
return OriginalValues[sb] != sb.SelectedItem;
} else if (input is CheckComboBox ccb) {
return !ccb.SelectedItems.Cast<object>().ToArray().SequenceEqual(((object[]?)OriginalValues[ccb]) ?? Array.Empty<object>());
} else if (input is CheckBox cb) {
return (OriginalValues[cb] != null) != (cb.IsChecked ?? false);
} else if (input is RadioButton rb) {