From f21060105d4bad4d8c859ba9cd7824b774ca7581 Mon Sep 17 00:00:00 2001 From: ScrubN <72096833+ScrubN@users.noreply.github.com> Date: Sun, 31 Dec 2023 02:17:47 -0500 Subject: [PATCH] Clear _waveSource and PlayedFile if last file was removed --- FModel/ViewModels/AudioPlayerViewModel.cs | 31 +++++++++++++++++++ .../Resources/Controls/Aup/SourceEventArgs.cs | 5 +-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/FModel/ViewModels/AudioPlayerViewModel.cs b/FModel/ViewModels/AudioPlayerViewModel.cs index 26ed628c..1409e9f6 100644 --- a/FModel/ViewModels/AudioPlayerViewModel.cs +++ b/FModel/ViewModels/AudioPlayerViewModel.cs @@ -238,6 +238,20 @@ public class AudioPlayerViewModel : ViewModel, ISource, IDisposable }); } + public void Unload() + { + Application.Current.Dispatcher.Invoke(() => + { + _waveSource = null; + + PlayedFile = new AudioFile(-1, "No audio file"); + Spectrum = null; + + RaiseSourceEvent(ESourceEventType.Clearing); + ClearSoundOut(); + }); + } + public void AddToPlaylist(byte[] data, string filePath) { Application.Current.Dispatcher.Invoke(() => @@ -274,6 +288,18 @@ public class AudioPlayerViewModel : ViewModel, ISource, IDisposable { _audioFiles[i].Id = i; } + + if (_audioFiles.Count < 1) + { + Unload(); + return; + } + + SelectedAudioFile = _audioFiles[SelectedAudioFile.Id]; + + if (!removedPlaying) return; + Load(); + Play(); }); } @@ -525,6 +551,11 @@ public class AudioPlayerViewModel : ViewModel, ISource, IDisposable _soundOut.Volume = UserSettings.Default.AudioPlayerVolume / 100; } + private void ClearSoundOut() + { + _soundOut = null; + } + private IEnumerable EnumerateDevices() { using var deviceEnumerator = new MMDeviceEnumerator(); diff --git a/FModel/Views/Resources/Controls/Aup/SourceEventArgs.cs b/FModel/Views/Resources/Controls/Aup/SourceEventArgs.cs index 102546ea..964638b7 100644 --- a/FModel/Views/Resources/Controls/Aup/SourceEventArgs.cs +++ b/FModel/Views/Resources/Controls/Aup/SourceEventArgs.cs @@ -4,7 +4,8 @@ namespace FModel.Views.Resources.Controls.Aup; public enum ESourceEventType { - Loading + Loading, + Clearing } public class SourceEventArgs : EventArgs @@ -15,4 +16,4 @@ public class SourceEventArgs : EventArgs { Event = e; } -} \ No newline at end of file +}