Esempio n. 1
0
    private void PlayTrack(AudioPlayer player, TrackList.Track track, float fromPosition = 0)
    {
        if (player.CurrentTrack != track.ResourcePath)
        {
            var stream = GD.Load <AudioStream>(track.ResourcePath);

            player.Player.Stream = stream;
            player.CurrentTrack  = track.ResourcePath;

            player.Player.Play(fromPosition);

            GD.Print("Jukebox: starting track: ", track.ResourcePath, " position: ", fromPosition);
        }
    }
        /// <summary>
        /// Обработчик события нажатия(клика мышкой) кнопки - "UpTR" в трек листе (перемещения трека вверх на 1 позицию в треклисте)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnMoveTrackUp_Click(object sender, RoutedEventArgs e)
        {
            // если треклист листбокса пуст , то выход
            if (TrackListBox.SelectedIndex == -1)
            {
                return;
            }

            // если в треклисте всего 1 трек, то ненужно никуда его передвигать - выход
            if (TrackListBox.Items.Count == 1)
            {
                return;
            }

            // если выбран первый трек, то ничего смещать не нужно - выход
            if (TrackListBox.SelectedIndex == 0)
            {
                return;
            }

            // запоминаем выделенный трек
            int index = TrackListBox.SelectedIndex;

            string str1 = (string)TrackListBox.Items[TrackListBox.SelectedIndex];
            string str2 = (string)TrackListBox.Items[TrackListBox.SelectedIndex - 1];

            int i = 0;

            for (;;)
            {
                if (str1[i] != ' ')
                {
                    str1 = str1.Remove(0, 1); // удаляем цифру если не пробел
                }
                else
                {
                    break;
                }
            }

            i = 0;
            for (;;)
            {
                if (str2[i] != ' ')
                {
                    str2 = str2.Remove(0, 1); // удаляем цифру если не пробел
                }
                else
                {
                    break;
                }
            }

            // меняем местами цифры и 2 строки в листбоксе
            int ind = TrackListBox.SelectedIndex;

            TrackListBox.Items[TrackListBox.SelectedIndex - 1] = ind.ToString() + "." + str1;
            ind++;
            TrackListBox.Items[TrackListBox.SelectedIndex] = ind.ToString() + "." + str2;

            // меняем местами выбранный пуить с путём который предыдущий  в списке(List) полных имён
            TrackList.Track path = TrackList.Tracks[index - 1];   // сохраняем путь выбранного трека - верхний
            TrackList.Tracks.Remove(TrackList.Tracks[index - 1]); // удаляем из листа путь выбранного трека -верхний
            TrackList.Tracks.Insert(index, path);                 // вставляем путь верхнего трека ниже на 1 позицию в треклисте

            TrackListBox.SelectedIndex = index - 1;               // переводим проигрывание трека на номер выше
        }