public LibraryAlbumInfo( LibraryPlaybackTrack track, int thumbnailMaxWidth, int thumbnailMaxHeight) : this(track, thumbnailMaxWidth, thumbnailMaxHeight, null) { }
public LibraryAlbumInfo( LibraryPlaybackTrack track, int thumbnailMaxWidth, int thumbnailMaxHeight, ICommand onAsyncUpdateAlbumArtUrlCompleted) { this._onAsyncUpdateAlbumArtUrlCompleted = onAsyncUpdateAlbumArtUrlCompleted == null ? new Command(this) : onAsyncUpdateAlbumArtUrlCompleted; if (track.MediaType == MediaType.Track) { this._trackId = track.MediaId; this._trackTitle = track.Title; int[] columnIndexes1 = new int[2] { 11, 78 }; object[] fieldValues1 = new object[2] { -1, -1 }; ZuneLibrary.GetFieldValues(this._trackId, EListType.eTrackList, columnIndexes1.Length, columnIndexes1, fieldValues1, PlaylistManager.Instance.QueryContext); int albumId = (int)fieldValues1[0]; int iMediaId = (int)fieldValues1[1]; if (albumId >= 0) { int[] columnIndexes2 = new int[2] { 382, 451 }; object[] fieldValues2 = new object[2]; ZuneLibrary.GetFieldValues(albumId, EListType.eAlbumList, columnIndexes2.Length, columnIndexes2, fieldValues2, PlaylistManager.Instance.QueryContext); this._albumTitle = (string)fieldValues2[0]; this._zuneMediaId = GuidHelper.CreateFromString((string)fieldValues2[1]); ThreadPool.QueueUserWorkItem(args => { string str = LibraryDataProviderItemBase.GetArtUrl(albumId, "Album", false); if (!string.IsNullOrEmpty(str)) { str = "file://" + str; } Application.DeferredInvoke(new DeferredInvokeHandler(this.AsyncUpdateAlbumArtUrl), str); }, null); } if (iMediaId < 0) { return; } int[] columnIndexes3 = new int[1] { 138 }; object[] fieldValues3 = new object[1]; ZuneLibrary.GetFieldValues(iMediaId, EListType.eArtistList, columnIndexes3.Length, columnIndexes3, fieldValues3, PlaylistManager.Instance.QueryContext); this._artistName = (string)fieldValues3[0]; } else if (track.MediaType == MediaType.PodcastEpisode) { this._trackId = track.MediaId; this._trackTitle = track.Title; int[] columnIndexes1 = new int[2] { 311, 24 }; object[] fieldValues1 = new object[2] { -1, null }; ZuneLibrary.GetFieldValues(this._trackId, EListType.ePodcastEpisodeList, columnIndexes1.Length, columnIndexes1, fieldValues1, PlaylistManager.Instance.QueryContext); int iMediaId = (int)fieldValues1[0]; this._artistName = (string)fieldValues1[1]; if (iMediaId < 0) { return; } int[] columnIndexes2 = new int[2] { 344, 17 }; object[] fieldValues2 = new object[2]; ZuneLibrary.GetFieldValues(iMediaId, EListType.ePodcastList, columnIndexes2.Length, columnIndexes2, fieldValues2, PlaylistManager.Instance.QueryContext); this._albumTitle = (string)fieldValues2[0]; this._albumArtUrl = (string)fieldValues2[1]; } else { if (track.MediaType != MediaType.Video) { return; } this._trackId = track.MediaId; this._trackTitle = track.Title; int[] columnIndexes = new int[3] { 380, 382, 312 }; object[] fieldValues = new object[3]; ZuneLibrary.GetFieldValues(this._trackId, EListType.eVideoList, columnIndexes.Length, columnIndexes, fieldValues, PlaylistManager.Instance.QueryContext); this._artistName = (string)fieldValues[0]; this._albumTitle = (string)fieldValues[1]; if (string.IsNullOrEmpty(this._albumTitle)) { this._albumTitle = (string)fieldValues[2]; } if (Application.RenderingType != RenderingType.GDI) { return; } ThreadPool.QueueUserWorkItem(args => { string artUrl = LibraryDataProviderItemBase.GetArtUrl(this._trackId, "Video", false); if (string.IsNullOrEmpty(artUrl)) { return; } Application.DeferredInvoke(new DeferredInvokeHandler(this.AsyncUpdateThumbnailUrl), "file://" + artUrl); }, null); } }