diff --git a/Persephone.xcodeproj/project.pbxproj b/Persephone.xcodeproj/project.pbxproj index b05f28a..c17c54d 100644 --- a/Persephone.xcodeproj/project.pbxproj +++ b/Persephone.xcodeproj/project.pbxproj @@ -19,6 +19,7 @@ E408D3CA220E341D0006D9BE /* AlbumItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E408D3C8220E341D0006D9BE /* AlbumItem.swift */; }; E408D3CB220E341D0006D9BE /* AlbumItem.xib in Resources */ = {isa = PBXBuildFile; fileRef = E408D3C9220E341D0006D9BE /* AlbumItem.xib */; }; E40FE719221B48E300A4223F /* AlbumViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = E40FE718221B48E300A4223F /* AlbumViewLayout.swift */; }; + E40FE7132219AD7A00A4223F /* AlbumItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E40FE7122219AD7A00A4223F /* AlbumItemView.swift */; }; E41B22C021FB6BBA00D544F6 /* libmpdclient.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = E41B22BF21FB6BBA00D544F6 /* libmpdclient.2.dylib */; settings = {ATTRIBUTES = (Required, ); }; }; E41B22C121FB6C3300D544F6 /* libmpdclient.2.dylib in Embed Libraries */ = {isa = PBXBuildFile; fileRef = E41B22BF21FB6BBA00D544F6 /* libmpdclient.2.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; E41B22C621FB932700D544F6 /* MPDClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = E41B22C521FB932700D544F6 /* MPDClient.swift */; }; @@ -88,6 +89,7 @@ E408D3C8220E341D0006D9BE /* AlbumItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlbumItem.swift; sourceTree = ""; }; E408D3C9220E341D0006D9BE /* AlbumItem.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AlbumItem.xib; sourceTree = ""; }; E40FE718221B48E300A4223F /* AlbumViewLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlbumViewLayout.swift; sourceTree = ""; }; + E40FE7122219AD7A00A4223F /* AlbumItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlbumItemView.swift; sourceTree = ""; }; E41B22BF21FB6BBA00D544F6 /* libmpdclient.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libmpdclient.2.dylib; path = libmpdclient/output/libmpdclient.2.dylib; sourceTree = ""; }; E41B22C421FB715A00D544F6 /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; E41B22C521FB932700D544F6 /* MPDClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MPDClient.swift; sourceTree = ""; }; @@ -248,7 +250,7 @@ E408D3C3220E138B0006D9BE /* Views */ = { isa = PBXGroup; children = ( - E408D3C8220E341D0006D9BE /* AlbumItem.swift */, + E40FE7122219AD7A00A4223F /* AlbumItemView.swift */, ); path = Views; sourceTree = ""; @@ -361,6 +363,7 @@ E4D1B597220BA3A20026F233 /* Controllers */ = { isa = PBXGroup; children = ( + E408D3C8220E341D0006D9BE /* AlbumItem.swift */, E408D3C1220E134F0006D9BE /* AlbumViewController.swift */, E41EA46B221636AF0068EF46 /* PreferencesViewController.swift */, E4E8CC932206097F0024217A /* NotificationsController.swift */, @@ -533,6 +536,7 @@ E465049A21E94DF500A70F4C /* WindowController.swift in Sources */, E41B22C621FB932700D544F6 /* MPDClient.swift in Sources */, E407861C2110CE6E006887B1 /* AppDelegate.swift in Sources */, + E40FE7132219AD7A00A4223F /* AlbumItemView.swift in Sources */, E4E8CC9A22075D370024217A /* Song.swift in Sources */, E408D3CA220E341D0006D9BE /* AlbumItem.swift in Sources */, E41EA46C221636AF0068EF46 /* PreferencesViewController.swift in Sources */, diff --git a/Persephone/Views/AlbumItem.swift b/Persephone/Controllers/AlbumItem.swift similarity index 100% rename from Persephone/Views/AlbumItem.swift rename to Persephone/Controllers/AlbumItem.swift diff --git a/Persephone/Resources/AlbumItem.xib b/Persephone/Resources/AlbumItem.xib index 8791f09..db3a041 100644 --- a/Persephone/Resources/AlbumItem.xib +++ b/Persephone/Resources/AlbumItem.xib @@ -9,7 +9,7 @@ - + @@ -17,7 +17,7 @@ - + @@ -41,24 +41,42 @@ + + + + + + + + diff --git a/Persephone/Views/AlbumItemView.swift b/Persephone/Views/AlbumItemView.swift new file mode 100644 index 0000000..6903f1a --- /dev/null +++ b/Persephone/Views/AlbumItemView.swift @@ -0,0 +1,44 @@ +// +// AlbumItemView.swift +// Persephone +// +// Created by Daniel Barber on 2019/2/17. +// Copyright © 2019 Dan Barber. All rights reserved. +// + +import Cocoa + +class AlbumItemView: NSView { + var trackingArea: NSTrackingArea? + + override func updateTrackingAreas() { + super.updateTrackingAreas() + + guard let albumImageView = imageView else { return } + + if let trackingArea = self.trackingArea { + self.removeTrackingArea(trackingArea) + } + + let trackingArea = NSTrackingArea( + rect: albumImageView.frame, + options: [.mouseEnteredAndExited, .activeAlways], + owner: self, + userInfo: nil + ) + + self.trackingArea = trackingArea + addTrackingArea(trackingArea) + } + + override func mouseEntered(with event: NSEvent) { + playButton.isHidden = false + } + + override func mouseExited(with event: NSEvent) { + playButton.isHidden = true + } + + @IBOutlet var imageView: NSImageView! + @IBOutlet var playButton: NSButton! +}