From e9ee89f34b9565faf603cf8ce715866e8e842991 Mon Sep 17 00:00:00 2001 From: Dan Barber Date: Sun, 17 Feb 2019 12:23:55 -0500 Subject: [PATCH] Play button appears on hover --- Persephone.xcodeproj/project.pbxproj | 6 ++- .../{Views => Controllers}/AlbumItem.swift | 0 Persephone/Resources/AlbumItem.xib | 22 +++++++++- Persephone/Views/AlbumItemView.swift | 44 +++++++++++++++++++ 4 files changed, 69 insertions(+), 3 deletions(-) rename Persephone/{Views => Controllers}/AlbumItem.swift (100%) create mode 100644 Persephone/Views/AlbumItemView.swift diff --git a/Persephone.xcodeproj/project.pbxproj b/Persephone.xcodeproj/project.pbxproj index 879653d..edbc77f 100644 --- a/Persephone.xcodeproj/project.pbxproj +++ b/Persephone.xcodeproj/project.pbxproj @@ -18,6 +18,7 @@ E408D3C2220E134F0006D9BE /* AlbumViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E408D3C1220E134F0006D9BE /* AlbumViewController.swift */; }; E408D3CA220E341D0006D9BE /* AlbumItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E408D3C8220E341D0006D9BE /* AlbumItem.swift */; }; E408D3CB220E341D0006D9BE /* AlbumItem.xib in Resources */ = {isa = PBXBuildFile; fileRef = E408D3C9220E341D0006D9BE /* AlbumItem.xib */; }; + 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 */; }; @@ -82,6 +83,7 @@ E408D3C1220E134F0006D9BE /* AlbumViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlbumViewController.swift; sourceTree = ""; }; E408D3C8220E341D0006D9BE /* AlbumItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlbumItem.swift; sourceTree = ""; }; E408D3C9220E341D0006D9BE /* AlbumItem.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AlbumItem.xib; 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 = ""; }; @@ -234,7 +236,7 @@ E408D3C3220E138B0006D9BE /* Views */ = { isa = PBXGroup; children = ( - E408D3C8220E341D0006D9BE /* AlbumItem.swift */, + E40FE7122219AD7A00A4223F /* AlbumItemView.swift */, ); path = Views; sourceTree = ""; @@ -331,6 +333,7 @@ E4D1B597220BA3A20026F233 /* Controllers */ = { isa = PBXGroup; children = ( + E408D3C8220E341D0006D9BE /* AlbumItem.swift */, E408D3C1220E134F0006D9BE /* AlbumViewController.swift */, E4E8CC932206097F0024217A /* NotificationsController.swift */, E4E8CC912204F4B80024217A /* QueueViewController.swift */, @@ -498,6 +501,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 */, E4E8CC902204EC7F0024217A /* Delegate.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! +}