From a251fe18fedfe7d20708f3a59c07467e19b350dc Mon Sep 17 00:00:00 2001 From: Dan Barber Date: Tue, 12 Feb 2019 22:43:38 -0500 Subject: [PATCH] Change colour of borders depending on dark/light mode --- Persephone/Views/AlbumItem.swift | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/Persephone/Views/AlbumItem.swift b/Persephone/Views/AlbumItem.swift index eadd9de..b9f4071 100644 --- a/Persephone/Views/AlbumItem.swift +++ b/Persephone/Views/AlbumItem.swift @@ -9,7 +9,9 @@ import Cocoa class AlbumItem: NSCollectionViewItem { - let albumCoverBorderColor = NSColor.init(calibratedWhite: 1, alpha: 0.1) + let borderColorLight = NSColor.black.withAlphaComponent(0.1).cgColor + let borderColorDark = NSColor.white.withAlphaComponent(0.1).cgColor + var observer: NSKeyValueObservation? override func viewDidLoad() { super.viewDidLoad() @@ -18,7 +20,13 @@ class AlbumItem: NSCollectionViewItem { albumCoverView.wantsLayer = true albumCoverView.layer?.cornerRadius = 3 albumCoverView.layer?.borderWidth = 1 - albumCoverView.layer?.borderColor = albumCoverBorderColor.cgColor + setAppearance() + + if #available(OSX 10.14, *) { + observer = NSApp.observe(\.effectiveAppearance) { (app, _) in + self.setAppearance() + } + } } func setAlbum(_ album: MPDClient.Album) { @@ -26,6 +34,17 @@ class AlbumItem: NSCollectionViewItem { albumArtist.stringValue = album.artist } + func setAppearance() { + if #available(OSX 10.14, *) { + let darkMode = NSApp.effectiveAppearance.bestMatch(from: + [.darkAqua, .aqua]) == .darkAqua + + albumCoverView.layer?.borderColor = darkMode ? borderColorDark : borderColorLight + } else { + albumCoverView.layer?.borderColor = borderColorLight + } + } + @IBOutlet var albumCoverView: NSImageView! @IBOutlet var albumTitle: NSTextField! @IBOutlet var albumArtist: NSTextField!