|
@@ -22,6 +22,8 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
|
|
|
private let forwardButton = NSButton()
|
|
private let forwardButton = NSButton()
|
|
|
private let reloadButton = NSButton()
|
|
private let reloadButton = NSButton()
|
|
|
private let dismissEmbeddedButton = NSButton(title: "Home", target: nil, action: nil)
|
|
private let dismissEmbeddedButton = NSButton(title: "Home", target: nil, action: nil)
|
|
|
|
|
+ private let toolbarContainer = NSView()
|
|
|
|
|
+ private var appearanceObserver: NSObjectProtocol?
|
|
|
|
|
|
|
|
override func loadView() {
|
|
override func loadView() {
|
|
|
view = NSView(frame: NSRect(x: 0, y: 0, width: 920, height: 720))
|
|
view = NSView(frame: NSRect(x: 0, y: 0, width: 920, height: 720))
|
|
@@ -45,10 +47,8 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
|
|
|
dismissEmbeddedButton.action = #selector(dismissEmbedded)
|
|
dismissEmbeddedButton.action = #selector(dismissEmbedded)
|
|
|
dismissEmbeddedButton.toolTip = "Return to the previous screen"
|
|
dismissEmbeddedButton.toolTip = "Return to the previous screen"
|
|
|
|
|
|
|
|
- let toolbar = NSView()
|
|
|
|
|
- toolbar.translatesAutoresizingMaskIntoConstraints = false
|
|
|
|
|
- toolbar.wantsLayer = true
|
|
|
|
|
- toolbar.layer?.backgroundColor = NSColor(srgbRed: 247 / 255, green: 247 / 255, blue: 247 / 255, alpha: 1).cgColor
|
|
|
|
|
|
|
+ toolbarContainer.translatesAutoresizingMaskIntoConstraints = false
|
|
|
|
|
+ toolbarContainer.wantsLayer = true
|
|
|
|
|
|
|
|
let barStack: NSStackView
|
|
let barStack: NSStackView
|
|
|
if onDismissEmbedded != nil {
|
|
if onDismissEmbedded != nil {
|
|
@@ -62,19 +62,19 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
|
|
|
barStack.distribution = .fill
|
|
barStack.distribution = .fill
|
|
|
barStack.translatesAutoresizingMaskIntoConstraints = false
|
|
barStack.translatesAutoresizingMaskIntoConstraints = false
|
|
|
|
|
|
|
|
- toolbar.addSubview(barStack)
|
|
|
|
|
- view.addSubview(toolbar)
|
|
|
|
|
|
|
+ toolbarContainer.addSubview(barStack)
|
|
|
|
|
+ view.addSubview(toolbarContainer)
|
|
|
view.addSubview(webView)
|
|
view.addSubview(webView)
|
|
|
|
|
|
|
|
var layoutConstraints: [NSLayoutConstraint] = [
|
|
var layoutConstraints: [NSLayoutConstraint] = [
|
|
|
- toolbar.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
|
|
|
|
- toolbar.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
|
|
|
|
- toolbar.topAnchor.constraint(equalTo: view.topAnchor),
|
|
|
|
|
- toolbar.heightAnchor.constraint(equalToConstant: 48),
|
|
|
|
|
|
|
+ toolbarContainer.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
|
|
|
|
+ toolbarContainer.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
|
|
|
|
+ toolbarContainer.topAnchor.constraint(equalTo: view.topAnchor),
|
|
|
|
|
+ toolbarContainer.heightAnchor.constraint(equalToConstant: 48),
|
|
|
|
|
|
|
|
- barStack.leadingAnchor.constraint(equalTo: toolbar.leadingAnchor, constant: 12),
|
|
|
|
|
- barStack.trailingAnchor.constraint(equalTo: toolbar.trailingAnchor, constant: -12),
|
|
|
|
|
- barStack.centerYAnchor.constraint(equalTo: toolbar.centerYAnchor),
|
|
|
|
|
|
|
+ barStack.leadingAnchor.constraint(equalTo: toolbarContainer.leadingAnchor, constant: 12),
|
|
|
|
|
+ barStack.trailingAnchor.constraint(equalTo: toolbarContainer.trailingAnchor, constant: -12),
|
|
|
|
|
+ barStack.centerYAnchor.constraint(equalTo: toolbarContainer.centerYAnchor),
|
|
|
|
|
|
|
|
backButton.widthAnchor.constraint(equalToConstant: 32),
|
|
backButton.widthAnchor.constraint(equalToConstant: 32),
|
|
|
backButton.heightAnchor.constraint(equalToConstant: 28),
|
|
backButton.heightAnchor.constraint(equalToConstant: 28),
|
|
@@ -85,7 +85,7 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
|
|
|
|
|
|
|
|
webView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
|
webView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
|
|
webView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
|
webView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
|
|
- webView.topAnchor.constraint(equalTo: toolbar.bottomAnchor),
|
|
|
|
|
|
|
+ webView.topAnchor.constraint(equalTo: toolbarContainer.bottomAnchor),
|
|
|
webView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
|
|
webView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
|
|
|
]
|
|
]
|
|
|
if onDismissEmbedded != nil {
|
|
if onDismissEmbedded != nil {
|
|
@@ -94,6 +94,14 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
|
|
|
NSLayoutConstraint.activate(layoutConstraints)
|
|
NSLayoutConstraint.activate(layoutConstraints)
|
|
|
|
|
|
|
|
updateNavigationButtons()
|
|
updateNavigationButtons()
|
|
|
|
|
+ applyCurrentAppearance()
|
|
|
|
|
+ appearanceObserver = NotificationCenter.default.addObserver(
|
|
|
|
|
+ forName: AppAppearanceManager.didChangeNotification,
|
|
|
|
|
+ object: nil,
|
|
|
|
|
+ queue: .main
|
|
|
|
|
+ ) { [weak self] _ in
|
|
|
|
|
+ self?.applyCurrentAppearance()
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
if let pendingURL {
|
|
if let pendingURL {
|
|
|
webView.load(URLRequest(url: pendingURL))
|
|
webView.load(URLRequest(url: pendingURL))
|
|
@@ -101,6 +109,12 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ deinit {
|
|
|
|
|
+ if let appearanceObserver {
|
|
|
|
|
+ NotificationCenter.default.removeObserver(appearanceObserver)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
func loadPage(_ url: URL) {
|
|
func loadPage(_ url: URL) {
|
|
|
if isViewLoaded {
|
|
if isViewLoaded {
|
|
|
webView.load(URLRequest(url: url))
|
|
webView.load(URLRequest(url: url))
|
|
@@ -133,6 +147,15 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
|
|
|
button.action = action
|
|
button.action = action
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private func applyCurrentAppearance() {
|
|
|
|
|
+ toolbarContainer.layer?.backgroundColor = AppDashboardTheme.chromeBackground.cgColor
|
|
|
|
|
+ let accent = AppDashboardTheme.brandBlue
|
|
|
|
|
+ dismissEmbeddedButton.contentTintColor = accent
|
|
|
|
|
+ backButton.contentTintColor = accent
|
|
|
|
|
+ forwardButton.contentTintColor = accent
|
|
|
|
|
+ reloadButton.contentTintColor = accent
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private func updateNavigationButtons() {
|
|
private func updateNavigationButtons() {
|
|
|
backButton.isEnabled = webView.canGoBack
|
|
backButton.isEnabled = webView.canGoBack
|
|
|
forwardButton.isEnabled = webView.canGoForward
|
|
forwardButton.isEnabled = webView.canGoForward
|