Archived
1
This commit is contained in:
Kim Wittenburg
2019-02-01 22:59:01 +01:00
parent ba472864df
commit 0a485ff42a
82 changed files with 3975 additions and 1822 deletions

71
TagTunes/SongItem.swift Executable file
View File

@@ -0,0 +1,71 @@
//
// SongItem.swift
// TagTunes
//
// Created by Kim Wittenburg on 30.05.15.
// Copyright (c) 2015 Kim Wittenburg. All rights reserved.
//
import SearchAPI
/// Represents a `Song` from the Search API.
public class SongItem: TagTunesEntityItem {
/// Returns the `entity` as a `Song`.
public var song: Song {
return entity as! Song
}
public var album: Album {
return parentItem?.entity as! Album
}
override public var saved: Bool {
let components = NSCalendar.currentCalendar().components(.Year, fromDate: song.releaseDate)
for track in associatedTracks {
let trackName = Preferences.sharedPreferences.useCensoredNames ? song.censoredName : song.name
let albumName = Preferences.sharedPreferences.useCensoredNames ? album.censoredName : album.name
let options = Preferences.sharedPreferences.caseSensitive ? [] : NSStringCompareOptions.CaseInsensitiveSearch
if let name = track.name where name.compare(trackName, options: options, range: nil, locale: nil) != .OrderedSame {
return false
}
if let album = track.album where album.compare(albumName, options: options, range: nil, locale: nil) != .OrderedSame {
return false
}
guard track.artist == song.artist.name && track.year == components.year && track.trackNumber == song.trackNumber && track.trackCount == song.trackCountOnDisc && track.discNumber == song.discNumber && track.discCount == song.discCount && track.genre == song.primaryGenre && track.albumArtist == album.artist.name && track.composer == "" else {
return false
}
}
return true
}
public override func valueForTag(tag: Tag) throws -> AnyObject! {
let censoredNames = Preferences.sharedPreferences.useCensoredNames
switch tag {
case .Name: return censoredNames ? song.censoredName : song.name
case .Artist: return censoredNames ? song.artist.censoredName : song.artist.name
case .Year:
let components = NSCalendar.currentCalendar().components(.Year, fromDate: song.releaseDate)
return components.year
case .TrackNumber: return song.trackNumber
case .TrackCount: return song.trackCountOnDisc
case .DiscNumber: return song.discNumber
case .DiscCount: return song.discCount
case .Genre: return song.primaryGenre
case .AlbumName: return censoredNames ? album.censoredName : album.name
case .AlbumArtist: return album.artist.name
case .Compilation: return album.compilation
case .ReleaseDate: return song.releaseDate
// TODO: Artwork download error!
case .Artwork: return album.artwork.optimalArtworkImageForSize(CGFloat.max)
case .SortName,
.SortArtist,
.SortAlbumName,
.SortAlbumArtist,
.Composer,
.SortComposer,
.Comment: return nil
}
}
}