/// <summary> /// Handle a playback changed event. /// Triggered by the <see cref="ZuneAPI.PlaybackChanged"/> event handler. /// </summary> /// <param name="sender">N/A</param> /// <param name="e">N/A</param> /// <seealso cref="DeferredUpdateAll"/> private void PlaybackChanged(object sender, EventArgs e) { if (cachedPlayback != zuneAPI.IsPlaying()) { cachedPlayback = zuneAPI.IsPlaying(); updateMessagesEnabled["playback"] = true; } DeferredUpdateAll(sender); if (updateMessagesEnabled["playback"]) { updateMessagesEnabled["playback"] = false; messenger.Send(messageParser.CreateMessage( zuneAPI.IsPlaying() ? MessageParser.MESSAGE_TYPE.PLAY : MessageParser.MESSAGE_TYPE.PAUSE), true); } }
/// <summary> /// Create a message to be passed to the client. /// </summary> /// <param name="type">The type of message to be passed.</param> /// <returns>Said message.</returns> public string CreateMessage(MESSAGE_TYPE type) { StringBuilder sb = new StringBuilder(); switch (type) { case MESSAGE_TYPE.FILTER_APPLY: sb.Append("apply_filter:"); sb.Append(eqAPI.IsEqualizerApplied() ? "true" : "false"); break; case MESSAGE_TYPE.FILTER_REMOVED: sb.Append("filter:removed"); break; case MESSAGE_TYPE.FILTER_ADDED: sb.Append("filter:added"); break; case MESSAGE_TYPE.FILTERS_GAIN: sb.Append("filters:"); // get the gains on the filters bool first = true; foreach (KeyValuePair <double, Filter> pair in eqAPI.GetFilters()) { Filter filter = pair.Value; if (first) { first = false; } else { sb.Append(","); } sb.Append(filter.Gain.ToString()); } break; case MESSAGE_TYPE.PAUSE: sb.Append("playback:pause"); break; case MESSAGE_TYPE.PLAY: sb.Append("playback:play"); break; case MESSAGE_TYPE.VOLUME_CHANGED: sb.Append("volume:"); sb.Append(eqAPI.PreAmp); break; case MESSAGE_TYPE.TRACK_CHANGED: sb.Append("track_changed:artist:"); sb.Append(zuneAPI.CurrentTrack.Artist); sb.Append(";trackname:"); sb.Append(zuneAPI.CurrentTrack.Title); sb.Append(";"); sb.Append(zuneAPI.IsPlaying() ? CreateMessage(MESSAGE_TYPE.PLAY) : CreateMessage(MESSAGE_TYPE.PAUSE)); sb.Append(";"); sb.Append(CreateMessage(MESSAGE_TYPE.VOLUME_CHANGED)); sb.Append(";"); sb.Append(CreateMessage(MESSAGE_TYPE.FILTERS_GAIN)); break; } return(sb.ToString()); }