Banshee.Dap.AppleDevice.AppleDeviceTrackInfo.LoadFromIpodTrack C# (CSharp) Method

LoadFromIpodTrack() private method

private LoadFromIpodTrack ( ) : void
return void
        private void LoadFromIpodTrack ()
        {
            var track = IpodTrack;
            try {
                Uri = new SafeUri (System.IO.Path.Combine (track.ITDB.Mountpoint, track.IpodPath.Replace (":", System.IO.Path.DirectorySeparatorChar.ToString ()).Substring (1)));
            } catch (Exception ex) {
                Log.Exception (ex);
                Uri = null;
            }

            ExternalId = (long) track.DBID;

            IsCompilation = track.Compilation;
            AlbumArtist = track.AlbumArtist;
            AlbumTitle = String.IsNullOrEmpty (track.Album) ? null : track.Album;
            ArtistName = String.IsNullOrEmpty (track.Artist) ? null : track.Artist;
            BitRate = track.Bitrate;
            SampleRate = track.Samplerate;
            Bpm = (int)track.BPM;
            Comment = track.Comment;
            Composer = track.Composer;
            DateAdded = track.TimeAdded;
            DiscCount = track.CDs;
            DiscNumber = track.CDNumber;
            Duration = TimeSpan.FromMilliseconds (track.TrackLength);
            FileSize = track.Size;
            Genre = String.IsNullOrEmpty (track.Genre) ? null : track.Genre;
            Grouping = track.Grouping;
            LastPlayed = track.TimePlayed;
            PlayCount = (int) track.PlayCount;
            TrackCount = track.Tracks;
            TrackNumber = track.TrackNumber;
            TrackTitle = String.IsNullOrEmpty (track.Title) ? null : track.Title;
            Year = track.Year;
            description = track.Description;
            ReleaseDate = track.TimeReleased;
            ArtistNameSort = track.SortArtist;
            AlbumTitleSort = track.SortAlbum;
            AlbumArtistSort = track.SortAlbumArtist;
            TrackTitleSort = track.SortTitle;

            rating = track.Rating > 5 ? 0 : (int) track.Rating;

            if (track.DRMUserID > 0) {
                PlaybackError = StreamPlaybackError.Drm;
            }

            MediaAttributes = TrackMediaAttributes.AudioStream;
            switch (track.MediaType) {
            case GPod.MediaType.Audio:
                MediaAttributes |= TrackMediaAttributes.Music;
                break;
            // This seems to cause audio files to show up in Banshee in the Videos section
            /*case GPod.MediaType.AudioVideo:
                MediaAttributes |= TrackMediaAttributes.VideoStream;
                break;*/
            case GPod.MediaType.MusicVideo:
                MediaAttributes |= TrackMediaAttributes.Music | TrackMediaAttributes.VideoStream;
                break;
            case GPod.MediaType.Movie:
                MediaAttributes |= TrackMediaAttributes.VideoStream | TrackMediaAttributes.Movie;
                break;
            case GPod.MediaType.TVShow:
                MediaAttributes |= TrackMediaAttributes.VideoStream | TrackMediaAttributes.TvShow;
                break;
            case GPod.MediaType.Podcast:
                MediaAttributes |= TrackMediaAttributes.Podcast;
                // FIXME: persist URL on the track (track.PodcastUrl)
                break;
            case GPod.MediaType.Audiobook:
                MediaAttributes |= TrackMediaAttributes.AudioBook;
                break;
            case GPod.MediaType.MusicTVShow:
                MediaAttributes |= TrackMediaAttributes.Music | TrackMediaAttributes.VideoStream | TrackMediaAttributes.TvShow;
                break;
            }

            // If it's just AudioStream, add Music to it as well so it'll show up in Music
            if (MediaAttributes == TrackMediaAttributes.AudioStream) {
                MediaAttributes |= TrackMediaAttributes.Music;
            }
        }