diff --git a/Box42.xcodeproj/project.pbxproj b/Box42.xcodeproj/project.pbxproj index 2871e50..823d63c 100644 --- a/Box42.xcodeproj/project.pbxproj +++ b/Box42.xcodeproj/project.pbxproj @@ -22,7 +22,6 @@ DE0A91632A8E6A5400D1D6F1 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE0A91622A8E6A5400D1D6F1 /* Constants.swift */; }; DE0A91672A8E6CA700D1D6F1 /* WebViewManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE0A91662A8E6CA700D1D6F1 /* WebViewManager.swift */; }; DE0A916D2A8E7DD700D1D6F1 /* HoverButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE0A916C2A8E7DD700D1D6F1 /* HoverButton.swift */; }; - DE0A91782A8F014F00D1D6F1 /* WebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE0A91772A8F014F00D1D6F1 /* WebView.swift */; }; DE0A917B2A8F0CA800D1D6F1 /* AppleScripts+ShowMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE0A917A2A8F0CA800D1D6F1 /* AppleScripts+ShowMessage.swift */; }; DE0A917F2A8F865400D1D6F1 /* BoxToolbarViewGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE0A917E2A8F865400D1D6F1 /* BoxToolbarViewGroup.swift */; }; DE0A91832A8F889000D1D6F1 /* GoHomePageViaToolbar().swift in Sources */ = {isa = PBXBuildFile; fileRef = DE0A91822A8F889000D1D6F1 /* GoHomePageViaToolbar().swift */; }; @@ -68,14 +67,18 @@ DE6332F22A9BCA2C00DCFAF6 /* QuickSlotScriptsLogicController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE6332F12A9BCA2C00DCFAF6 /* QuickSlotScriptsLogicController.swift */; }; DE77BA512A82580400713683 /* MenubarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BA502A82580400713683 /* MenubarViewModel.swift */; }; DE77BA562A82637900713683 /* StateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BA552A82637900713683 /* StateManager.swift */; }; - DE77BBB32A9DED25006CC98B /* WebViewFileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BBB22A9DED25006CC98B /* WebViewFileManager.swift */; }; - DE77BBBA2A9DEE1B006CC98B /* ExcuteScripts.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BBB82A9DEE1B006CC98B /* ExcuteScripts.swift */; }; - DE77BBBB2A9DEE1B006CC98B /* ScriptsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BBB92A9DEE1B006CC98B /* ScriptsController.swift */; }; + DE77BBA22A9DDC40006CC98B /* FileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BBA12A9DDC40006CC98B /* FileManager.swift */; }; + DE77BBA62A9DDF2B006CC98B /* WebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE0A91772A8F014F00D1D6F1 /* WebView.swift */; }; + DE77BBAA2A9DE680006CC98B /* GetUserProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BBA92A9DE680006CC98B /* GetUserProfile.swift */; }; + DE77BBAF2A9DEBA6006CC98B /* ExcuteScripts.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BBAE2A9DEBA6006CC98B /* ExcuteScripts.swift */; }; DE7886012A9C71BE00FE21DD /* IconsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE7886002A9C71BE00FE21DD /* IconsViewController.swift */; }; DE7886042A9C71CB00FE21DD /* IconsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE7886032A9C71CB00FE21DD /* IconsView.swift */; }; DE78860C2A9C770300FE21DD /* IconsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE78860B2A9C770300FE21DD /* IconsViewModel.swift */; }; DE7886102A9C773300FE21DD /* IconsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE78860F2A9C773300FE21DD /* IconsModel.swift */; }; DE7886172A9CCB3B00FE21DD /* UserProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE7886162A9CCB3B00FE21DD /* UserProfile.swift */; }; + DE78861C2A9CE7D700FE21DD /* IconChanged+WebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE78861B2A9CE7D700FE21DD /* IconChanged+WebView.swift */; }; + DE7886282A9D186700FE21DD /* ScriptsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE7886272A9D186700FE21DD /* ScriptsController.swift */; }; + DE78862D2A9D1ADE00FE21DD /* PreferencesCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE78862C2A9D1ADE00FE21DD /* PreferencesCell.swift */; }; DE7A257A2A6D8CA20043225A /* PreferencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE7A25792A6D8CA20043225A /* PreferencesViewController.swift */; }; DE7F9D462A9B7A4700F8ACAE /* QuickSlotButtonViewItem.xib in Resources */ = {isa = PBXBuildFile; fileRef = DE7F9D442A9B7A4700F8ACAE /* QuickSlotButtonViewItem.xib */; }; DE874F4E2A591DEA00FC3B77 /* Hotkey.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE874F4D2A591DEA00FC3B77 /* Hotkey.swift */; }; @@ -162,14 +165,17 @@ DE6332F12A9BCA2C00DCFAF6 /* QuickSlotScriptsLogicController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickSlotScriptsLogicController.swift; sourceTree = ""; }; DE77BA502A82580400713683 /* MenubarViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenubarViewModel.swift; sourceTree = ""; }; DE77BA552A82637900713683 /* StateManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StateManager.swift; sourceTree = ""; }; - DE77BBB22A9DED25006CC98B /* WebViewFileManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebViewFileManager.swift; sourceTree = ""; }; - DE77BBB82A9DEE1B006CC98B /* ExcuteScripts.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExcuteScripts.swift; sourceTree = ""; }; - DE77BBB92A9DEE1B006CC98B /* ScriptsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScriptsController.swift; sourceTree = ""; }; + DE77BBA12A9DDC40006CC98B /* FileManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileManager.swift; sourceTree = ""; }; + DE77BBA92A9DE680006CC98B /* GetUserProfile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GetUserProfile.swift; sourceTree = ""; }; + DE77BBAE2A9DEBA6006CC98B /* ExcuteScripts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExcuteScripts.swift; sourceTree = ""; }; DE7886002A9C71BE00FE21DD /* IconsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconsViewController.swift; sourceTree = ""; }; DE7886032A9C71CB00FE21DD /* IconsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconsView.swift; sourceTree = ""; }; DE78860B2A9C770300FE21DD /* IconsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconsViewModel.swift; sourceTree = ""; }; DE78860F2A9C773300FE21DD /* IconsModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconsModel.swift; sourceTree = ""; }; DE7886162A9CCB3B00FE21DD /* UserProfile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProfile.swift; sourceTree = ""; }; + DE78861B2A9CE7D700FE21DD /* IconChanged+WebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "IconChanged+WebView.swift"; sourceTree = ""; }; + DE7886272A9D186700FE21DD /* ScriptsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScriptsController.swift; sourceTree = ""; }; + DE78862C2A9D1ADE00FE21DD /* PreferencesCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesCell.swift; sourceTree = ""; }; DE7A25792A6D8CA20043225A /* PreferencesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferencesViewController.swift; sourceTree = ""; }; DE7F9D432A9B7A4700F8ACAE /* QuickSlotButtonViewItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickSlotButtonViewItem.swift; sourceTree = ""; }; DE7F9D442A9B7A4700F8ACAE /* QuickSlotButtonViewItem.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = QuickSlotButtonViewItem.xib; sourceTree = ""; }; @@ -233,7 +239,6 @@ DE9DA8122A97F1E2001C0D3B /* ButtonGroup */, DE1F1A202A8B50CA00A88DD8 /* Main */, DEB862D22A8511D600278FCD /* Scripts */, - DE874F512A591EC600FC3B77 /* Preferences */, DE018C0C2A509BDF00FF0AA3 /* Resources */, DE018C062A509B9000FF0AA3 /* System */, DE018C082A509BB500FF0AA3 /* WebView */, @@ -399,6 +404,8 @@ DE77BA542A82636500713683 /* Shared */ = { isa = PBXGroup; children = ( + DE77BBA82A9DE674006CC98B /* API */, + DE77BBA12A9DDC40006CC98B /* FileManager.swift */, DE1F1A282A8B50E200A88DD8 /* BoxSizeManager.swift */, DE77BA552A82637900713683 /* StateManager.swift */, DE0A91622A8E6A5400D1D6F1 /* Constants.swift */, @@ -407,7 +414,15 @@ path = Shared; sourceTree = ""; }; - DE77BBB72A9DEE0B006CC98B /* Controller */ = { + DE77BBA82A9DE674006CC98B /* API */ = { + isa = PBXGroup; + children = ( + DE77BBA92A9DE680006CC98B /* GetUserProfile.swift */, + ); + path = API; + sourceTree = ""; + }; + DE7885FD2A9C60C300FE21DD /* Controller */ = { isa = PBXGroup; children = ( DE77BBB82A9DEE1B006CC98B /* ExcuteScripts.swift */, @@ -467,6 +482,31 @@ path = Model; sourceTree = ""; }; + DE7886242A9D10AC00FE21DD /* Controller */ = { + isa = PBXGroup; + children = ( + DE7A25792A6D8CA20043225A /* PreferencesViewController.swift */, + ); + path = Controller; + sourceTree = ""; + }; + DE7886262A9D184900FE21DD /* Controller */ = { + isa = PBXGroup; + children = ( + DE7886272A9D186700FE21DD /* ScriptsController.swift */, + DE77BBAE2A9DEBA6006CC98B /* ExcuteScripts.swift */, + ); + path = Controller; + sourceTree = ""; + }; + DE78862B2A9D1A9E00FE21DD /* View */ = { + isa = PBXGroup; + children = ( + DE78862C2A9D1ADE00FE21DD /* PreferencesCell.swift */, + ); + path = View; + sourceTree = ""; + }; DE7F9D482A9B7A4E00F8ACAE /* Vertical Item */ = { isa = PBXGroup; children = ( @@ -479,7 +519,8 @@ DE874F512A591EC600FC3B77 /* Preferences */ = { isa = PBXGroup; children = ( - DE7A25792A6D8CA20043225A /* PreferencesViewController.swift */, + DE78862B2A9D1A9E00FE21DD /* View */, + DE7886242A9D10AC00FE21DD /* Controller */, DE874F532A591F1400FC3B77 /* PreferencesView.swift */, DE2AD3282A824EEB00002D51 /* Accessibility.swift */, DE874F4D2A591DEA00FC3B77 /* Hotkey.swift */, @@ -490,6 +531,7 @@ DE98E8382A98D48700F8744A /* QuickSlot */ = { isa = PBXGroup; children = ( + DE874F512A591EC600FC3B77 /* Preferences */, DE98E84E2A98E04F00F8744A /* ViewModel */, DE98E8492A98E02400F8744A /* Model */, DE98E8412A98DDEB00F8744A /* View */, @@ -546,7 +588,7 @@ DEB862D22A8511D600278FCD /* Scripts */ = { isa = PBXGroup; children = ( - DE77BBB72A9DEE0B006CC98B /* Controller */, + DE7886262A9D184900FE21DD /* Controller */, DE78860E2A9C771A00FE21DD /* Model */, DE78860A2A9C76F600FE21DD /* ViewModel */, DE7886082A9C741700FE21DD /* View */, @@ -723,10 +765,11 @@ DE97CA7C2A9A7199001073DE /* QuickSlotGroupView.swift in Sources */, DE77BBB32A9DED25006CC98B /* WebViewFileManager.swift in Sources */, DE018BE42A509B1700FF0AA3 /* CPU.swift in Sources */, - DE77BBBB2A9DEE1B006CC98B /* ScriptsController.swift in Sources */, + DE77BBA22A9DDC40006CC98B /* FileManager.swift in Sources */, DE874F5F2A5935CC00FC3B77 /* String.swift in Sources */, DE0A91862A8F889F00D1D6F1 /* RefreshPageViaToolbar.swift in Sources */, DE874F4E2A591DEA00FC3B77 /* Hotkey.swift in Sources */, + DE77BBA62A9DDF2B006CC98B /* WebView.swift in Sources */, DE0A91832A8F889000D1D6F1 /* GoHomePageViaToolbar().swift in Sources */, DE6332F22A9BCA2C00DCFAF6 /* QuickSlotScriptsLogicController.swift in Sources */, DE018BB32A5099F900FF0AA3 /* AppDelegate.swift in Sources */, @@ -734,6 +777,7 @@ DE0A91632A8E6A5400D1D6F1 /* Constants.swift in Sources */, DE7886172A9CCB3B00FE21DD /* UserProfile.swift in Sources */, DE0A91902A8F88CA00D1D6F1 /* DisplayURLInToolbar.swift in Sources */, + DE77BBAF2A9DEBA6006CC98B /* ExcuteScripts.swift in Sources */, DE018BF32A509B3300FF0AA3 /* MenubarModel.swift in Sources */, DE7A257A2A6D8CA20043225A /* PreferencesViewController.swift in Sources */, DE24E63B2A8FE93900E29F5D /* NSImage.swift in Sources */, @@ -743,12 +787,14 @@ DE3FF3762A978AB8009C88EF /* WindowCloseButton.swift in Sources */, DE3FF3772A978AB8009C88EF /* WindowMinimizeButton.swift in Sources */, DE4408022A923EB60091937A /* PinButtonView.swift in Sources */, + DE78862D2A9D1ADE00FE21DD /* PreferencesCell.swift in Sources */, DE0A91672A8E6CA700D1D6F1 /* WebViewManager.swift in Sources */, DE77BBBA2A9DEE1B006CC98B /* ExcuteScripts.swift in Sources */, DE97CA7F2A9A73A9001073DE /* QuickSlotUI.swift in Sources */, DE4408152A92750D0091937A /* keyDown+BoxBaseContainerViewController.swift in Sources */, DE018BED2A509B2600FF0AA3 /* URLModel.swift in Sources */, DE97CA692A9A6364001073DE /* PixelConversion+CGFloat.swift in Sources */, + DE7886282A9D186700FE21DD /* ScriptsController.swift in Sources */, DE4408052A923EC00091937A /* QuitButtonView.swift in Sources */, DE0A918A2A8F88A900D1D6F1 /* GoForwardInToolbar.swift in Sources */, DE1F1A1E2A8B50C500A88DD8 /* BoxButtonViewGroup.swift in Sources */, @@ -760,6 +806,7 @@ DEB862DC2A85347400278FCD /* Scripts.swift in Sources */, DE1F1A1D2A8B50C500A88DD8 /* BoxContentsViewGroup.swift in Sources */, DE24E6352A8FE02A00E29F5D /* MovableContainerView.swift in Sources */, + DE77BBAA2A9DE680006CC98B /* GetUserProfile.swift in Sources */, DE1F1A362A8BDDDF00A88DD8 /* StorageConfig.swift in Sources */, DE2AD3292A824EEB00002D51 /* Accessibility.swift in Sources */, DE24E6382A8FE10400E29F5D /* BoxBaseSplitView.swift in Sources */, @@ -767,7 +814,6 @@ DE98E8432A98DDFD00F8744A /* QuickSlotViewController.swift in Sources */, DE7886012A9C71BE00FE21DD /* IconsViewController.swift in Sources */, DE1F1A2E2A8BCC9800A88DD8 /* Storage.swift in Sources */, - DE0A91782A8F014F00D1D6F1 /* WebView.swift in Sources */, DE3FF36B2A978A57009C88EF /* WindowButtonViewController.swift in Sources */, DE1F1A312A8BD68F00A88DD8 /* Double.swift in Sources */, DE0A917F2A8F865400D1D6F1 /* BoxToolbarViewGroup.swift in Sources */, diff --git a/Box42.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Box42.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved deleted file mode 100644 index 19d4e8c..0000000 --- a/Box42.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ /dev/null @@ -1,16 +0,0 @@ -{ - "object": { - "pins": [ - { - "package": "SnapKit", - "repositoryURL": "https://github.com/SnapKit/SnapKit.git", - "state": { - "branch": null, - "revision": "f222cbdf325885926566172f6f5f06af95473158", - "version": "5.6.0" - } - } - ] - }, - "version": 1 -} diff --git a/Box42/ButtonGroup/ButtonGroupViewController.swift b/Box42/ButtonGroup/ButtonGroupViewController.swift index 2101feb..d2cb6f1 100644 --- a/Box42/ButtonGroup/ButtonGroupViewController.swift +++ b/Box42/ButtonGroup/ButtonGroupViewController.swift @@ -9,7 +9,7 @@ import Cocoa class ButtonGroupViewController: NSViewController { override func loadView() { -// let ButtonViewGroup = BoxButtonViewGroup() +// let ButtonViewGroup = BoxButtonViewGroup(clickAction: clickAction) let ButtonViewGroup = NSView() ButtonViewGroup.wantsLayer = true ButtonViewGroup.layer?.backgroundColor = NSColor.black.cgColor @@ -20,6 +20,10 @@ class ButtonGroupViewController: NSViewController { super.viewDidLoad() } + func clickAction(_ sender: NSButton?) { + print("click Action") + } + func preference() { print("preference") } diff --git a/Box42/Main/BoxBaseContainerViewController.swift b/Box42/Main/BoxBaseContainerViewController.swift index de5f5c0..b98f10f 100644 --- a/Box42/Main/BoxBaseContainerViewController.swift +++ b/Box42/Main/BoxBaseContainerViewController.swift @@ -9,6 +9,7 @@ import Cocoa import SnapKit class BoxBaseContainerViewController: NSViewController { + // MARK: - LeftContainer var splitView: BoxBaseSplitView = BoxBaseSplitView() var contentGroup: BoxContentsViewGroup = BoxContentsViewGroup() var toolbarGroupVC: ToolbarViewController = ToolbarViewController() @@ -17,6 +18,10 @@ class BoxBaseContainerViewController: NSViewController { let windowViewGroupVC: WindowButtonViewController = WindowButtonViewController() var leftContainer: MovableContainerView = MovableContainerView() var buttonGroupVC: ButtonGroupViewController = ButtonGroupViewController() + + // MARK: - QuickSlot + var preferenceVC: PreferencesViewController = PreferencesViewController() + weak var menubarVCDelegate: MenubarViewControllerDelegate? // extension override func loadView() { @@ -34,6 +39,8 @@ class BoxBaseContainerViewController: NSViewController { self.view.wantsLayer = true // self.view.layer?.backgroundColor = NSColor(hex: "#FF9548").cgColor self.view.layer?.backgroundColor = NSColor(hex: "#E7E7E7").cgColor + + NotificationCenter.default.addObserver(self, selector: #selector(handleButtonTapped), name: NSNotification.Name(NotifConst.object.collectionButtonTapped), object: nil) } func BoxButtonViewGroupInit() -> BoxButtonViewGroup { @@ -171,3 +178,24 @@ extension BoxBaseContainerViewController: BoxFunctionViewControllerDelegate { clickBtn(sender: "box") } } + +extension BoxBaseContainerViewController { + @objc func handleButtonTapped(notification: NSNotification) { + if let button = notification.object as? NSButton { + if button.title == QuickSlotUI.title.preferences { + print("Button with title \(button.title) was tapped in BaseVC") + contentGroup.showPreferences() + } + + if button.title == QuickSlotUI.title.user { + print("Button with title \(button.title) was tapped in BaseVC") + contentGroup.removeAllSubviews() + print(WebViewManager.shared.hostingWebView!) + contentGroup.addSubview(WebViewManager.shared.hostingWebView!) + WebViewManager.shared.hostingWebView!.snp.makeConstraints { make in + make.top.bottom.left.right.equalToSuperview() + } + } + } + } +} diff --git a/Box42/QuickSlot/Controller/QuickSlotScriptsLogicController.swift b/Box42/QuickSlot/Controller/QuickSlotScriptsLogicController.swift index 1038e76..346430f 100644 --- a/Box42/QuickSlot/Controller/QuickSlotScriptsLogicController.swift +++ b/Box42/QuickSlot/Controller/QuickSlotScriptsLogicController.swift @@ -17,11 +17,11 @@ class ScriptsLogicController { @objc func handleButtonTapped(notification: NSNotification) { if let button = notification.object as? NSButton { - let buttonTitle = button.title // 메인 스레드에서 타이틀을 캡쳐 + let buttonTitle = button.title print("Button with title \(buttonTitle) was tapped") DispatchQueue.global(qos: .background).async { [weak self] in - if buttonTitle == "clean" { + if buttonTitle == QuickSlotUI.title.clean { self?.executeCleanScript() } } @@ -53,5 +53,4 @@ class ScriptsLogicController { } } } - } diff --git a/Box42/QuickSlot/Controller/QuickSlotViewController.swift b/Box42/QuickSlot/Controller/QuickSlotViewController.swift index 177b5f9..47e6a29 100644 --- a/Box42/QuickSlot/Controller/QuickSlotViewController.swift +++ b/Box42/QuickSlot/Controller/QuickSlotViewController.swift @@ -26,7 +26,7 @@ class QuickSlotViewController: NSViewController { @objc func handleButtonTapped(notification: NSNotification) { if let button = notification.object as? NSButton { - print("Button with title \(button.title) was tapped") + print("Button with title \(button.title) was tapped in QuickSlotView") } } } diff --git a/Box42/QuickSlot/Model/QuickSlotUI.swift b/Box42/QuickSlot/Model/QuickSlotUI.swift index c61c2cf..096bcbc 100644 --- a/Box42/QuickSlot/Model/QuickSlotUI.swift +++ b/Box42/QuickSlot/Model/QuickSlotUI.swift @@ -21,4 +21,11 @@ enum QuickSlotUI { enum color { // static let pinText = NSColor(hex: "#696969") } + + enum title { + static let clean = "Clean" + static let preferences = "Preferences" + static let scripts = "Scripts" + static let user = "User" + } } diff --git a/Box42/Preferences/Accessibility.swift b/Box42/QuickSlot/Preferences/Accessibility.swift similarity index 100% rename from Box42/Preferences/Accessibility.swift rename to Box42/QuickSlot/Preferences/Accessibility.swift diff --git a/Box42/QuickSlot/Preferences/Controller/PreferencesViewController.swift b/Box42/QuickSlot/Preferences/Controller/PreferencesViewController.swift new file mode 100644 index 0000000..f247d46 --- /dev/null +++ b/Box42/QuickSlot/Preferences/Controller/PreferencesViewController.swift @@ -0,0 +1,56 @@ +// +// PreferencesViewController.swift +// Box42 +// +// Created by Chanhee Kim on 7/24/23. +// + +import Cocoa +import SnapKit + +class PreferencesViewController: NSViewController { + var prefTableView : NSTableView? + + override func loadView() { + self.view = NSView() + self.view.wantsLayer = true + self.view.layer?.backgroundColor = NSColor.blue.cgColor + + prefTableView = NSTableView(frame: .zero) + // Column 추가 + let column1 = NSTableColumn(identifier: NSUserInterfaceItemIdentifier("Column1")) + column1.width = 100.0 + column1.title = "Column 1" + prefTableView?.addTableColumn(column1) + + // delegate와 dataSource 설정 + prefTableView?.delegate = self + prefTableView?.dataSource = self + + // TableView를 스크롤 뷰에 추가 (일반적으로 NSTableView는 NSScrollView 안에 위치합니다) + let scrollView = NSScrollView() + scrollView.documentView = prefTableView + self.view.addSubview(scrollView) + + + scrollView.snp.makeConstraints({ make in + make.edges.equalToSuperview() + }) + + prefTableView?.snp.makeConstraints({ make in + make.edges.equalToSuperview() + }) + } +} + +extension PreferencesViewController: NSTableViewDelegate, NSTableViewDataSource { + func numberOfRows(in tableView: NSTableView) -> Int { + return 10 // 총 로우 수 + } + + func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? { + let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier("MyCell"), owner: self) as? NSTableCellView ?? NSTableCellView() + cell.textField?.stringValue = "Row \(row), Column \(tableColumn?.identifier ?? NSUserInterfaceItemIdentifier(""))" + return cell + } +} diff --git a/Box42/Preferences/Hotkey.swift b/Box42/QuickSlot/Preferences/Hotkey.swift similarity index 100% rename from Box42/Preferences/Hotkey.swift rename to Box42/QuickSlot/Preferences/Hotkey.swift diff --git a/Box42/Preferences/PreferencesView.swift b/Box42/QuickSlot/Preferences/PreferencesView.swift similarity index 100% rename from Box42/Preferences/PreferencesView.swift rename to Box42/QuickSlot/Preferences/PreferencesView.swift diff --git a/Box42/QuickSlot/Preferences/View/PreferencesCell.swift b/Box42/QuickSlot/Preferences/View/PreferencesCell.swift new file mode 100644 index 0000000..f9dfadb --- /dev/null +++ b/Box42/QuickSlot/Preferences/View/PreferencesCell.swift @@ -0,0 +1,31 @@ +// +// PreferencesCell.swift +// Box42 +// +// Created by Chanhee Kim on 8/29/23. +// + +import Cocoa +import SnapKit + +class PreferencesCell: NSTableCellView { + + var baseContainerView: NSView = { + let baseView = NSView() + baseView.wantsLayer = true + baseView.layer?.backgroundColor = NSColor.yellow.cgColor + return baseView + }() + + override func awakeFromNib() { + super.awakeFromNib() + self.setupViews() + } + + private func setupViews() { + self.addSubview(baseContainerView) + baseContainerView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + } +} diff --git a/Box42/QuickSlot/ViewModel/QuickSlotViewModel.swift b/Box42/QuickSlot/ViewModel/QuickSlotViewModel.swift index fe3e1da..ac5e1a5 100644 --- a/Box42/QuickSlot/ViewModel/QuickSlotViewModel.swift +++ b/Box42/QuickSlot/ViewModel/QuickSlotViewModel.swift @@ -12,11 +12,12 @@ class QuickSlotViewModel { @Published var buttons: [QuickSlotButtonModel] = [] init() { - let button1 = QuickSlotButtonModel(title: "clean") - let button2 = QuickSlotButtonModel(title: "icons") - let button3 = QuickSlotButtonModel(title: "scripts") + let button1 = QuickSlotButtonModel(title: QuickSlotUI.title.clean) + let button2 = QuickSlotButtonModel(title: QuickSlotUI.title.preferences) + let button3 = QuickSlotButtonModel(title: QuickSlotUI.title.scripts) + let button4 = QuickSlotButtonModel(title: QuickSlotUI.title.user) - buttons = [button1, button2, button3] + buttons = [button1, button2, button3, button4] } func addButton(_ button: QuickSlotButtonModel) { diff --git a/Box42/View/BoxContentsViewGroup.swift b/Box42/View/BoxContentsViewGroup.swift index 1eb1ee5..b5a0ad3 100644 --- a/Box42/View/BoxContentsViewGroup.swift +++ b/Box42/View/BoxContentsViewGroup.swift @@ -13,17 +13,12 @@ class BoxContentsViewGroup: NSView { var preferencesVC = PreferencesViewController() init() { + super.init(frame: .zero) webVC = WebViewController(nibName: nil, bundle: nil) - - super.init(frame: NSRect(x: 0, y: 0, width: BoxSizeManager.shared.size.width - BoxSizeManager.shared.buttonGroupSize.width, height: BoxSizeManager.shared.buttonGroupSize.height)) - - self.frame.size.width = BoxSizeManager.shared.size.width - BoxSizeManager.shared.buttonGroupSize.width - self.frame.size.height = BoxSizeManager.shared.size.height - self.wantsLayer = true + self.layer?.cornerRadius = 20 + self.layer?.masksToBounds = true self.addSubview(webVC!.view) - - webVC?.view.translatesAutoresizingMaskIntoConstraints = false webVC?.view.snp.makeConstraints { make in make.edges.equalTo(self) } @@ -32,12 +27,7 @@ class BoxContentsViewGroup: NSView { required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } - - override func draw(_ dirtyRect: NSRect) { - super.draw(dirtyRect) - // Drawing code here. - } - + func removeAllSubviews() { for subview in self.subviews { subview.removeFromSuperview() @@ -45,8 +35,11 @@ class BoxContentsViewGroup: NSView { } func showPreferences() { + self.removeAllSubviews() self.addSubview(preferencesVC.view) - preferencesVC.viewDidAppear() + preferencesVC.view.snp.makeConstraints { make in + make.edges.equalToSuperview() + } } func showWebviews(_ sender: NSButton) {