Files
harmonia/Harmonia.UI/Views/PlaybackBar.axaml.cs

48 lines
1.3 KiB
C#

using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Interactivity;
using Harmonia.UI.ViewModels;
namespace Harmonia.UI.Views;
public partial class PlaybackBar : UserControl
{
private readonly PlaybackBarViewModel _viewModel;
public PlaybackBar()
{
InitializeComponent();
_viewModel = (PlaybackBarViewModel)DataContext!;
}
private void Slider_Loaded(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
if (sender is not Slider slider)
return;
slider.AddHandler(PointerPressedEvent, OnSliderPointerPressed, RoutingStrategies.Tunnel);
slider.AddHandler(PointerReleasedEvent, OnSliderPointerReleased, RoutingStrategies.Tunnel);
}
private void OnSliderPointerPressed(object? sender, PointerPressedEventArgs e)
{
if (sender is not Slider slider)
return;
PointerPoint currentPoint = e.GetCurrentPoint(slider);
if (currentPoint.Properties.IsLeftButtonPressed == false)
return;
_viewModel.IsPositionChangeInProgress = true;
}
private void OnSliderPointerReleased(object? sender, PointerReleasedEventArgs e)
{
if (sender is not Slider slider)
return;
_viewModel.CurrentPosition = slider.Value;
_viewModel.IsPositionChangeInProgress = false;
}
}