Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
     }
 }
Beispiel #5
0
 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);
        }
Beispiel #7
0
        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());
        }
Beispiel #8
0
 public ArtistFanartImageStrategy(IMusicImageUpdater imageUpdater, IArtistViewModel artistViewModel)
 {
     _imageUpdater    = imageUpdater;
     _artistViewModel = artistViewModel;
 }
Beispiel #9
0
 public TrackViewModelParents(IArtistViewModel artist, IAlbumViewModel album)
 {
     this.Artist = artist;
     this.Album  = album;
 }
 public ArtistFanartImageStrategy(IMusicImageUpdater imageUpdater, IArtistViewModel artistViewModel)
 {
     _imageUpdater = imageUpdater;
     _artistViewModel = artistViewModel;
 }
 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);
        }
Beispiel #13
0
 public IArtistSelectionViewModel GetArtistSelection(IArtistViewModel artistViewModel)
 {
     return(new ArtistSelectionViewModel(_artistMetadataService, _imageService, _busyProvider, artistViewModel));
 }
Beispiel #14
0
 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);
 }