162 lines
5.8 KiB
Swift
162 lines
5.8 KiB
Swift
//
|
|
// PreferencesTabViewController.swift
|
|
// Harmony
|
|
//
|
|
// Created by Kim Wittenburg on 26.01.15.
|
|
// Copyright (c) 2015 Das Code Kollektiv. All rights reserved.
|
|
//
|
|
|
|
import Cocoa
|
|
|
|
internal class GeneralPreferencesViewController: NSViewController {
|
|
|
|
// MARK: IBOutlets
|
|
|
|
@IBOutlet internal weak var artworkPathControl: NSPathControl!
|
|
@IBOutlet internal weak var chooseArtworkButton: NSButton!
|
|
|
|
override internal func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
artworkPathControl.URL = Preferences.sharedPreferences.artworkTarget
|
|
}
|
|
|
|
@IBAction internal func saveArtworkStateChanged(sender: AnyObject) {
|
|
if Preferences.sharedPreferences.saveArtwork && Preferences.sharedPreferences.artworkTarget == nil {
|
|
chooseArtworkPath(sender)
|
|
}
|
|
}
|
|
|
|
@IBAction internal func chooseArtworkPath(sender: AnyObject) {
|
|
let openPanel = NSOpenPanel()
|
|
openPanel.canChooseDirectories = true
|
|
openPanel.canChooseFiles = false
|
|
openPanel.canCreateDirectories = true
|
|
openPanel.prompt = NSLocalizedString("Choose…", comment: "Button title in an open dialog prompting the user to choose a directory")
|
|
openPanel.beginSheetModalForWindow(view.window!) {
|
|
result in
|
|
if result == NSModalResponseOK {
|
|
Preferences.sharedPreferences.artworkTarget = openPanel.URL!.filePathURL!
|
|
} else if Preferences.sharedPreferences.artworkTarget == nil {
|
|
Preferences.sharedPreferences.saveArtwork = false
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
internal class StorePreferencesViewController: NSViewController {
|
|
|
|
dynamic var iTunesStores: [String] {
|
|
return NSLocale.ISOCountryCodes().map { NSLocale.currentLocale().displayNameForKey(NSLocaleCountryCode, value: $0)! }
|
|
}
|
|
|
|
dynamic var currentITunesStoreIndex: Int {
|
|
set {
|
|
let countryCode = NSLocale.ISOCountryCodes()[newValue]
|
|
Preferences.sharedPreferences.iTunesStore = countryCode
|
|
}
|
|
get {
|
|
return NSLocale.ISOCountryCodes().indexOf(Preferences.sharedPreferences.iTunesStore)!
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
internal class TagsPreferencesViewController: NSViewController, NSTableViewDataSource, NSTableViewDelegate, NSMenuDelegate {
|
|
|
|
// MARK: Types
|
|
|
|
private struct TableViewConstants {
|
|
|
|
static let textTableCellViewIdentifier = "textCell"
|
|
|
|
static let popupTableCellViewIdentifier = "popupCell"
|
|
|
|
static let tagTableColumnIdentifier = "tagColumn"
|
|
|
|
static let savingBehaviorTableColumnIdentifier = "savingBehaviorColumn"
|
|
|
|
}
|
|
|
|
// MARK: Properties
|
|
|
|
@IBOutlet weak var tableView: NSTableView!
|
|
|
|
// MARK: Table View
|
|
|
|
internal func numberOfRowsInTableView(tableView: NSTableView) -> Int {
|
|
return Track.Tag.allTags.count
|
|
}
|
|
|
|
func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {
|
|
let tag = Track.Tag.allTags[row]
|
|
if tableColumn?.identifier == TableViewConstants.tagTableColumnIdentifier {
|
|
let view = tableView.makeViewWithIdentifier(TableViewConstants.textTableCellViewIdentifier, owner: nil) as? NSTableCellView
|
|
view?.textField?.stringValue = tag.localizedName
|
|
return view
|
|
} else if tableColumn?.identifier == TableViewConstants.savingBehaviorTableColumnIdentifier {
|
|
let popupButton = tableView.makeViewWithIdentifier(TableViewConstants.popupTableCellViewIdentifier, owner: nil) as? NSPopUpButton
|
|
popupButton?.removeAllItems()
|
|
if tag.isReturnedBySearchAPI {
|
|
popupButton?.addItemWithTitle(NSLocalizedString("Save", comment: "Menu item title for a tag that is going to be saved"))
|
|
}
|
|
if tag.clearable {
|
|
popupButton?.addItemWithTitle(NSLocalizedString("Clear", comment: "Menu item title for a tag that is going to be cleared"))
|
|
}
|
|
popupButton?.addItemWithTitle(NSLocalizedString("Ignore", comment: "Menu item title for a tag that is not going to be saved"))
|
|
|
|
var selectedIndex: Int
|
|
switch Preferences.sharedPreferences.tagSavingBehaviors[tag]! {
|
|
case .Save:
|
|
selectedIndex = 0
|
|
case .Clear:
|
|
selectedIndex = 1
|
|
if !tag.isReturnedBySearchAPI {
|
|
--selectedIndex
|
|
}
|
|
case .Ignore:
|
|
selectedIndex = 2
|
|
if !tag.isReturnedBySearchAPI {
|
|
--selectedIndex
|
|
}
|
|
if !tag.clearable {
|
|
--selectedIndex
|
|
}
|
|
}
|
|
popupButton?.selectItemAtIndex(selectedIndex)
|
|
return popupButton
|
|
}
|
|
return nil
|
|
}
|
|
|
|
@IBAction private func savingBehaviorChanged(sender: NSPopUpButton) {
|
|
let tag = Track.Tag.allTags[tableView.rowForView(sender)]
|
|
let selectedIndex = sender.indexOfItem(sender.selectedItem!)
|
|
var savingBehavior = Preferences.sharedPreferences.tagSavingBehaviors[tag]!
|
|
switch selectedIndex {
|
|
case 0:
|
|
if tag.isReturnedBySearchAPI {
|
|
savingBehavior = .Save
|
|
} else if tag.clearable {
|
|
savingBehavior = .Clear
|
|
} else {
|
|
savingBehavior = .Ignore
|
|
}
|
|
case 1:
|
|
if tag.isReturnedBySearchAPI {
|
|
if tag.clearable {
|
|
savingBehavior = .Clear
|
|
} else {
|
|
savingBehavior = .Ignore
|
|
}
|
|
}
|
|
savingBehavior = .Ignore
|
|
case 2:
|
|
savingBehavior = .Ignore
|
|
default:
|
|
break
|
|
}
|
|
Preferences.sharedPreferences.tagSavingBehaviors[tag] = savingBehavior
|
|
}
|
|
|
|
} |