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

113
TagTunes/Preferences.swift Normal file → Executable file
View File

@@ -27,14 +27,6 @@ import Cocoa
// MARK: Types
internal struct UserDefaultsConstants {
static let saveArtworkKey = "Save Artwork"
static let artworkTargetKey = "Artwork Target"
static let overwriteExistingFilesKey = "Overwrite Existing Files"
static let keepSearchResultsKey = "Keep Search Results"
static let numberOfSearchResultsKey = "Number of Search Results"
@@ -42,18 +34,12 @@ import Cocoa
static let useEnglishTagsKey = "Use English Tags"
static let useLowResolutionArtworkKey = "Use Low Resolution Artwork"
static let removeSavedItemsKey = "Remove Saved Items"
static let keepSavedAlbumsKey = "Keep Saved Albums"
static let useCensoredNamesKey = "Use Censored Names"
static let caseSensitiveKey = "Case Sensitive"
static let clearArtworksKey = "Clear Artworks"
static let tagSavingBehaviorsKey = "Tag Saving Behaviors"
}
@@ -81,74 +67,27 @@ import Cocoa
/// overridden.
public func initializeDefaultValues() {
NSUserDefaults.standardUserDefaults().registerDefaults([
UserDefaultsConstants.saveArtworkKey: false,
UserDefaultsConstants.overwriteExistingFilesKey: false,
UserDefaultsConstants.keepSearchResultsKey: false,
UserDefaultsConstants.numberOfSearchResultsKey: 10,
UserDefaultsConstants.iTunesStoreKey: NSLocale.currentLocale().objectForKey(NSLocaleCountryCode)!,
UserDefaultsConstants.useEnglishTagsKey: false,
UserDefaultsConstants.useLowResolutionArtworkKey: false,
UserDefaultsConstants.removeSavedItemsKey: false,
UserDefaultsConstants.keepSavedAlbumsKey: false,
UserDefaultsConstants.useCensoredNamesKey: false,
UserDefaultsConstants.caseSensitiveKey: true,
UserDefaultsConstants.clearArtworksKey: false
UserDefaultsConstants.caseSensitiveKey: true
])
if NSUserDefaults.standardUserDefaults().dictionaryForKey(UserDefaultsConstants.tagSavingBehaviorsKey) == nil {
var savingBehaviors: [Track.Tag: TagSavingBehavior] = [:]
for tag in Track.Tag.allTags {
tagSavingBehaviors = [:]
}
var savingBehaviors = tagSavingBehaviors
for tag in Tag.allTags {
if savingBehaviors[tag] == nil {
savingBehaviors[tag] = tag.isReturnedBySearchAPI ? .Save : .Clear
}
tagSavingBehaviors = savingBehaviors
}
tagSavingBehaviors = savingBehaviors
}
// MARK: General Preferences
/// If `true` the album artwork should be saved to the `artworkTarget` URL
/// when an item is saved.
public dynamic var saveArtwork: Bool {
set {
NSUserDefaults.standardUserDefaults().setBool(newValue, forKey: UserDefaultsConstants.saveArtworkKey)
}
get {
return NSUserDefaults.standardUserDefaults().boolForKey(UserDefaultsConstants.saveArtworkKey)
}
}
/// The URL of the folder album artwork is saved to.
///
/// The URL must be a valid file URL pointing to a directory.
public dynamic var artworkTarget: NSURL? {
set {
NSUserDefaults.standardUserDefaults().setURL(newValue, forKey: UserDefaultsConstants.artworkTargetKey)
}
get {
return NSUserDefaults.standardUserDefaults().URLForKey(UserDefaultsConstants.artworkTargetKey)
}
}
/// If `true` any existing files will be overwritten when artworks are saved.
public dynamic var overwriteExistingFiles: Bool {
set {
NSUserDefaults.standardUserDefaults().setBool(newValue, forKey: UserDefaultsConstants.overwriteExistingFilesKey)
}
get {
return NSUserDefaults.standardUserDefaults().boolForKey(UserDefaultsConstants.overwriteExistingFilesKey)
}
}
/// If `true` the search results are not removed from the main outline view
/// when the user selects a result.
public dynamic var keepSearchResults: Bool {
set {
NSUserDefaults.standardUserDefaults().setBool(newValue, forKey: UserDefaultsConstants.keepSearchResultsKey)
}
get {
return NSUserDefaults.standardUserDefaults().boolForKey(UserDefaultsConstants.keepSearchResultsKey)
}
}
/// The number of search results that should be displayed.
public dynamic var numberOfSearchResults: Int {
set {
@@ -181,17 +120,6 @@ import Cocoa
}
}
/// If `true` the main table view will use 100x100 artworks instead of full
/// sized images. This option does not affect saving.
public dynamic var useLowResolutionArtwork: Bool {
set {
NSUserDefaults.standardUserDefaults().setBool(newValue, forKey: UserDefaultsConstants.useLowResolutionArtworkKey)
}
get {
return NSUserDefaults.standardUserDefaults().boolForKey(UserDefaultsConstants.useLowResolutionArtworkKey)
}
}
/// If `true` all saved items are removed from the list after saving.
public dynamic var removeSavedItems: Bool {
set {
@@ -201,17 +129,6 @@ import Cocoa
return NSUserDefaults.standardUserDefaults().boolForKey(UserDefaultsConstants.removeSavedItemsKey)
}
}
/// If `true` and `removeSavedItems` is also `true` albums are not removed on
/// saving.
public dynamic var keepSavedAlbums: Bool {
set {
NSUserDefaults.standardUserDefaults().setBool(newValue, forKey: UserDefaultsConstants.keepSavedAlbumsKey)
}
get {
return NSUserDefaults.standardUserDefaults().boolForKey(UserDefaultsConstants.keepSavedAlbumsKey)
}
}
// MARK: Tag Preferences
@@ -235,26 +152,16 @@ import Cocoa
return NSUserDefaults.standardUserDefaults().boolForKey(UserDefaultsConstants.caseSensitiveKey)
}
}
/// If `true` TagTunes clears the artworsk of saved tracks.
public dynamic var clearArtworks: Bool {
set {
NSUserDefaults.standardUserDefaults().setBool(newValue, forKey: UserDefaultsConstants.clearArtworksKey)
}
get {
return NSUserDefaults.standardUserDefaults().boolForKey(UserDefaultsConstants.clearArtworksKey)
}
}
/// The ways different tags are saved (or not saved).
public var tagSavingBehaviors: [Track.Tag: TagSavingBehavior] {
public var tagSavingBehaviors: [Tag: TagSavingBehavior] {
set {
let savableData = newValue.map { ($0.rawValue, $1.rawValue) }
NSUserDefaults.standardUserDefaults().setObject(savableData, forKey: UserDefaultsConstants.tagSavingBehaviorsKey)
}
get {
let savableData = NSUserDefaults.standardUserDefaults().dictionaryForKey(UserDefaultsConstants.tagSavingBehaviorsKey)!
return savableData.map { (Track.Tag(rawValue: $0)!, TagSavingBehavior(rawValue: $1 as! String)!) }
return savableData.map { (Tag(rawValue: $0)!, TagSavingBehavior(rawValue: $1 as! String)!) }
}
}