public void LoadDataFromRelease(Release release, ICollectionImageHandler imageHandler) { if (release.DiscCount != this.DatabaseRelease.DiscCount || release.Tracklist.Count != this.DatabaseRelease.Tracklist.Count) { Dialogs.Error("Tracklists do not match. Can not continue."); return; } this.DatabaseRelease.AdditionalFiles.Clear(); this.DatabaseRelease.AdditionalFiles.AddRange(release.AdditionalFiles); this.DatabaseRelease.Artists.Clear(); this.DatabaseRelease.Artists.AddRange(release.Artists.Select(ra => new ReleaseArtist() { Artist = this.CollectionManager.GetOrCreateArtist(ra.Artist.Name), JoinString = ra.JoinString })); this.DatabaseRelease.CatalogNumber = release.CatalogNumber; this.DatabaseRelease.Country = release.Country; //this.DatabaseRelease.DateAdded = release.DateAdded; //this.DatabaseRelease.DateModified = release.DateModified; //this.DatabaseRelease.DateAudioModified = release.DateAudioModified; this.DatabaseRelease.DiscogsReleaseId = release.DiscogsReleaseId; this.DatabaseRelease.DiscogsMasterId = release.DiscogsMasterId; this.DatabaseRelease.FlagMessage = release.FlagMessage; this.DatabaseRelease.Genre = release.Genre; this.DatabaseRelease.IsFlagged = release.IsFlagged; this.DatabaseRelease.JoinedAlbumArtists = release.JoinedAlbumArtists; this.DatabaseRelease.Label = release.Label; this.DatabaseRelease.Notes = release.Notes; this.DatabaseRelease.WikipediaPageName = release.WikipediaPageName; this.DatabaseRelease.OriginalReleaseDate = release.OriginalReleaseDate; this.DatabaseRelease.ReleaseDate = release.ReleaseDate; this.DatabaseRelease.Title = release.Title; this.additionalFilesEditor.Release = null; this.additionalFilesEditor.Release = this.DatabaseRelease; this.DatabaseRelease.Images.Clear(); this.imagesEditor.Release = null; this.imagesEditor.Release = this.DatabaseRelease; foreach (var image in release.Images) { var newImage = new MusicDatabase.Engine.Entities.Image() { Description = image.Description, Extension = image.Extension, IsMain = image.IsMain, MimeType = image.MimeType, Type = image.Type }; this.DatabaseRelease.Images.Add(newImage); this.imagesEditor.AddImage(newImage, imageHandler.LoadImage(image)); } for (int i = 0; i < release.Tracklist.Count; ++i) { this.DatabaseRelease.Tracklist[i].Artists.Clear(); this.DatabaseRelease.Tracklist[i].Artists.AddRange(release.Tracklist[i].Artists.Select(a => new TrackArtist() { Artist = this.CollectionManager.GetOrCreateArtist(a.Artist.Name), JoinString = a.JoinString })); this.DatabaseRelease.Tracklist[i].JoinedArtists = release.Tracklist[i].JoinedArtists; this.DatabaseRelease.Tracklist[i].Title = release.Tracklist[i].Title; } this.detailsEditor.Release = null; this.detailsEditor.Release = this.DatabaseRelease; this.RefreshAllDiscs(); }
private void discEditor_ItemAdding(object sender, TrackAddingEventArgs e) { this.UpdateRelease(); string albumArtists = string.IsNullOrEmpty(e.ImportTrackItem.SourceItem.Tag.AlbumArtists) ? e.ImportTrackItem.SourceItem.Tag.Artists : e.ImportTrackItem.SourceItem.Tag.AlbumArtists; string artists = string.IsNullOrEmpty(e.ImportTrackItem.SourceItem.Tag.Artists) ? e.ImportTrackItem.SourceItem.Tag.AlbumArtists : e.ImportTrackItem.SourceItem.Tag.Artists; if (string.IsNullOrEmpty(this.DatabaseRelease.JoinedAlbumArtists) && !string.IsNullOrEmpty(albumArtists)) { this.DatabaseRelease.Artists.Clear(); this.DatabaseRelease.Artists.Add(new ReleaseArtist() { Artist = this.CollectionManager.GetOrCreateArtist(albumArtists) }); this.DatabaseRelease.JoinedAlbumArtists = albumArtists; } if (string.IsNullOrEmpty(this.DatabaseRelease.Title)) { this.DatabaseRelease.Title = e.ImportTrackItem.SourceItem.Tag.Album; } if (this.DatabaseRelease.ReleaseDate.Type == ReleaseDateType.Invalid && e.ImportTrackItem.SourceItem.Tag.Year != 0) { this.DatabaseRelease.ReleaseDate = new ReleaseDate(e.ImportTrackItem.SourceItem.Tag.Year); } if (string.IsNullOrEmpty(this.DatabaseRelease.Genre)) { this.DatabaseRelease.Genre = e.ImportTrackItem.SourceItem.Tag.Genre; } if (artists != this.DatabaseRelease.JoinedAlbumArtists && !string.IsNullOrEmpty(artists)) { foreach (Track track in this.DatabaseRelease.Tracklist) { if (string.IsNullOrEmpty(track.JoinedArtists)) { track.Artists.Add(new TrackArtist() { Artist = this.CollectionManager.GetOrCreateArtist(artists) }); track.JoinedArtists = artists; } } e.ImportTrackItem.Track.Artists.Add(new TrackArtist() { Artist = this.CollectionManager.GetOrCreateArtist(artists) }); e.ImportTrackItem.Track.JoinedArtists = artists; } this.detailsEditor.Release = null; this.detailsEditor.Release = this.DatabaseRelease; this.RefreshAllDiscs(); }
private void btnDiscogsMatch_Click(object sender, RoutedEventArgs e) { this.UpdateRelease(); DiscogsReleaseMerger merger = new DiscogsReleaseMerger(this, this.CollectionManager, this.DatabaseRelease, this.imagesEditor); foreach (var disc in this.Release.Discs) { merger.AddDisc(disc.Select(t => new Tuple<Track, string>(t.Track, t.SourceItem.Name))); } merger.Merge(); this.detailsEditor.Release = null; this.detailsEditor.Release = this.DatabaseRelease; this.RefreshAllDiscs(); }
private void btnWikipediaMatch_Click(object sender, RoutedEventArgs e) { this.UpdateRelease(); WikipediaImporter wikiImporter = new WikipediaImporter(this, this.DatabaseRelease); if (wikiImporter.Import()) { this.detailsEditor.Release = null; this.detailsEditor.Release = this.DatabaseRelease; this.RefreshAllDiscs(); } }
private void btnCapitalizeTitles_Click(object sender, RoutedEventArgs e) { if (this.DatabaseRelease.JoinedAlbumArtists != null) { this.DatabaseRelease.JoinedAlbumArtists = Utility.CapitalizeWords(this.DatabaseRelease.JoinedAlbumArtists); } if (this.DatabaseRelease.Title != null) { this.DatabaseRelease.Title = Utility.CapitalizeWords(this.DatabaseRelease.Title); } if (this.DatabaseRelease.Genre != null) { this.DatabaseRelease.Genre = Utility.CapitalizeWords(this.DatabaseRelease.Genre); } foreach (Track track in this.DatabaseRelease.Tracklist) { foreach (TrackArtist trackArtist in track.Artists) { string capitalizedName = Utility.CapitalizeWords(trackArtist.Artist.Name); if (capitalizedName != trackArtist.Artist.Name) { trackArtist.Artist = this.CollectionManager.GetOrCreateArtist(capitalizedName); } } if (track.Artists.Count > 0) { track.JoinedArtists = track.Artists.Join(); } if (track.Title != null) { track.Title = Utility.CapitalizeWords(track.Title); } } this.detailsEditor.Release = null; this.detailsEditor.Release = this.DatabaseRelease; this.RefreshAllDiscs(); }