示例#1
0
        void timer_Tick(object sender, EventArgs e)
        {
            if (mpc.Connected)
            {
                if (mpc.Update())
                {
                    window.Invoke((MethodInvoker) delegate() { window.mpc_OnUpdate(mpc, null); });
                    if (mpc.PreviousStatus == null || mpc.PreviousStatus.SongID != mpc.CurrentStatus.SongID)
                    {
                        mpc.UpdateCurrentSongInfo();

                        lcd.Artist = mpc.CurrentSong.Artist;
                        lcd.Title  = mpc.CurrentSong.Title;
                        lcd.Album  = mpc.CurrentSong.Album;
                        window.Invoke((MethodInvoker) delegate()
                        {
                            window.mpc_OnTrackChange(mpc, null);
                        });
                    }
                    if (mpc.PreviousStatus == null || mpc.PreviousStatus.PlaylistVersion != mpc.CurrentStatus.PlaylistVersion)
                    {
                        mpc.UpdateCurrentPlaylist();
                        window.Invoke((MethodInvoker) delegate()
                        {
                            window.mpc_OnPlaylistChange(mpc, null);
                        });
                    }
                    if (mpc.CurrentStatus.PlaybackState == PlaybackState.Stopped)
                    {
                        lcd.PlaylistPosition = -1;
                        lcd.PlaylistLength   = -1;
                        lcd.TrackTime        = -1;
                        lcd.TrackLength      = -1;
                        lcd.SetProgress(0, 0, 0);
                    }
                    else
                    {
                        lcd.PlaylistPosition = mpc.CurrentStatus.Song;
                        lcd.PlaylistLength   = mpc.CurrentStatus.PlaylistLength;
                        if (mpc.CurrentStatus.Time != null)
                        {
                            lcd.TrackTime   = mpc.CurrentStatus.Time.Current;
                            lcd.TrackLength = mpc.CurrentStatus.Time.Total;
                            lcd.SetProgress((int)mpc.CurrentStatus.Elapsed, 0, mpc.CurrentStatus.Time.Total * 1000);
                        }
                    }
                }
                lcd.SetPlaybackState(mpc.CurrentStatus.PlaybackState);
            }

            lcd.Update();
        }