Example #1
0
        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;
            }
        }
Example #2
0
        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);
        }