1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00
Robert 615f5b0b40 Added timeline scrolling
Added timeline caret
2020-01-02 19:27:16 +01:00

43 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using Stylet;
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Timeline
{
public class TimelinePropertyRailViewModel : PropertyChangedBase
{
public TimelinePropertyRailViewModel()
{
TimelineKeyframeViewModels = new BindableCollection<TimelineKeyframeViewModel>();
CreateTestValues();
}
public BindableCollection<TimelineKeyframeViewModel> TimelineKeyframeViewModels { get; set; }
public double Width { get; set; }
public void CreateTestValues()
{
var keyframeViewModels = new List<TimelineKeyframeViewModel>();
for (var i = 0; i < 20; i++)
{
keyframeViewModels.Add(new TimelineKeyframeViewModel());
keyframeViewModels[i].Position = TimeSpan.FromSeconds(i);
}
TimelineKeyframeViewModels.AddRange(keyframeViewModels);
}
public void Update(int pixelsPerSecond)
{
foreach (var timelineKeyframeViewModel in TimelineKeyframeViewModels)
timelineKeyframeViewModel.Update(pixelsPerSecond);
// End time is the last keyframe + 10 sec
var lastKeyFrame = TimelineKeyframeViewModels.OrderByDescending(t => t.Position).FirstOrDefault();
var endTime = lastKeyFrame?.Position.Add(new TimeSpan(0, 0, 0, 10)) ?? TimeSpan.FromSeconds(10);
Width = endTime.TotalSeconds * pixelsPerSecond;
}
}
}