fix: reload tint colors while running
This commit is contained in:
@@ -19,6 +19,8 @@ final class SettingsWindowController: NSWindowController, NSWindowDelegate {
|
||||
private let recoveryLabel = NSTextField(wrappingLabelWithString: "")
|
||||
private let recoveryButton = NSButton(title: "Retry uninstall recovery…", target: nil, action: nil)
|
||||
private var recoveryReport: UninstallReport?
|
||||
private var themeObservation: ThemeObservation?
|
||||
private var loginStatusIsError = false
|
||||
var retryUninstallRecovery: (() async -> UninstallReport)?
|
||||
|
||||
init(shortcuts: GlobalShortcuts) {
|
||||
@@ -197,6 +199,18 @@ final class SettingsWindowController: NSWindowController, NSWindowDelegate {
|
||||
for label in [instructions, statusLabel, errorLabel, spotlight, loginStatus, recoveryLabel] {
|
||||
label.widthAnchor.constraint(equalTo: stack.widthAnchor).isActive = true
|
||||
}
|
||||
themeObservation = ThemeObservation { [weak self] in
|
||||
guard let self else { return }
|
||||
for label in [heading, loginHeading, translationHeading] { label.textColor = ThemePalette.text }
|
||||
for label in [instructions, self.statusLabel, spotlight] { label.textColor = ThemePalette.secondaryText }
|
||||
self.errorLabel.textColor = ThemePalette.error
|
||||
self.loginStatus.textColor = self.loginStatusIsError ? ThemePalette.error : ThemePalette.secondaryText
|
||||
self.recoveryLabel.textColor = self.recoveryReport?.needsRecovery == true ? ThemePalette.error : ThemePalette.secondaryText
|
||||
for button in [self.recorder, self.commandSpaceButton, self.clearButton, keyboardSettings,
|
||||
self.loginToggle, self.loginSettings, self.recoveryButton] {
|
||||
button.contentTintColor = ThemePalette.accent
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func setUninstallRecoveryReport(_ report: UninstallReport) {
|
||||
@@ -230,6 +244,7 @@ final class SettingsWindowController: NSWindowController, NSWindowDelegate {
|
||||
private func refreshLogin() {
|
||||
let status = SMAppService.mainApp.status
|
||||
loginStatus.textColor = ThemePalette.secondaryText
|
||||
loginStatusIsError = false
|
||||
loginToggle.state = (status == .enabled || status == .requiresApproval) ? .on : .off
|
||||
loginSettings.isHidden = status != .requiresApproval
|
||||
switch status {
|
||||
@@ -244,6 +259,7 @@ final class SettingsWindowController: NSWindowController, NSWindowDelegate {
|
||||
@unknown default:
|
||||
loginStatus.stringValue = "Launch at login status is unavailable."
|
||||
loginStatus.textColor = ThemePalette.error
|
||||
loginStatusIsError = true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -260,6 +276,7 @@ final class SettingsWindowController: NSWindowController, NSWindowDelegate {
|
||||
refreshLogin()
|
||||
loginStatus.stringValue = "Could not change launch at login: \(error.localizedDescription)"
|
||||
loginStatus.textColor = ThemePalette.error
|
||||
loginStatusIsError = true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user