using MyMediaCollection.Enums; using MyMediaCollection.Model; using System.Collections.Generic; namespace MyMediaCollection.ViewModels { public class MainViewModel : BindableBase { private string selectedMedium; private ObservableCollection items; private ObservableCollection allItems; private IList mediums; private MediaItem selectedMediaItem; private int additionalItemCount = 1; public MainViewModel() { PopulateData(); } public void PopulateData() { var cd = new MediaItem { Id = 1, Name = "Classical Favorites", MediaType = ItemType.Music, MediumInfo = new Medium { Id = 1, MediaType = ItemType.Music, Name = "CD" } }; var book = new MediaItem { Id = 2, Name = "Classic Fairy Tales", MediaType = ItemType.Book, MediumInfo = new Medium { Id = 2, MediaType = ItemType.Book, Name = "Book" } }; var bluRay = new MediaItem { Id = 3, Name = "The Mummy", MediaType = ItemType.Video, MediumInfo = new Medium { Id = 3, MediaType = ItemType.Video, Name = "Blu Ray" } }; items = new ObservableCollection { cd, book, bluRay }; allItems = new ObservableCollection(Items); mediums = new List { "All", nameof(ItemType.Book), nameof(ItemType.Music), nameof(ItemType.Video) }; selectedMedium = Mediums[0]; } public ObservableCollection Items { get { return items; } set { SetProperty(ref items, value); } } public IList Mediums { get { return mediums; } set { SetProperty(ref mediums, value); } } public string SelectedMedium { get { return selectedMedium; } set { SetProperty(ref selectedMedium, value); Items.Clear(); foreach (var item in allItems) { if (string.IsNullOrWhiteSpace(selectedMedium) || selectedMedium == "All" || selectedMedium == item.MediaType.ToString()) { Items.Add(item); } } } } public MediaItem SelectedMediaItem { get => selectedMediaItem; set { SetProperty(ref selectedMediaItem, value); } } public void AddOrEditItem() { // Note this is temporary until // we use a real data source for items. const int startingItemCount = 3; var newItem = new MediaItem { Id = startingItemCount + additionalItemCount, Location = LocationType.InCollection, MediaType = ItemType.Music, MediumInfo = new Medium { Id = 1, MediaType = ItemType.Music, Name = "CD" }, Name = $"CD {additionalItemCount}" }; Items.Add(newItem); additionalItemCount++; } public void DeleteItem() { Items.Remove(SelectedMediaItem); } } }