diff --git a/Changelog.txt b/Changelog.txt index 702fbe4..ab57a8b 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -20,4 +20,5 @@ Version 1.2 Added: + Option for displayed number of search results -+ Option to change the iTunes Store used to get tags \ No newline at end of file ++ Option to change the iTunes Store used to get tags ++ Option to remove saved items \ No newline at end of file diff --git a/TagTunes/Base.lproj/Main.storyboard b/TagTunes/Base.lproj/Main.storyboard index 44aa7c4..4831fda 100644 --- a/TagTunes/Base.lproj/Main.storyboard +++ b/TagTunes/Base.lproj/Main.storyboard @@ -760,11 +760,11 @@ CA - + - + @@ -802,7 +802,7 @@ CA - + @@ -833,7 +833,7 @@ CA - + @@ -854,7 +854,7 @@ CA - + @@ -862,7 +862,7 @@ CA - + @@ -871,7 +871,7 @@ CA - + @@ -890,7 +890,7 @@ CA - + @@ -899,7 +899,7 @@ CA - + @@ -921,7 +921,7 @@ CA - + @@ -930,6 +930,38 @@ CA + + + + + + + + If selected all tracks, previously added from iTunes, are removed from the list, when they are saved. If you only want tracks to be removed, you can set albums to not be removed. + + + + @@ -941,6 +973,8 @@ CA + + @@ -949,6 +983,10 @@ CA + + + + @@ -958,6 +996,7 @@ CA + @@ -969,7 +1008,7 @@ CA - + @@ -981,7 +1020,7 @@ CA - + diff --git a/TagTunes/MainViewController.swift b/TagTunes/MainViewController.swift index 8ef59a7..a7a865c 100644 --- a/TagTunes/MainViewController.swift +++ b/TagTunes/MainViewController.swift @@ -350,6 +350,28 @@ internal class MainViewController: NSViewController { } } } + + dispatch_sync(dispatch_get_main_queue()) { + if Preferences.sharedPreferences.removeSavedItems { + for item in items { + if let album = item as? Album { + for track in album.tracks { + track.associatedTracks.removeAll() + } + if !Preferences.sharedPreferences.keepSavedAlbums { + self.albumCollection.removeAlbum(album) + } + } else if let track = item as? Track { + track.associatedTracks.removeAll() + } else if let track = item as? iTunesTrack { + if let parentTrack = self.parentForTrack(track) { + parentTrack.associatedTracks.removeElement(track) + } + } + } + self.outlineView.reloadData() + } + } } private func numberOfTracksInItems(items: [AnyObject]) -> Int { diff --git a/TagTunes/Preferences.swift b/TagTunes/Preferences.swift index 655677e..7489d7c 100644 --- a/TagTunes/Preferences.swift +++ b/TagTunes/Preferences.swift @@ -40,10 +40,12 @@ import Cocoa static let iTunesStoreKey = "iTunes Store" - static let removeSavedAlbumsKey = "Remove Saved Albums" - 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" @@ -82,8 +84,9 @@ import Cocoa UserDefaultsConstants.keepSearchResultsKey: false, UserDefaultsConstants.numberOfSearchResultsKey: 10, UserDefaultsConstants.iTunesStoreKey: NSLocale.currentLocale().objectForKey(NSLocaleCountryCode)!, - UserDefaultsConstants.removeSavedAlbumsKey: false, UserDefaultsConstants.useLowResolutionArtworkKey: false, + UserDefaultsConstants.removeSavedItemsKey: false, + UserDefaultsConstants.keepSavedAlbumsKey: false, UserDefaultsConstants.useCensoredNamesKey: false, UserDefaultsConstants.caseSensitiveKey: true, UserDefaultsConstants.clearArtworksKey: false @@ -176,6 +179,27 @@ import Cocoa } } + /// If `true` all saved items are removed from the list after saving. + public dynamic var removeSavedItems: Bool { + set { + NSUserDefaults.standardUserDefaults().setBool(newValue, forKey: UserDefaultsConstants.removeSavedItemsKey) + } + get { + 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 /// If `true` TagTunes displays and saves censored names instead of the