From 28dbacd8505310d3da57af7ba5f8766d75689827 Mon Sep 17 00:00:00 2001 From: Max Goedjen Date: Sat, 18 Jul 2020 19:25:03 -0700 Subject: [PATCH] Doing a bit of gutting. --- Secretive.xcodeproj/project.pbxproj | 6 +- Secretive/AppDelegate.swift | 163 +++++++++++++++++----------- Secretive/Info.plist | 2 - Secretive/Views/ContentView.swift | 28 +++-- 4 files changed, 125 insertions(+), 74 deletions(-) diff --git a/Secretive.xcodeproj/project.pbxproj b/Secretive.xcodeproj/project.pbxproj index 12347fc..7b398a0 100644 --- a/Secretive.xcodeproj/project.pbxproj +++ b/Secretive.xcodeproj/project.pbxproj @@ -1223,7 +1223,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 10.16; MARKETING_VERSION = 1; PRODUCT_BUNDLE_IDENTIFIER = com.maxgoedjen.Secretive.Host; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1251,7 +1251,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 10.16; MARKETING_VERSION = 1; PRODUCT_BUNDLE_IDENTIFIER = com.maxgoedjen.Secretive.Host; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1566,7 +1566,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 10.16; MARKETING_VERSION = 1; PRODUCT_BUNDLE_IDENTIFIER = com.maxgoedjen.Secretive.Host; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/Secretive/AppDelegate.swift b/Secretive/AppDelegate.swift index c9e116d..dff359d 100644 --- a/Secretive/AppDelegate.swift +++ b/Secretive/AppDelegate.swift @@ -3,12 +3,88 @@ import SwiftUI import SecretKit import Brief -@NSApplicationMain -class AppDelegate: NSObject, NSApplicationDelegate { +//@NSApplicationMain +//class AppDelegate: NSObject, NSApplicationDelegate { +// +// var window: NSWindow! +// @IBOutlet var newMenuItem: NSMenuItem! +// @IBOutlet var toolbar: NSToolbar! +// let storeList: SecretStoreList = { +// let list = SecretStoreList() +// list.add(store: SecureEnclave.Store()) +// list.add(store: SmartCard.Store()) +// return list +// }() +// let updater = Updater() +// let agentStatusChecker = AgentStatusChecker() +// let justUpdatedChecker = JustUpdatedChecker() +// +// func applicationDidFinishLaunching(_ aNotification: Notification) { +// let contentView = ContentView(storeList: storeList, updater: updater, agentStatusChecker: agentStatusChecker, runSetupBlock: { self.runSetup(sender: nil) }) +// // Create the window and set the content view. +// window = NSWindow( +// contentRect: NSRect(x: 0, y: 0, width: 480, height: 300), +// styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView], +// backing: .buffered, defer: false) +// window.center() +// window.setFrameAutosaveName("Main Window") +// window.contentView = NSHostingView(rootView: contentView) +// window.makeKeyAndOrderFront(nil) +// window.titleVisibility = .hidden +// window.toolbar = toolbar +// window.isReleasedWhenClosed = false +// if storeList.modifiableStore?.isAvailable ?? false { +// let plus = NSTitlebarAccessoryViewController() +// plus.view = NSButton(image: NSImage(named: NSImage.addTemplateName)!, target: self, action: #selector(add(sender:))) +// plus.layoutAttribute = .right +// window.addTitlebarAccessoryViewController(plus) +// newMenuItem.isEnabled = true +// } +// runSetupIfNeeded() +// relaunchAgentIfNeeded() +// } +// +// func applicationDidBecomeActive(_ notification: Notification) { +// agentStatusChecker.check() +// } +// +// func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool { +// guard !flag else { return false } +// window.makeKeyAndOrderFront(self) +// return true +// } +// +// @IBAction func add(sender: AnyObject?) { +// var addWindow: NSWindow! +// let addView = CreateSecretView(store: storeList.modifiableStore!) { +// self.window.endSheet(addWindow) +// } +// addWindow = NSWindow( +// contentRect: NSRect(x: 0, y: 0, width: 480, height: 300), +// styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView], +// backing: .buffered, defer: false) +// addWindow.contentView = NSHostingView(rootView: addView) +// window.beginSheet(addWindow, completionHandler: nil) +// } +// +// @IBAction func runSetup(sender: AnyObject?) { +// let setupWindow = NSWindow( +// contentRect: NSRect(x: 0, y: 0, width: 0, height: 0), +// styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView], +// backing: .buffered, defer: false) +// let setupView = SetupView() { success in +// self.window.endSheet(setupWindow) +// self.agentStatusChecker.check() +// } +// setupWindow.contentView = NSHostingView(rootView: setupView) +// window.beginSheet(setupWindow, completionHandler: nil) +// } +// +//} + +@main +struct AppDelegate: App { - var window: NSWindow! - @IBOutlet var newMenuItem: NSMenuItem! - @IBOutlet var toolbar: NSToolbar! let storeList: SecretStoreList = { let list = SecretStoreList() list.add(store: SecureEnclave.Store()) @@ -19,71 +95,34 @@ class AppDelegate: NSObject, NSApplicationDelegate { let agentStatusChecker = AgentStatusChecker() let justUpdatedChecker = JustUpdatedChecker() - func applicationDidFinishLaunching(_ aNotification: Notification) { - let contentView = ContentView(storeList: storeList, updater: updater, agentStatusChecker: agentStatusChecker, runSetupBlock: { self.runSetup(sender: nil) }) - // Create the window and set the content view. - window = NSWindow( - contentRect: NSRect(x: 0, y: 0, width: 480, height: 300), - styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView], - backing: .buffered, defer: false) - window.center() - window.setFrameAutosaveName("Main Window") - window.contentView = NSHostingView(rootView: contentView) - window.makeKeyAndOrderFront(nil) - window.titleVisibility = .hidden - window.toolbar = toolbar - window.isReleasedWhenClosed = false - if storeList.modifiableStore?.isAvailable ?? false { - let plus = NSTitlebarAccessoryViewController() - plus.view = NSButton(image: NSImage(named: NSImage.addTemplateName)!, target: self, action: #selector(add(sender:))) - plus.layoutAttribute = .right - window.addTitlebarAccessoryViewController(plus) - newMenuItem.isEnabled = true + @SceneBuilder var body: some Scene { + WindowGroup { + ContentView(storeList: storeList, updater: updater, agentStatusChecker: agentStatusChecker, runSetupBlock: { self.runSetup(sender: nil) }) } - runSetupIfNeeded() - relaunchAgentIfNeeded() - } - - func applicationDidBecomeActive(_ notification: Notification) { - agentStatusChecker.check() - } - - func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool { - guard !flag else { return false } - window.makeKeyAndOrderFront(self) - return true - } - - @IBAction func add(sender: AnyObject?) { - var addWindow: NSWindow! - let addView = CreateSecretView(store: storeList.modifiableStore!) { - self.window.endSheet(addWindow) + WindowGroup { + SetupView() { _ in + print("Setup") + } } - addWindow = NSWindow( - contentRect: NSRect(x: 0, y: 0, width: 480, height: 300), - styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView], - backing: .buffered, defer: false) - addWindow.contentView = NSHostingView(rootView: addView) - window.beginSheet(addWindow, completionHandler: nil) - } - - @IBAction func runSetup(sender: AnyObject?) { - let setupWindow = NSWindow( - contentRect: NSRect(x: 0, y: 0, width: 0, height: 0), - styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView], - backing: .buffered, defer: false) - let setupView = SetupView() { success in - self.window.endSheet(setupWindow) - self.agentStatusChecker.check() - } - setupWindow.contentView = NSHostingView(rootView: setupView) - window.beginSheet(setupWindow, completionHandler: nil) } } extension AppDelegate { + func runSetup(sender: AnyObject?) { + let setupWindow = NSWindow( + contentRect: NSRect(x: 0, y: 0, width: 0, height: 0), + styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView], + backing: .buffered, defer: false) + let setupView = SetupView() { success in +// self.window.endSheet(setupWindow) + self.agentStatusChecker.check() + } + setupWindow.contentView = NSHostingView(rootView: setupView) +// window.beginSheet(setupWindow, completionHandler: nil) + } + func runSetupIfNeeded() { if !UserDefaults.standard.bool(forKey: Constants.defaultsHasRunSetup) { UserDefaults.standard.set(true, forKey: Constants.defaultsHasRunSetup) diff --git a/Secretive/Info.plist b/Secretive/Info.plist index 5ea2305..beb76e8 100644 --- a/Secretive/Info.plist +++ b/Secretive/Info.plist @@ -24,8 +24,6 @@ $(MACOSX_DEPLOYMENT_TARGET) NSHumanReadableCopyright $(PRODUCT_NAME) is MIT Licensed. - NSMainStoryboardFile - Main NSPrincipalClass NSApplication NSSupportsAutomaticTermination diff --git a/Secretive/Views/ContentView.swift b/Secretive/Views/ContentView.swift index aa23966..f2597cc 100644 --- a/Secretive/Views/ContentView.swift +++ b/Secretive/Views/ContentView.swift @@ -15,12 +15,12 @@ struct ContentView> { + ToolbarItem { + Button(action: { + print("OK") + }, label: { + Image(systemName: "plus") + }) + } } func updateNotice() -> some View {