From c3e65fcb630d0df01e69d5ffee4e07b579fc8e70 Mon Sep 17 00:00:00 2001 From: Don Archer Date: Sat, 6 Aug 2016 09:59:23 -0700 Subject: [PATCH] got end of song working --- FirebaseKaraoke/FirebaseController.cs | 11 ++++++++++- KaraokePlayer/MainForm.cs | 9 ++++++++- KaraokePlayer/PlayerWrapper.cs | 7 +++++-- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/FirebaseKaraoke/FirebaseController.cs b/FirebaseKaraoke/FirebaseController.cs index 29f1bc4..5bdcbb9 100644 --- a/FirebaseKaraoke/FirebaseController.cs +++ b/FirebaseKaraoke/FirebaseController.cs @@ -34,6 +34,15 @@ namespace KaraokePlayer.Classes public string Id { get; set; } public Song CurrentSong { get; set; } + public void EndSong() + { + //_client.DeleteAsync(CurrentSongPath.TrimEnd('/')); + var response = _client.Get(string.Format("controllers/{0}/queue", this.Id)); + List queue = response.ResultAs>(); + queue.RemoveAt(0); + _client.Set(string.Format("controllers/{0}/queue", this.Id), queue); + } + public void SetState(PlayerState state) { _state = state; @@ -82,7 +91,7 @@ namespace KaraokePlayer.Classes { var response = _client.Get(CurrentSongPath); var item = response.ResultAs(); - if (item == null) return; + if (item == null) return; if (CurrentSong == null || CurrentSong.Path != item.Song.Path) { CurrentSong = item.Song; diff --git a/KaraokePlayer/MainForm.cs b/KaraokePlayer/MainForm.cs index d816f21..10e1d8c 100644 --- a/KaraokePlayer/MainForm.cs +++ b/KaraokePlayer/MainForm.cs @@ -21,10 +21,16 @@ namespace KaraokePlayer private FirebaseController controller; private PlayerWrapper player; + public void SongEnded() + { + controller.EndSong(); + } + public MainForm() { InitializeComponent(); player = new PlayerWrapper(karaokeCDGPlayer, karaokeMP4Player); + player.OnSongEnded += SongEnded; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; //this.WindowState = FormWindowState.Maximized; @@ -53,7 +59,8 @@ namespace KaraokePlayer this.Invoke(new Action(() => { player.stop(); })); player.Song = args.Song; this.Invoke(new Action(() => { previewSong(); })); - }); + } + ); } private async void previewSong() diff --git a/KaraokePlayer/PlayerWrapper.cs b/KaraokePlayer/PlayerWrapper.cs index a820226..f651a20 100644 --- a/KaraokePlayer/PlayerWrapper.cs +++ b/KaraokePlayer/PlayerWrapper.cs @@ -18,6 +18,9 @@ namespace KaraokePlayer private KaraokeVideoPlayer cdgPlayer; public Song Song { get; set; } + public delegate void SongEndedEventHandler(); + public SongEndedEventHandler OnSongEnded { get; set; } + public PlayerWrapper(KaraokeVideoPlayer cdgPlayer, KaraokeVideoPlayer mp4Player) { cdgPlayer.setup(true, true); @@ -32,15 +35,15 @@ namespace KaraokePlayer private void karaokePlayerSongEnded(object sender, EventArgs e) { - //TODO: figure out how to play the next song. probably just delete the current one + if (OnSongEnded != null) OnSongEnded(); } - public void stop() { if (currentPlayer == null) return; currentPlayer.Stop(); } + public void pause() { if (currentPlayer == null) return;