SettingViewController.swift 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. //
  2. // SettingViewController.swift
  3. // KdanAuto
  4. //
  5. // Created by 朱东勇 on 2022/11/21.
  6. //
  7. import Foundation
  8. import AppKit
  9. enum PathType {
  10. case Origin;
  11. case Result;
  12. case Check;
  13. }
  14. public protocol SettingViewControllerDelegate : NSObjectProtocol {
  15. @MainActor func settingViewDidFinished()
  16. }
  17. class SettingViewController : NSViewController, NSTextFieldDelegate, NSWindowDelegate {
  18. static var vc : SettingViewController!
  19. @IBOutlet var window : NSWindow!
  20. public var delegate : SettingViewControllerDelegate!
  21. @IBOutlet var originPathTF : NSTextField!
  22. @IBOutlet var resultPathTF : NSTextField!
  23. @IBOutlet var checkPathTF : NSTextField!
  24. @IBOutlet var originPathBtn : NSButton!
  25. @IBOutlet var resultPathBtn : NSButton!
  26. @IBOutlet var checkPathBtn : NSButton!
  27. class func shared() -> SettingViewController {
  28. if vc == nil {
  29. vc = SettingViewController()
  30. Bundle.main.loadNibNamed("SettingViewController", owner: vc, topLevelObjects: nil)
  31. }
  32. return vc
  33. }
  34. override func viewDidLoad() {
  35. }
  36. override func viewWillAppear() {
  37. self.originPathTF.stringValue = DataModel.shared.originPath();
  38. self.checkPathTF.stringValue = DataModel.shared.checkPath();
  39. self.resultPathTF.stringValue = DataModel.shared.resultPath();
  40. }
  41. // IBAction
  42. @IBAction func pathSelected(_ sender:NSButton) {
  43. var openPanel = NSOpenPanel()
  44. openPanel.canChooseFiles = false
  45. openPanel.canChooseDirectories = true
  46. var pt:PathType = .Origin
  47. if (sender == self.checkPathBtn) {
  48. pt = .Check
  49. }else if sender == self.resultPathBtn {
  50. pt = .Result
  51. }
  52. if openPanel.runModal() == NSApplication.ModalResponse.OK {
  53. let path = openPanel.directoryURL?.relativePath
  54. switch (pt)
  55. {
  56. case .Origin: do {
  57. DataModel.shared.setOriginPath(path!);
  58. self.originPathTF.stringValue = path!;
  59. }
  60. case .Check: do {
  61. DataModel.shared.setCheckPath(path!);
  62. self.checkPathTF.stringValue = path!;
  63. }
  64. default: do {
  65. DataModel.shared.setResultPath(path!);
  66. self.resultPathTF.stringValue = path!;
  67. }
  68. }
  69. }
  70. }
  71. // Show
  72. public func show() {
  73. window.setIsVisible(true);
  74. }
  75. //Window Delegate
  76. func windowShouldClose(_ sender: NSWindow) -> Bool {
  77. if delegate != nil {
  78. delegate.settingViewDidFinished()
  79. }
  80. sender.setIsVisible(false);
  81. return false;
  82. }
  83. }