예제 #1
0
 private void ChangeTrack(bool next)
 {
     if (!IsShuffleEnable)
     {
         if (next)
         {
             _trackIndex   = _trackIndex + 1;
             CurrentTrack  = TrackModelList[_trackIndex];
             SelectedTrack = CurrentTrack;
         }
         else
         {
             _trackIndex   = _trackIndex - 1;
             CurrentTrack  = TrackModelList[_trackIndex];
             SelectedTrack = CurrentTrack;
         }
     }
     else
     {
         if (next)
         {
             var random      = new Random();
             var randomDigit = random.Next(0, TrackModelList.Count - 1);
             _trackIndex   = randomDigit;
             PreviousTrack = CurrentTrack;
             CurrentTrack  = TrackModelList[_trackIndex];
         }
         else
         {
             var random      = new Random();
             var randomDigit = random.Next(0, TrackModelList.Count - 1);
             if (PreviousTrack == null)
             {
                 _trackIndex   = randomDigit;
                 CurrentTrack  = TrackModelList[_trackIndex];
                 PreviousTrack = TrackModelList[random.Next(0, TrackModelList.Count - 1)];
             }
             else
             {
                 CurrentTrack  = PreviousTrack;
                 _trackIndex   = randomDigit;
                 PreviousTrack = TrackModelList[_trackIndex];
             }
         }
     }
     MyMediaElement.Stop();
     _timer.Stop();
     MyMediaElement.Open(new Uri(CurrentTrack.Path, UriKind.Relative));
     Position = 0;
     Thread.Sleep(100);
     StartTime = "0:00";
     IsPlay    = true;
     ChangePlayState(true);
 }
예제 #2
0
        private void PlayTrack(object o)
        {
            var track = o as TrackListModel;

            CurrentTrack = track;
            _trackIndex  = TrackModelList.IndexOf(track);
            MyMediaElement.Open(new Uri(CurrentTrack.Path, UriKind.Relative));
            MyMediaElement.Stop();
            Position = 0;
            Thread.Sleep(100);
            StartTime = "0:00";
            IsPlay    = true;
            ChangePlayState(true);
        }
예제 #3
0
 public PlayerViewModel()
 {
     TrackModelList = new ObservableCollection <TrackListModel>();
     InitializeTrackList();
     _timer.Interval = TimeSpan.FromMilliseconds(1000);
     _timer.Tick    += TimerPosition;
     CurrentTrack    = TrackModelList.First();
     SelectedTrack   = CurrentTrack;
     _trackIndex     = 0;
     MyMediaElement.Open(new Uri(CurrentTrack.Path, UriKind.Relative));
     MyMediaElement.Stop();
     MyMediaElement.MediaOpened += MyMediaElementOnMediaOpened;
     MyMediaElement.MediaEnded  += MyMediaElementOnMediaEnded;
     MyMediaElement.Volume       = Volume;
 }
예제 #4
0
        private void MyMediaElementOnMediaOpenedPreview(object sender, EventArgs eventArgs)
        {
            var duration =
                $"{MyMediaElement.NaturalDuration.TimeSpan.Minutes}:{GetCorrectSeconds(MyMediaElement.NaturalDuration.TimeSpan.Seconds)}";
            var path = MyMediaElement.Source.OriginalString;

            if (path == TrackModelList.Last().Path)
            {
                MyMediaElement.MediaOpened -= MyMediaElementOnMediaOpenedPreview;
                MyMediaElement.Open(new Uri(CurrentTrack.Path, UriKind.Relative));
                MyMediaElement.Stop();
                MyMediaElement.MediaOpened += MyMediaElementOnMediaOpened;
                MyMediaElement.MediaEnded  += MyMediaElementOnMediaEnded;
                MyMediaElement.Volume       = Volume;
            }

            TrackModelList.First(x => x.Path == path).Duration = duration;
        }