BaseDataWindow: Add fields for season
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user