diff --git a/CHANGELOG.md b/CHANGELOG.md index 7bce3eeb..5a820891 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - This may be needed with misbehaving NVIDIA drivers on Windows - Add health check error when invalid VAAPI device and VAAPI driver combination is used in an active ffmpeg profile - This makes it obvious when hardware acceleration will not work as configured +- Add button in schedule editor to clone schedule item ### Changed - Start to make UI minimally responsive (functional on smaller screens) diff --git a/ErsatzTV/Pages/ScheduleItemsEditor.razor b/ErsatzTV/Pages/ScheduleItemsEditor.razor index 15f0d52b..7142e66c 100644 --- a/ErsatzTV/Pages/ScheduleItemsEditor.razor +++ b/ErsatzTV/Pages/ScheduleItemsEditor.razor @@ -36,6 +36,7 @@ + Start Time @@ -44,6 +45,7 @@ + @@ -65,6 +67,11 @@ } + + + + @if (!_schedule.ShuffleScheduleItems) { @@ -609,6 +616,55 @@ _schedule.Items.Remove(item); } + private void CopyItem(ProgramScheduleItemEditViewModel item) + { + var newItem = new ProgramScheduleItemEditViewModel + { + Index = item.Index + 1, + StartType = item.StartType, + StartTime = item.StartTime, + FixedStartTimeBehavior = item.FixedStartTimeBehavior, + PlayoutMode = item.PlayoutMode, + CollectionType = item.CollectionType, + Collection = item.Collection, + MultiCollection = item.MultiCollection, + SmartCollection = item.SmartCollection, + Playlist = item.Playlist, + MediaItem = item.MediaItem, + PlaybackOrder = item.PlaybackOrder, + FillWithGroupMode = item.FillWithGroupMode, + CustomTitle = item.CustomTitle, + GuideMode = item.GuideMode, + PreRollFiller = item.PreRollFiller, + MidRollFiller = item.MidRollFiller, + PostRollFiller = item.PostRollFiller, + TailFiller = item.TailFiller, + FallbackFiller = item.FallbackFiller, + Watermark = item.Watermark, + PreferredAudioLanguageCode = item.PreferredAudioLanguageCode, + PreferredAudioTitle = item.PreferredAudioTitle, + PreferredSubtitleLanguageCode = item.PreferredSubtitleLanguageCode, + SubtitleMode = item.SubtitleMode, + + MultipleCount = item.MultipleCount, + PlayoutDuration = item.PlayoutDuration, + TailMode = item.TailMode, + DiscardToFillAttempts = item.DiscardToFillAttempts, + }; + + foreach (ProgramScheduleItemEditViewModel i in _schedule.Items.Filter(si => si.Index >= newItem.Index)) + { + i.Index += 1; + } + + _schedule.Items.Add(newItem); + + if (_selectedItem is not null) + { + _selectedItem = newItem; + } + } + private void MoveItemUp(ProgramScheduleItemEditViewModel item) { // swap with lower index