public Track(PlaybackTrack track) { TrackRef = track; Artist = "Unknown Artist"; Title = TrackRef.Title; if (TrackRef is LibraryPlaybackTrack) { LibraryPlaybackTrack libraryPlaybackTrack = (LibraryPlaybackTrack)TrackRef; if (libraryPlaybackTrack.AlbumLibraryId > 0) { MicrosoftZuneLibrary.AlbumMetadata album = FindAlbumInfoHelper.GetAlbumMetadata(libraryPlaybackTrack.AlbumLibraryId); Artist = album.AlbumArtist; } } }
public Track(PlaybackTrack zuneTrack, int index) : this() { if (zuneTrack != null) { ZuneTrack = zuneTrack; string trackUri; zuneTrack.GetURI(out trackUri); Uri = trackUri; Title = zuneTrack.Title; Duration = zuneTrack.Duration; MediaId = zuneTrack.ZuneMediaId.GetHashCode(); ConvertedMediaTypeId = (int) zuneTrack.MediaType; if (zuneTrack is LibraryPlaybackTrack) { LibraryPlaybackTrack libraryPlaybackTrack = (LibraryPlaybackTrack)zuneTrack; MediaId = libraryPlaybackTrack.MediaId; if (libraryPlaybackTrack.AlbumLibraryId > 0) { AlbumMetadata album = FindAlbumInfoHelper.GetAlbumMetadata(libraryPlaybackTrack.AlbumLibraryId); Artist = album.AlbumArtist; ArtistId = libraryPlaybackTrack.AlbumArtistLibraryId; Album = album.AlbumTitle; AlbumId = libraryPlaybackTrack.AlbumLibraryId; ReleaseYear = album.ReleaseYear; CoverUrl = album.CoverUrl; } } else if (zuneTrack is MarketplacePlaybackTrack) { MarketplacePlaybackTrack marketplacePlaybackTrack = (MarketplacePlaybackTrack)zuneTrack; Artist = marketplacePlaybackTrack.Artist; Album = marketplacePlaybackTrack.Album; } //else if (zuneTrack is StreamingPlaybackTrack) //{ // StreamingPlaybackTrack streamingPlaybackTrack = (StreamingPlaybackTrack)zuneTrack; //} //else if (zuneTrack is StreamingRadioPlaybackTrack) //{ // StreamingRadioPlaybackTrack streamingRadioPlaybackTrack = (StreamingRadioPlaybackTrack)zuneTrack; //} else if (zuneTrack is VideoPlaybackTrack) { VideoPlaybackTrack videoPlaybackTrack = (VideoPlaybackTrack)zuneTrack; Artist = videoPlaybackTrack.Artist; } // user rating Rating = (TrackRating)zuneTrack.UserRating; if (zuneTrack.RatingChanged.Available) { // anonymous event handler should take care of possible memory leaks zuneTrack.RatingChanged.PropertyChanged += delegate(object ratingSender, PropertyChangedEventArgs ratingEvent) { Rating = (TrackRating)zuneTrack.UserRating; }; } } Index = index; }