internal void Previous() { if (!Random) { UpdateMediaList(); } else { UpdateRandomMediaList(); } VlcMediaCollection collection = Random ? mediaRandomList : mediaList; MediaBase media; for (int cpt = 0; cpt < 2; cpt++) { media = collection.LastOrDefault(m => m.Status == MediaStates.Played); if (media != null) { if (SelectedMedia != null) { if (MediaItems.Contains(SelectedMedia)) { SelectedMedia.Status = collection.IndexOf(media) < collection.IndexOf(SelectedMedia) ? MediaStates.NotPlayed : MediaStates.Played; } else { collection.Remove(SelectedMedia); } } media.Status = MediaStates.Selected; SelectedMedia = media; break; } if (!Loop) { break; } if (cpt == 0) { collection. Where(m => m.Status == MediaStates.NotPlayed).ToList(). ForEach(m => m.Status = MediaStates.Played); } } }
private void UpdateRandomMediaList() { foreach (MediaBase item in mediaRandomList) { if (!mediaItems.Contains(item)) { item.Status = SelectedMedia == null ? MediaStates.Disabled : MediaStates.SelectedButDisabled; } } int beginningIndex = 0; if (SelectedMedia != null && mediaItems.Contains(SelectedMedia)) { beginningIndex = mediaRandomList.IndexOf(SelectedMedia) + 1; } for (int cpt = 0; cpt < mediaItems.Count; cpt++) { MediaBase item = mediaItems[cpt]; if (item == SelectedMedia) { continue; } if (!mediaRandomList.Contains(item)) { int index = new Random().Next(beginningIndex, mediaRandomList.Count); mediaRandomList.Insert(index, item); item.Status = MediaStates.NotPlayed; } else if (SelectedMedia != null && mediaRandomList.IndexOf(SelectedMedia) < mediaRandomList.IndexOf(item)) { item.Status = MediaStates.NotPlayed; } else if (SelectedMedia != null && mediaRandomList.IndexOf(SelectedMedia) > mediaRandomList.IndexOf(item)) { item.Status = MediaStates.Played; } else { item.Status = MediaStates.NotPlayed; } } }
internal void Next() { if (!Random) { UpdateMediaList(); } else { UpdateRandomMediaList(); } VlcMediaCollection collection = Random ? mediaRandomList : mediaList; if (Loop && SelectedMedia != null && collection.IndexOf(SelectedMedia) == collection.Count - 1) { collection.ToList().ForEach(m => m.Status = MediaStates.NotPlayed); } MediaBase media = collection.FirstOrDefault(m => m.Status == MediaStates.NotPlayed); if (media != null) { if (SelectedMedia != null) { if (SelectedMedia.Status == MediaStates.SelectedButDisabled) { collection.Remove(SelectedMedia); } else { SelectedMedia.Status = MediaStates.Played; } } media.Status = MediaStates.Selected; SelectedMedia = media; } }