BaseDataWindow: Add fields for season

This commit is contained in:
2023-11-05 12:20:59 +01:00
parent 6435a649b4
commit 7fe2ea76c3
12 changed files with 244 additions and 57 deletions

View File

@ -24,6 +24,7 @@ namespace Elwig.Windows {
_mods = _modList.ToDictionary(m => m.ModId, m => (string?)m.ModId);
_modIds = _modList.ToDictionary(m => m, m => m.ModId);
ControlUtils.RenewItemsSource(SeasonModifierList, _modList, m => (m as Modifier)?.ModId);
SeasonModifierList_SelectionChanged(null, null);
}
private void ModifiersFinishEditing() {
@ -117,7 +118,7 @@ namespace Elwig.Windows {
UpdateButtons();
}
private void SeasonModifierList_SelectionChanged(object sender, SelectionChangedEventArgs evt) {
private void SeasonModifierList_SelectionChanged(object? sender, SelectionChangedEventArgs? evt) {
UpdateButtons();
_modUpdate = true;
if (SeasonModifierList.SelectedItem is not Modifier mod) {
@ -128,25 +129,23 @@ namespace Elwig.Windows {
} else {
SeasonModifierIdInput.Text = mod.ModId;
SeasonModifierNameInput.Text = mod.Name;
SeasonModifierRelInput.Text = (mod.Rel * 100)?.ToString();
SeasonModifierAbsInput.Text = mod.Abs?.ToString();
SeasonModifierRelInput.Text = (mod.Rel * 100)?.ToString() ?? "";
SeasonModifierAbsInput.Text = mod.Abs?.ToString() ?? "";
}
_modUpdate = false;
}
private void SeasonModifier_Changed(object? sender, RoutedEventArgs evt) {
private void SeasonModifier_Changed(object? sender, RoutedEventArgs? evt) {
if (_modUpdate || (!IsEditing && !IsCreating) || SeasonModifierList.SelectedItem is not Modifier mod || SeasonList.SelectedItem is not Season s || _mods == null || _modIds == null) return;
_modChanged = _modChanged ||
SeasonModifierIdInput.Text != mod.ModId;
_modChanged = true;
var old = _modIds.GetValueOrDefault(mod);
var id = SeasonModifierIdInput.Text ?? "";
if (old != null) _mods[old] = id;
mod.ModId = id;
mod.Name = SeasonModifierNameInput.Text;
mod.Rel = decimal.TryParse(SeasonModifierRelInput.Text, out var vRel) ? vRel / 100 : null;
if (mod.Rel != null) SeasonModifierAbsInput.Text = "";
mod.AbsValue = decimal.TryParse(SeasonModifierAbsInput.Text, out var vAbs) ? Utils.DecToDb(vAbs, s.Precision) : null;
if (mod.AbsValue != null) SeasonModifierRelInput.Text = "";
CollectionViewSource.GetDefaultView(_modList).Refresh();
UpdateButtons();
@ -158,12 +157,17 @@ namespace Elwig.Windows {
}
private void SeasonModifierRelInput_TextChanged(object sender, TextChangedEventArgs evt) {
// DecimalInput_TextChanged(sender, evt); FIXME '-' is ignored
InputTextChanged((TextBox)sender, Validator.CheckDecimal((TextBox)sender, false, 3, 2, true));
if (SeasonModifierRelInput.Text.Length > 0 && SeasonModifierAbsInput.Text.Length > 0)
SeasonModifierAbsInput.Text = "";
SeasonModifier_Changed(sender, evt);
}
private void SeasonModifierAbsInput_TextChanged(object sender, TextChangedEventArgs evt) {
// DecimalInput_TextChanged(sender, evt); FIXME '-' is ignored
if (SeasonList.SelectedItem is not Season s) return;
InputTextChanged((TextBox)sender, Validator.CheckDecimal((TextBox)sender, false, 2, s.Precision, true));
if (SeasonModifierAbsInput.Text.Length > 0 && SeasonModifierRelInput.Text.Length > 0)
SeasonModifierRelInput.Text = "";
SeasonModifier_Changed(sender, evt);
}
}