Adding initial playback bar logic.
This commit is contained in:
@@ -1,11 +1,73 @@
|
||||
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;
|
||||
}
|
||||
|
||||
private void PlayButton_Click(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
_viewModel.Play();
|
||||
}
|
||||
|
||||
private void StopButton_Click(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
_viewModel.Stop();
|
||||
}
|
||||
|
||||
private void PauseButton_Click(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
_viewModel.Pause();
|
||||
}
|
||||
|
||||
private void PreviousSongButton_Click(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
_viewModel.Previous();
|
||||
}
|
||||
|
||||
private void NextSongButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
_viewModel.Next();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user