fixed some state change muckery

This commit is contained in:
Don Archer 2016-08-04 22:42:51 -07:00
parent d1172c8843
commit 06b03558e6
3 changed files with 17 additions and 40 deletions

View File

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

View File

@ -8,8 +8,8 @@ namespace Herse.Models
{
public enum PlayerState
{
Playing,
Stopped,
Paused
playing,
stopped,
paused
}
}

View File

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