fixed some state change muckery
This commit is contained in:
parent
d1172c8843
commit
06b03558e6
@ -17,7 +17,7 @@ namespace KaraokePlayer.Classes
|
||||
AuthSecret = ConfigurationManager.AppSettings["Firebase.Secret"],
|
||||
BasePath = ConfigurationManager.AppSettings["Firebase.Path"]
|
||||
};
|
||||
private string _state = "playing";
|
||||
private PlayerState _state = PlayerState.playing;
|
||||
private IFirebaseClient _client;
|
||||
private ControllerStateChangedEventHandler _stateChanged;
|
||||
private ControllerSongChangedEventHandler _songChanged;
|
||||
@ -36,7 +36,8 @@ namespace KaraokePlayer.Classes
|
||||
|
||||
public void SetState(PlayerState state)
|
||||
{
|
||||
Update(string.Format("controllers/{0}", this.Id), new { state = _state });
|
||||
_state = state;
|
||||
_client.Set(StatePath, "playing");
|
||||
}
|
||||
|
||||
public FirebaseController(string clientId, ControllerStateChangedEventHandler stateChanged, ControllerSongChangedEventHandler songChanged)
|
||||
@ -47,14 +48,7 @@ namespace KaraokePlayer.Classes
|
||||
_client = new FirebaseClient(config);
|
||||
SetupListener();
|
||||
}
|
||||
|
||||
public void PlaySong(Song song) { Update(string.Format("Controllers/{0}", this.Id), new { CurrentSong = song }); }
|
||||
|
||||
|
||||
private void Delete(string path) { _client.DeleteAsync(path); }
|
||||
|
||||
private void Update(string path, object data) { _client.UpdateAsync(path, data); }
|
||||
|
||||
|
||||
private async void SetupListener()
|
||||
{
|
||||
await _client.OnAsync(CurrentSongPath,
|
||||
@ -77,7 +71,8 @@ namespace KaraokePlayer.Classes
|
||||
changed: (s, args, obj) =>
|
||||
{
|
||||
Console.WriteLine("state changed " + args.Data);
|
||||
StateDidChange(args.Data);
|
||||
PlayerState newstate = (PlayerState)Enum.Parse(typeof(PlayerState), args.Data);
|
||||
StateDidChange(newstate);
|
||||
},
|
||||
removed: null
|
||||
);
|
||||
@ -94,23 +89,11 @@ namespace KaraokePlayer.Classes
|
||||
}
|
||||
}
|
||||
|
||||
private void StateDidChange(string state)
|
||||
private void StateDidChange(PlayerState newstate)
|
||||
{
|
||||
if (state == _state) return;
|
||||
_state = state;
|
||||
switch(state)
|
||||
{
|
||||
case "paused":
|
||||
_stateChanged(new ControllerStateChangedEventArgs(PlayerState.Paused));
|
||||
break;
|
||||
case "stopped":
|
||||
_stateChanged(new ControllerStateChangedEventArgs(PlayerState.Stopped));
|
||||
break;
|
||||
case "playing":
|
||||
_stateChanged(new ControllerStateChangedEventArgs(PlayerState.Playing));
|
||||
break;
|
||||
}
|
||||
if (newstate == _state) return;
|
||||
_state = newstate;
|
||||
_stateChanged(new ControllerStateChangedEventArgs(newstate));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,8 +8,8 @@ namespace Herse.Models
|
||||
{
|
||||
public enum PlayerState
|
||||
{
|
||||
Playing,
|
||||
Stopped,
|
||||
Paused
|
||||
playing,
|
||||
stopped,
|
||||
paused
|
||||
}
|
||||
}
|
||||
|
||||
@ -37,13 +37,13 @@ namespace KaraokePlayer
|
||||
{
|
||||
switch (args.State)
|
||||
{
|
||||
case PlayerState.Playing:
|
||||
case PlayerState.playing:
|
||||
this.Invoke(new Action(() => { player.play(); }));
|
||||
break;
|
||||
case PlayerState.Paused:
|
||||
case PlayerState.paused:
|
||||
this.Invoke(new Action(() => { player.pause(); }));
|
||||
break;
|
||||
case PlayerState.Stopped:
|
||||
case PlayerState.stopped:
|
||||
this.Invoke(new Action(() => { player.stop(); }));
|
||||
break;
|
||||
}
|
||||
@ -62,14 +62,8 @@ namespace KaraokePlayer
|
||||
songInfoForm.Show();
|
||||
await Task.Delay(TimeSpan.FromSeconds(5));
|
||||
player.play();
|
||||
controller.SetState(PlayerState.Playing);
|
||||
controller.SetState(PlayerState.playing);
|
||||
songInfoForm.Hide();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user