Files

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()
}
}