Adding initial playback bar logic.

This commit is contained in:
2025-03-02 13:46:33 -05:00
parent fc28004c89
commit 1a9c1a5478
16 changed files with 374 additions and 25 deletions

View File

@@ -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();
}
}