public void HandleUpdatedStateFromNetwork(Player state) { this.InvokeOnMainThread(() => { this.state = state; this.VolumeSlider.SetValue(state.Volume.Value, true); if(state.Current != null) { this.ArtistLabel.Text = state.Current.Artist; this.TitleLabel.Text = state.Current.Title; this.SeekSlider.MaxValue = state.Current.Length.Value; if(state.PlayPosition.HasValue) { this.SeekSlider.SetValue (state.PlayPosition.Value, true); } else { this.SeekSlider.Value = 0; } } else { this.ArtistLabel.Text = ""; this.TitleLabel.Text = ""; this.SeekSlider.SetValue (0, false); } if(state.Playing == 1) { this.PlayPauseButton.SetTitle("Pause", UIControlState.Normal); } else { this.PlayPauseButton.SetTitle ("Play", UIControlState.Normal); } }); }
protected void HandleUpdatedStateFromNetwork(Player state) { Log.WriteLine(Android.Util.LogPriority.Info, c, String.Format ("SUCCESS, CURRENTLY {0}: {1} " , state.Playing == 1 ? "Playing" : "Stopped", state.Current.Title)); RunOnUiThread(() => { currentState = state; preventSeekBarUpdates = true; titleTextView.SetText (state.Current.Title, TextView.BufferType.Normal); artistTextView.SetText (state.Current.Artist, TextView.BufferType.Normal); if(state.Current != null) { if (state.Current.Rating.HasValue) { ratingBar.Rating = state.Current.Rating.Value / (float)20; } songSeekBar.Max = (int)state.Current.Length; songSeekBar.Progress = (int)state.PlayPosition; } volumeSeekBar.Progress = (int)state.Volume.Value; // volume always has a value playButton.SetImageResource(state.Playing == 1 ? Resource.Drawable.media_pause : Resource.Drawable.media_play); preventSeekBarUpdates = false; }); }
protected void PushNewPlayerState(Player state) { gmb.PushNewPlayerState(state).ContinueWith ((playerResult) => { if(playerResult.IsFaulted || playerResult.IsCanceled) { Log.WriteLine(LogPriority.Error, c, "Problem pushing player state: " + playerResult.Exception); // TODO: reflect error in UI } else { HandleUpdatedStateFromNetwork(playerResult.Result); } }); }
public Task<Player> PushNewPlayerState(Player state) { var req = new RestRequest("/player", Method.POST); var json = JsonConvert.SerializeObject(state, Formatting.Indented, new JsonSerializerSettings { ContractResolver = new UnderscorePropertyNamesResolver(), NullValueHandling = NullValueHandling.Ignore }); req.AddParameter("text/json", json, ParameterType.RequestBody); Logging.Debug (c, "Posting updated player state..."); return ExecuteHttpTaskThatReturnsPlayerState(req, "pushing player state"); }
partial void PlayPauseClicked(NSObject sender) { if(state != null) { var newState = new Player() { Playing = state.Playing == 1 ? 0 : 1}; this.gmb.PushNewPlayerState(newState).ContinueWith(HandleUpdatedStateFromNetworkCompletedTask); } }