private void UpdatePlayback(PlaybackInfo playback) { if (playback.State is not null) { if (CurrentPlayback.State != playback.State) { CurrentPlayback.State = playback.State; if (CurrentPlayback.State == PlaybackState.Playing) { //mTimer.Start(); } else { //mTimer.Stop(); } } } if (playback.Elapsed is not null) { CurrentPlayback.Elapsed = playback.Elapsed; } }
private string Format(string format, SongInfo song, PlaybackInfo playback, PlayerInfo player) { var state = FormatterState.Read; var formatChar = '%'; var output = ""; for (var i = 0; i < format.Length;) { var c = format[i]; var consume = true; if (state == FormatterState.Read) { if (c == formatChar) { state = FormatterState.Format; } else { output += c; } } else if (state == FormatterState.Format) { switch (c) { case 's': output += song.Title ?? ""; break; case 'A': output += song.Artist ?? ""; break; case 'a': output += song.Album ?? ""; break; case 't': output += (song.Length ?? 0).ToString(); break; case 'T': output += ElapsedToTime((int)(song.Length ?? 0)); break; case 'e': output += (playback.Elapsed ?? 0).ToString(); break; case 'E': output += ElapsedToTime((int)(playback.Elapsed ?? 0)); break; case '%': output += '%'; break; default: Log.Warning("Invalid format character '{0}'", c); consume = false; break; } state = FormatterState.Read; } else { break; } if (consume) { i += 1; } } state = FormatterState.Done; return(output); }