OSDN Git Service

分散していたスクリーンショットディレクトリを表すプロパティを集約した
[kcd/KCD.git] / KCD / PreferencePanelController.swift
index 377eb7c..5dd6790 100644 (file)
@@ -9,38 +9,51 @@
 import Cocoa
 
 enum PreferencesPaneType: Int {
+    
     case general = 1
+    
     case notification = 2
 }
+
 enum ScreenshotSaveDirectoryPopupMenuItemTag: Int {
+    
     case saveDirectory = 1000
+    
     case selectDiretory = 2000
 }
 
 private extension Selector {
+    
     static let didChangeSelection = #selector(PreferencePanelController.didChangeSelection(_:))
 }
 
-class PreferencePanelController: NSWindowController {
-    @IBOutlet var screenShotSaveDirectoryPopUp: NSPopUpButton!
-    @IBOutlet var generalPane: NSView!
-    @IBOutlet var notificationPane: NSView!
+final class PreferencePanelController: NSWindowController {
+    
+    @IBOutlet private var screenShotSaveDirectoryPopUp: NSPopUpButton!
+    @IBOutlet private var generalPane: NSView!
+    @IBOutlet private var notificationPane: NSView!
     
-    override var windowNibName: String! {
-        return "PreferencePanelController"
+    override var windowNibName: NSNib.Name {
+        
+        return .nibName(instanceOf: self)
     }
     
     private(set) var screenShotSaveDirectory: String {
-        get { return AppDelegate.shared.screenShotSaveDirectory }
+        
+        get { return ApplicationDirecrories.shared.screenShotSaveDirectory }
         set {
-            AppDelegate.shared.screenShotSaveDirectory = newValue
+            
+            ApplicationDirecrories.shared.setScreenshotDirectory(newValue)
             
             let index = screenShotSaveDirectoryPopUp
                 .indexOfItem(withTag: ScreenshotSaveDirectoryPopupMenuItemTag.saveDirectory.rawValue)
-            guard let item = screenShotSaveDirectoryPopUp.item(at: index)
-                else { return }
             
-            let icon = NSWorkspace.shared().icon(forFile: newValue)
+            guard let item = screenShotSaveDirectoryPopUp.item(at: index) else {
+                
+                return
+            }
+            
+            let icon = NSWorkspace.shared.icon(forFile: newValue)
             let iconSize = icon.size
             let height: Double = 16
             icon.size = NSSize(width: Double(iconSize.width) * height / Double(iconSize.height), height: height)
@@ -51,55 +64,95 @@ class PreferencePanelController: NSWindowController {
     }
     
     override func windowDidLoad() {
+        
         super.windowDidLoad()
         
-        screenShotSaveDirectory = AppDelegate.shared.screenShotSaveDirectory
-        guard let window = window,
-            let items = window.toolbar?.items,
-            items.count != 0,
-            let item = items.first
-            else { return }
+        screenShotSaveDirectory = ApplicationDirecrories.shared.screenShotSaveDirectory
+        
+        guard let window = window else {
+            
+            return
+        }
+        guard let item = window.toolbar?.items.first else {
+            
+            return
+        }
+        
         window.toolbar?.selectedItemIdentifier = item.itemIdentifier
-        NSApplication.shared().sendAction(.didChangeSelection,
-                                          to: self,
-                                          from: item)
+        NSApplication.shared.sendAction(.didChangeSelection, to: self, from: item)
         
         window.center()
     }
     
     @IBAction func selectScreenShotSaveDirectoryPopUp(_ sender: AnyObject?) {
-        guard let window = window,
-            let tag = sender?.tag,
-            ScreenshotSaveDirectoryPopupMenuItemTag.selectDiretory.rawValue == tag
-            else { return }
+        
+        guard let window = window else {
+            
+            return
+        }
+        guard let tag = sender?.tag else {
+            
+            return
+        }
+        guard let itemTag = ScreenshotSaveDirectoryPopupMenuItemTag(rawValue: tag) else {
+            
+            return
+        }
+        guard itemTag == .selectDiretory else {
+            
+            return
+        }
         
         let panel = NSOpenPanel()
         panel.canChooseDirectories = true
         panel.canChooseFiles = false
         panel.beginSheetModal(for: window) {
+            
             self.screenShotSaveDirectoryPopUp
                 .selectItem(withTag: ScreenshotSaveDirectoryPopupMenuItemTag.saveDirectory.rawValue)
-            guard $0 != NSModalResponseCancel,
-                let path = panel.url?.path
-                else { return }
+            
+            guard $0 != .cancel else {
+                
+                return
+            }
+            guard let path = panel.url?.path else {
+                
+                return
+            }
+            
             self.screenShotSaveDirectory = path
         }
     }
     
     @IBAction func didChangeSelection(_ sender: AnyObject?) {
-        guard let tag = sender?.tag,
-            let paneType = PreferencesPaneType(rawValue: tag)
-            else { return }
-        let pane: NSView = {
-            switch paneType {
-            case .general: return generalPane
-            case .notification: return notificationPane
-            }
-        }()
+        
+        guard let tag = sender?.tag else {
+            
+            return
+        }
+        guard let paneType = PreferencesPaneType(rawValue: tag) else {
+            
+            return
+        }
+        
+        let pane: NSView
+        switch paneType {
+            
+        case .general: pane = generalPane
+            
+        case .notification: pane = notificationPane
+            
+        }
 
-        guard let item = sender as? NSToolbarItem,
-            let window = self.window
-            else { return }
+        guard let item = sender as? NSToolbarItem else {
+            
+            return
+        }
+        guard let window = self.window else {
+            
+            return
+        }
+        
         window.title = item.label
         window.contentView?.subviews.forEach { $0.removeFromSuperview() }