Пример #1
0
        private void SetHighlightState(bool highlighted)
        {
            if (playback.Track >= charts.Count)
            {
                return;
            }

            var backColor = highlighted ? Color.FromArgb(0, 48, 120) : MusicList.BackColor;
            var foreColor = highlighted ? Color.White  : Color.Black;

            MusicList.Invoke(new Action(() =>
            {
                foreach (ListViewItem item in MusicList.Items)
                {
                    if (item.Index != playback.Track)
                    {
                        item.BackColor = MusicList.BackColor;
                        item.ForeColor = Color.Black;
                    }
                }

                MusicList.Items[playback.Track].BackColor = backColor;
                MusicList.Items[playback.Track].ForeColor = foreColor;
            }));
        }
Пример #2
0
        async private void OnRenderComplete(object sender, EventArgs e)
        {
            await renderTask;

            if (charts.Count == 0)
            {
                GroupPlayback.Invoke(new Action(() => GroupPlayback.Enabled = false));
                return;
            }

            int repeat     = (int)RepeatBox.Invoke(new Func <int>(() => RepeatBox.SelectedIndex));
            int difficulty = (int)DifficultyBox.Invoke(new Func <int>(() => DifficultyBox.SelectedIndex));

            if (repeat != 1)
            {
                SetHighlightState(false);

                if ((bool)ShuffleBox.Invoke(new Func <bool>(() => ShuffleBox.Checked)))
                {
                    var randomizer = new Random();
                    playback.Track = randomizer.Next(charts.Count);
                }
                else if (repeat == 2 && playback.Track >= charts.Count)
                {
                    playback.Track = 0;
                }
                else if (playback.Track < charts.Count - 1)
                {
                    playback.Track++;
                }
                else
                {
                    playback.Track = 0;
                    return;
                }
            }

            MusicList.Invoke(new Action(() => MusicList.FocusedItem = MusicList.Items[playback.Track]));
            BtnPlay.Invoke(new Action(() => BtnPlay.PerformClick()));
        }