99 lines
2.7 KiB
Swift
99 lines
2.7 KiB
Swift
//
|
|
// ApplicationPopover.swift
|
|
// Cyberlock
|
|
//
|
|
// Created by Jura on 8/30/19.
|
|
// Copyright © 2019 Omicronmedia. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import AppKit
|
|
|
|
final class ApplicationPopover: NSPopover, AppWindow {
|
|
|
|
var controller: NSViewController?
|
|
|
|
public var isPinned: Bool {
|
|
get {
|
|
UserSettings.shared.isPinned
|
|
}
|
|
set {
|
|
self.behavior = newValue ? .applicationDefined : .transient
|
|
}
|
|
}
|
|
|
|
public func save() {
|
|
UserSettings.shared.isDocked = true
|
|
}
|
|
|
|
// MARK: - Properties
|
|
|
|
private(set) var stackManager: JSViewControllersStackManager?
|
|
|
|
// MARK: - Initializers
|
|
|
|
convenience init(size: NSSize) {
|
|
|
|
self.init()
|
|
|
|
let applicationView = ApplicationView()
|
|
|
|
applicationView.wantsLayer = true
|
|
applicationView.layer?.cornerRadius = 5
|
|
|
|
let controller = JSNavigationController(rootViewController: EmptyViewController(),
|
|
viewDelegate: applicationView)
|
|
controller.preferredContentSize = size
|
|
controller.view.autoresizesSubviews = true
|
|
controller.view.addSubview(applicationView)
|
|
|
|
NSLayoutConstraint.activate([
|
|
applicationView.widthAnchor.constraint(equalToConstant: PrivadoConstants.Window.sizeWidth),
|
|
applicationView.heightAnchor.constraint(equalToConstant: PrivadoConstants.Window.sizeHeight)
|
|
])
|
|
|
|
self.behavior = self.isPinned ? .applicationDefined : .transient
|
|
|
|
self.contentViewController = controller
|
|
self.contentSize = size
|
|
|
|
self.controller = controller
|
|
self.stackManager = controller
|
|
}
|
|
|
|
convenience init(size: NSSize, controller: NSViewController) {
|
|
self.init()
|
|
self.contentViewController = controller
|
|
self.contentSize = size
|
|
|
|
controller.view.wantsLayer = true
|
|
controller.view.layer?.cornerRadius = 5
|
|
|
|
self.behavior = self.isPinned ? .applicationDefined : .transient
|
|
|
|
self.controller = controller
|
|
self.stackManager = controller as? JSViewControllersStackManager
|
|
}
|
|
|
|
override init() {
|
|
super.init()
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
// MARK: - Lifecycle
|
|
|
|
/*override func setContentSize(_ size: NSSize) {
|
|
super.setContentSize(size)
|
|
}*/
|
|
|
|
override func show(relativeTo positioningRect: NSRect, of positioningView: NSView, preferredEdge: NSRectEdge) {
|
|
super.show(relativeTo: positioningRect, of: positioningView, preferredEdge: preferredEdge)
|
|
|
|
self.becomeFirstResponder()
|
|
}
|
|
|
|
}
|