|
|
@@ -22,6 +22,8 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
|
|
22
|
22
|
private let forwardButton = NSButton()
|
|
23
|
23
|
private let reloadButton = NSButton()
|
|
24
|
24
|
private let dismissEmbeddedButton = NSButton(title: "Home", target: nil, action: nil)
|
|
|
25
|
+ private let toolbarContainer = NSView()
|
|
|
26
|
+ private var appearanceObserver: NSObjectProtocol?
|
|
25
|
27
|
|
|
26
|
28
|
override func loadView() {
|
|
27
|
29
|
view = NSView(frame: NSRect(x: 0, y: 0, width: 920, height: 720))
|
|
|
@@ -45,10 +47,8 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
|
|
45
|
47
|
dismissEmbeddedButton.action = #selector(dismissEmbedded)
|
|
46
|
48
|
dismissEmbeddedButton.toolTip = "Return to the previous screen"
|
|
47
|
49
|
|
|
48
|
|
- let toolbar = NSView()
|
|
49
|
|
- toolbar.translatesAutoresizingMaskIntoConstraints = false
|
|
50
|
|
- toolbar.wantsLayer = true
|
|
51
|
|
- toolbar.layer?.backgroundColor = NSColor(srgbRed: 247 / 255, green: 247 / 255, blue: 247 / 255, alpha: 1).cgColor
|
|
|
50
|
+ toolbarContainer.translatesAutoresizingMaskIntoConstraints = false
|
|
|
51
|
+ toolbarContainer.wantsLayer = true
|
|
52
|
52
|
|
|
53
|
53
|
let barStack: NSStackView
|
|
54
|
54
|
if onDismissEmbedded != nil {
|
|
|
@@ -62,19 +62,19 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
|
|
62
|
62
|
barStack.distribution = .fill
|
|
63
|
63
|
barStack.translatesAutoresizingMaskIntoConstraints = false
|
|
64
|
64
|
|
|
65
|
|
- toolbar.addSubview(barStack)
|
|
66
|
|
- view.addSubview(toolbar)
|
|
|
65
|
+ toolbarContainer.addSubview(barStack)
|
|
|
66
|
+ view.addSubview(toolbarContainer)
|
|
67
|
67
|
view.addSubview(webView)
|
|
68
|
68
|
|
|
69
|
69
|
var layoutConstraints: [NSLayoutConstraint] = [
|
|
70
|
|
- toolbar.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
|
71
|
|
- toolbar.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
|
72
|
|
- toolbar.topAnchor.constraint(equalTo: view.topAnchor),
|
|
73
|
|
- toolbar.heightAnchor.constraint(equalToConstant: 48),
|
|
|
70
|
+ toolbarContainer.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
|
|
71
|
+ toolbarContainer.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
|
|
72
|
+ toolbarContainer.topAnchor.constraint(equalTo: view.topAnchor),
|
|
|
73
|
+ toolbarContainer.heightAnchor.constraint(equalToConstant: 48),
|
|
74
|
74
|
|
|
75
|
|
- barStack.leadingAnchor.constraint(equalTo: toolbar.leadingAnchor, constant: 12),
|
|
76
|
|
- barStack.trailingAnchor.constraint(equalTo: toolbar.trailingAnchor, constant: -12),
|
|
77
|
|
- barStack.centerYAnchor.constraint(equalTo: toolbar.centerYAnchor),
|
|
|
75
|
+ barStack.leadingAnchor.constraint(equalTo: toolbarContainer.leadingAnchor, constant: 12),
|
|
|
76
|
+ barStack.trailingAnchor.constraint(equalTo: toolbarContainer.trailingAnchor, constant: -12),
|
|
|
77
|
+ barStack.centerYAnchor.constraint(equalTo: toolbarContainer.centerYAnchor),
|
|
78
|
78
|
|
|
79
|
79
|
backButton.widthAnchor.constraint(equalToConstant: 32),
|
|
80
|
80
|
backButton.heightAnchor.constraint(equalToConstant: 28),
|
|
|
@@ -85,7 +85,7 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
|
|
85
|
85
|
|
|
86
|
86
|
webView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
|
87
|
87
|
webView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
|
88
|
|
- webView.topAnchor.constraint(equalTo: toolbar.bottomAnchor),
|
|
|
88
|
+ webView.topAnchor.constraint(equalTo: toolbarContainer.bottomAnchor),
|
|
89
|
89
|
webView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
|
|
90
|
90
|
]
|
|
91
|
91
|
if onDismissEmbedded != nil {
|
|
|
@@ -94,6 +94,14 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
|
|
94
|
94
|
NSLayoutConstraint.activate(layoutConstraints)
|
|
95
|
95
|
|
|
96
|
96
|
updateNavigationButtons()
|
|
|
97
|
+ applyCurrentAppearance()
|
|
|
98
|
+ appearanceObserver = NotificationCenter.default.addObserver(
|
|
|
99
|
+ forName: AppAppearanceManager.didChangeNotification,
|
|
|
100
|
+ object: nil,
|
|
|
101
|
+ queue: .main
|
|
|
102
|
+ ) { [weak self] _ in
|
|
|
103
|
+ self?.applyCurrentAppearance()
|
|
|
104
|
+ }
|
|
97
|
105
|
|
|
98
|
106
|
if let pendingURL {
|
|
99
|
107
|
webView.load(URLRequest(url: pendingURL))
|
|
|
@@ -101,6 +109,12 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
|
|
101
|
109
|
}
|
|
102
|
110
|
}
|
|
103
|
111
|
|
|
|
112
|
+ deinit {
|
|
|
113
|
+ if let appearanceObserver {
|
|
|
114
|
+ NotificationCenter.default.removeObserver(appearanceObserver)
|
|
|
115
|
+ }
|
|
|
116
|
+ }
|
|
|
117
|
+
|
|
104
|
118
|
func loadPage(_ url: URL) {
|
|
105
|
119
|
if isViewLoaded {
|
|
106
|
120
|
webView.load(URLRequest(url: url))
|
|
|
@@ -133,6 +147,15 @@ final class IndeedJobBrowserViewController: NSViewController, WKNavigationDelega
|
|
133
|
147
|
button.action = action
|
|
134
|
148
|
}
|
|
135
|
149
|
|
|
|
150
|
+ private func applyCurrentAppearance() {
|
|
|
151
|
+ toolbarContainer.layer?.backgroundColor = AppDashboardTheme.chromeBackground.cgColor
|
|
|
152
|
+ let accent = AppDashboardTheme.brandBlue
|
|
|
153
|
+ dismissEmbeddedButton.contentTintColor = accent
|
|
|
154
|
+ backButton.contentTintColor = accent
|
|
|
155
|
+ forwardButton.contentTintColor = accent
|
|
|
156
|
+ reloadButton.contentTintColor = accent
|
|
|
157
|
+ }
|
|
|
158
|
+
|
|
136
|
159
|
private func updateNavigationButtons() {
|
|
137
|
160
|
backButton.isEnabled = webView.canGoBack
|
|
138
|
161
|
forwardButton.isEnabled = webView.canGoForward
|