public AlbumViewModel(IMusicFileService musicFileService, IAlbumMetadataService metadataService, IMusicImageUpdater imageUpdater, IMusicViewModelFactory viewModelFactory, IBusyProvider busyProvider, IDialogViewer dialogViewer, IProgressManagerViewModel progressManager, IKeyDataStore keyDataStore, IArtistViewModel artistViewModel, string path) : base(busyProvider, dialogViewer, viewModelFactory.GetTrack("dummy")) { _musicFileService = musicFileService; _metadataService = metadataService; _viewModelFactory = viewModelFactory; _busyProvider = busyProvider; _artistViewModel = artistViewModel; Title = new RequiredPropertyDecorator <string>(new StringCachedPropertyDecorator(keyDataStore, path)); Path = path; CoverArt = viewModelFactory.GetImage(true, new AlbumCoverArtImageStrategy(imageUpdater, this)); Selection = viewModelFactory.GetAlbumSelection(this); Genres = new DashDelimitedCollectionViewModel <string>(s => s); Moods = new DashDelimitedCollectionViewModel <string>(s => s); Styles = new DashDelimitedCollectionViewModel <string>(s => s); Themes = new DashDelimitedCollectionViewModel <string>(s => s); RefreshCommand = new RefreshMetadataCommand(this); UpdateCommand = new UpdateMetadataCommand(this, progressManager, busyProvider); SaveCommand = new SaveMetadataCommand(this); DeleteCommand = new DeleteMetadataCommand(this); }
private void MatchTracksWithParents(ObservableCollection <ITrackViewModel> tracks) { // Searches and matches tracks with respective albums and tracks to populate HistoryTracks // Also populates SortedMusicViewModels with retrieved tracks,albums,artists var tracksSorted = tracks.GroupBy(t => t.AlbumID).GroupBy(t => t.First().ArtistID); var keyValueList = new List <KeyValuePair <ITrackViewModel, TrackViewModelParents> >(); foreach (var artistGroup in tracksSorted) { var artistMusicObject = _musicLog.GetMusicObject(artistGroup.First().First().ArtistID); IArtistViewModel activeArtist = MusicObjectProvider.MakeArtistViewModel((IArtist)artistMusicObject); _sortedMusicViewModels.Add(activeArtist); foreach (var albumGroup in artistGroup) { var albumMusicObject = _musicLog.GetMusicObject(albumGroup.First().AlbumID); IAlbumViewModel activeAlbum = MusicObjectProvider.MakeAlbumViewModel((IAlbum)albumMusicObject); _sortedMusicViewModels.Add(activeAlbum); foreach (var track in albumGroup) { _sortedMusicViewModels.Add(track); track.Visible = true; var key = track; var value = new TrackViewModelParents(activeArtist, activeAlbum); keyValueList.Add(new KeyValuePair <ITrackViewModel, TrackViewModelParents>(key, value)); } } } HistoryTracks = keyValueList.OrderByDescending(l => l.Key.LastListenedUnix).ToObservableCollection(); }
private void RemoveArtists(IEnumerable <string> artists) { foreach (string path in artists) { IArtistViewModel artistToRemove = Artists.First(artist => artist.Path == path); Artists.Remove(artistToRemove); } }
private void AddArtists(IEnumerable <string> artists) { foreach (string path in artists) { IArtistViewModel newArtist = _viewModelFactory.GetArtist(path); Artists.Add(newArtist); } }
public ArtistSelectionViewModel(IArtistMetadataService metadataService, IMusicImageService imageService, IBusyProvider busyProvider, IArtistViewModel artistViewModel) : base(busyProvider, artistViewModel.Name.OriginalValue) { _metadataService = metadataService; _imageService = imageService; _artistViewModel = artistViewModel; }
public static ObservableCollection <IAlbumViewModel> MakeObservableAlbums(IArtistViewModel artist, MusicLogClient musicLog) { var albums = new ObservableCollection <IAlbumViewModel>(); foreach (IAlbum vanillaAlbum in musicLog.GetAlbums(artist.Artist)) { albums.Add(MakeAlbumViewModel(vanillaAlbum)); } return(albums); }
public void Add(IArtistViewModel artist) { if (_existingArtistID.ContainsKey(artist.ID)) { return; } _artists.Add(artist.Name.ToLower(), new List <ITrackViewModel>()); _existingArtistID.Add(artist.ID, artist.Name.ToLower()); }
public ArtistFanartImageStrategy(IMusicImageUpdater imageUpdater, IArtistViewModel artistViewModel) { _imageUpdater = imageUpdater; _artistViewModel = artistViewModel; }
public TrackViewModelParents(IArtistViewModel artist, IAlbumViewModel album) { this.Artist = artist; this.Album = album; }
public static ArtistOverviewViewModelParams CreateArtistOverviewViewModelParams(IArtistViewModel artistViewModel) { Assert.That(artistViewModel != null); return(CreateArtistOverviewViewModelParams(artistViewModel.ItemId)); }
internal static void ShowArtistOverview(IArtistViewModel artist) { var p = ViewModelParamFactory.CreateArtistOverviewViewModelParams(artist); DoShowArtistOverview(p); }
public IArtistSelectionViewModel GetArtistSelection(IArtistViewModel artistViewModel) { return(new ArtistSelectionViewModel(_artistMetadataService, _imageService, _busyProvider, artistViewModel)); }
public IAlbumViewModel GetAlbum(string path, IArtistViewModel artistViewModel) { return(new AlbumViewModel(_musicFileService, _albumMetadataService, _imageUpdater, this, _busyProvider, _dialogViewer, _progressManager, _keyDataStore, artistViewModel, path)); }
public IArtistSelectionViewModel GetArtistSelection(IArtistViewModel artistViewModel) { return new ArtistSelectionViewModel(_artistMetadataService, _imageService, _busyProvider, artistViewModel); }
public IAlbumViewModel GetAlbum(string path, IArtistViewModel artistViewModel) { return new AlbumViewModel(_musicFileService, _albumMetadataService, _imageUpdater, this, _busyProvider, _dialogViewer, _progressManager, _keyDataStore, artistViewModel, path); }