add preferences view

not populated yet
This commit is contained in:
Grant Limberg 2016-06-23 20:04:57 -07:00
commit 35d1736c97
6 changed files with 72 additions and 2 deletions

View file

@ -18,6 +18,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
let networkListPopover = NSPopover()
let joinNetworkPopover = NSPopover()
let preferencesPopover = NSPopover()
var transientMonitor: AnyObject? = nil
@ -44,6 +45,12 @@ class AppDelegate: NSObject, NSApplicationDelegate {
networkListPopover.behavior = .Transient
networkListPopover.appearance = NSAppearance(named: NSAppearanceNameAqua)
preferencesPopover.contentViewController = PreferencesViewController(
nibName: "PreferencesViewController", bundle: nil)
preferencesPopover.behavior = .Transient
preferencesPopover.appearance = NSAppearance(named: NSAppearanceNameAqua)
}
func applicationWillTerminate(aNotification: NSNotification) {
@ -86,6 +93,22 @@ class AppDelegate: NSObject, NSApplicationDelegate {
}
}
func showPreferences() {
if let button = statusItem.button {
preferencesPopover.showRelativeToRect(button.bounds, ofView: button, preferredEdge: .MinY)
if transientMonitor == nil {
transientMonitor = NSEvent.addGlobalMonitorForEventsMatchingMask(
[.LeftMouseDownMask, .RightMouseDownMask, .OtherMouseDownMask]) { (event: NSEvent) -> Void in
NSEvent.removeMonitor(self.transientMonitor!)
self.transientMonitor = nil
self.preferencesPopover.close()
}
}
}
}
func quit() {
NSApp.performSelector(#selector(NSApp.terminate(_:)), withObject: nil, afterDelay: 0.0)
}
@ -134,6 +157,10 @@ class AppDelegate: NSObject, NSApplicationDelegate {
menu.addItem(NSMenuItem.separatorItem())
}
menu.addItem(NSMenuItem(title: "Preferences...", action: #selector(AppDelegate.showPreferences), keyEquivalent: ","))
menu.addItem(NSMenuItem.separatorItem())
menu.addItem(NSMenuItem(title: "Quit ZeroTier One", action: #selector(AppDelegate.quit), keyEquivalent: "q"))
statusItem.menu = menu

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10116" systemVersion="15F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10116"/>
</dependencies>
<objects>

View file

@ -0,0 +1,18 @@
//
// PreferencesViewController.swift
// ZeroTier One
//
// Created by Grant Limberg on 6/23/16.
// Copyright © 2016 ZeroTier, Inc. All rights reserved.
//
import Cocoa
class PreferencesViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
}
}

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10101" systemVersion="15E32" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10101"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="PreferencesViewController" customModuleProvider="target">
<connections>
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView id="Hz6-mo-xeY">
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
</customView>
</objects>
</document>

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10116" systemVersion="15F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10116"/>
</dependencies>
<objects>