use better fields for filler preset duration (#2442)
This commit is contained in:
@@ -58,6 +58,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||
- Fix deco dead air fallback selection and duration on mirror channels
|
||||
- Fix fallback filler duration on mirror channels
|
||||
|
||||
### Changed
|
||||
- Filler presets: use separate text fields for `hours`, `minutes` and `seconds` duration
|
||||
|
||||
## [25.6.0] - 2025-09-14
|
||||
### Added
|
||||
- Classic schedules: allow selecting multiple graphics elements on schedule items
|
||||
|
||||
@@ -56,7 +56,27 @@
|
||||
<div class="d-flex">
|
||||
<MudText>Duration</MudText>
|
||||
</div>
|
||||
<MudTimePicker @bind-Time="@_model.Duration" For="@(() => _model.Duration)" Disabled="@(_model.FillerMode != FillerMode.Duration)"/>
|
||||
<MudTextField T="int"
|
||||
@bind-Value="_model.DurationHours"
|
||||
Adornment="Adornment.End"
|
||||
AdornmentText="hours"
|
||||
Disabled="@(_model.FillerMode != FillerMode.Duration)"/>
|
||||
</MudStack>
|
||||
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
|
||||
<div class="d-flex"></div>
|
||||
<MudTextField T="int"
|
||||
@bind-Value="_model.DurationMinutes"
|
||||
Adornment="Adornment.End"
|
||||
AdornmentText="minutes"
|
||||
Disabled="@(_model.FillerMode != FillerMode.Duration)"/>
|
||||
</MudStack>
|
||||
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
|
||||
<div class="d-flex"></div>
|
||||
<MudTextField T="int"
|
||||
@bind-Value="_model.DurationSeconds"
|
||||
Adornment="Adornment.End"
|
||||
AdornmentText="seconds"
|
||||
Disabled="@(_model.FillerMode != FillerMode.Duration)"/>
|
||||
</MudStack>
|
||||
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
|
||||
<div class="d-flex">
|
||||
|
||||
@@ -13,6 +13,9 @@ public class FillerPresetEditViewModel
|
||||
private CollectionType _collectionType;
|
||||
private int? _count;
|
||||
private TimeSpan? _duration;
|
||||
private int _durationHours;
|
||||
private int _durationMinutes;
|
||||
private int _durationSeconds;
|
||||
private FillerKind _fillerKind;
|
||||
private FillerMode _fillerMode;
|
||||
private int? _padToNearestMinute;
|
||||
@@ -52,7 +55,44 @@ public class FillerPresetEditViewModel
|
||||
public TimeSpan? Duration
|
||||
{
|
||||
get => FillerMode == FillerMode.Duration ? _duration : null;
|
||||
set => _duration = value;
|
||||
set
|
||||
{
|
||||
_duration = value;
|
||||
CheckDuration();
|
||||
}
|
||||
}
|
||||
|
||||
public int DurationHours
|
||||
{
|
||||
get => _durationHours;
|
||||
set
|
||||
{
|
||||
_duration = TimeSpan.FromHours(value) + TimeSpan.FromMinutes(_duration?.Minutes ?? 0) +
|
||||
TimeSpan.FromSeconds(_duration?.Seconds ?? 0);
|
||||
CheckDuration();
|
||||
}
|
||||
}
|
||||
|
||||
public int DurationMinutes
|
||||
{
|
||||
get => _durationMinutes;
|
||||
set
|
||||
{
|
||||
_duration = TimeSpan.FromHours(_duration?.Hours ?? 0) + TimeSpan.FromMinutes(value) +
|
||||
TimeSpan.FromSeconds(_duration?.Seconds ?? 0);
|
||||
CheckDuration();
|
||||
}
|
||||
}
|
||||
|
||||
public int DurationSeconds
|
||||
{
|
||||
get => _durationSeconds;
|
||||
set
|
||||
{
|
||||
_duration = TimeSpan.FromHours(_duration?.Hours ?? 0) + TimeSpan.FromMinutes(_duration?.Minutes ?? 0) +
|
||||
TimeSpan.FromSeconds(value);
|
||||
CheckDuration();
|
||||
}
|
||||
}
|
||||
|
||||
public int? Count
|
||||
@@ -106,7 +146,7 @@ public class FillerPresetEditViewModel
|
||||
Name,
|
||||
FillerKind,
|
||||
FillerMode,
|
||||
Duration.Map(FixDuration),
|
||||
Duration,
|
||||
Count,
|
||||
PadToNearestMinute,
|
||||
AllowWatermarks,
|
||||
@@ -124,7 +164,7 @@ public class FillerPresetEditViewModel
|
||||
Name,
|
||||
FillerKind,
|
||||
FillerMode,
|
||||
Duration.Map(FixDuration),
|
||||
Duration,
|
||||
Count,
|
||||
PadToNearestMinute,
|
||||
AllowWatermarks,
|
||||
@@ -137,6 +177,32 @@ public class FillerPresetEditViewModel
|
||||
Expression,
|
||||
UseChaptersAsMediaItems);
|
||||
|
||||
private static TimeSpan FixDuration(TimeSpan duration) =>
|
||||
duration > TimeSpan.FromDays(1) ? duration.Subtract(TimeSpan.FromDays(1)) : duration;
|
||||
private void CheckDuration()
|
||||
{
|
||||
if (_fillerMode is FillerMode.Duration)
|
||||
{
|
||||
_duration ??= TimeSpan.Zero;
|
||||
|
||||
if (_duration > TimeSpan.FromHours(24))
|
||||
{
|
||||
_duration = TimeSpan.FromHours(24);
|
||||
}
|
||||
|
||||
if (_duration < TimeSpan.FromSeconds(1))
|
||||
{
|
||||
_duration = TimeSpan.FromSeconds(1);
|
||||
}
|
||||
|
||||
_durationHours = (int)_duration.Value.TotalHours;
|
||||
_durationMinutes = _duration.Value.Minutes;
|
||||
_durationSeconds = _duration.Value.Seconds;
|
||||
}
|
||||
else
|
||||
{
|
||||
_duration = null;
|
||||
_durationHours = 0;
|
||||
_durationMinutes = 0;
|
||||
_durationSeconds = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user