Files
MesenCE/UI/Views/AudioPlayerView.axaml.cs
SourMesen e391fd8f9a Code: Add auto-formatting rules for C++ (clang-format) and enforce in CI via "clang-format" and "dotnet format" (#78)
* Code: Add auto-formatting rules for C++ projects (clang-format) and enforce code style via "clang-format" and "dotnet format"

* fix ui format warnings
2026-04-30 06:03:55 -07:00

69 lines
1.7 KiB
C#

using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Avalonia.Threading;
using Mesen.Config;
using Mesen.Interop;
using Mesen.ViewModels;
namespace Mesen.Views
{
public class AudioPlayerView : UserControl
{
private DispatcherTimer? _timer;
public AudioPlayerView()
{
InitializeComponent();
}
protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
{
_timer = new DispatcherTimer(System.TimeSpan.FromMilliseconds(100), DispatcherPriority.Normal, (s, e) => ((AudioPlayerViewModel)DataContext!).UpdatePauseFlag());
_timer.Start();
}
protected override void OnDetachedFromVisualTree(VisualTreeAttachmentEventArgs e)
{
_timer?.Stop();
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
private void OnPlayClick(object sender, RoutedEventArgs e)
{
if(EmuApi.IsPaused()) {
EmuApi.Resume();
} else {
EmuApi.Pause();
}
}
private void OnPrevTrackClick(object sender, RoutedEventArgs e)
{
EmuApi.ProcessAudioPlayerAction(new AudioPlayerActionParams() { Action = AudioPlayerAction.PrevTrack });
}
private void OnNextTrackClick(object sender, RoutedEventArgs e)
{
EmuApi.ProcessAudioPlayerAction(new AudioPlayerActionParams() { Action = AudioPlayerAction.NextTrack });
}
private void OnToggleShuffleClick(object sender, RoutedEventArgs e)
{
ConfigManager.Config.AudioPlayer.Shuffle = !ConfigManager.Config.AudioPlayer.Shuffle;
ConfigManager.Config.ApplyConfig();
}
private void OnToggleRepeatClick(object sender, RoutedEventArgs e)
{
ConfigManager.Config.AudioPlayer.Repeat = !ConfigManager.Config.AudioPlayer.Repeat;
ConfigManager.Config.ApplyConfig();
}
}
}