diff --git a/Persephone.xcodeproj/project.pbxproj b/Persephone.xcodeproj/project.pbxproj index 0e6aec4..479b940 100644 --- a/Persephone.xcodeproj/project.pbxproj +++ b/Persephone.xcodeproj/project.pbxproj @@ -179,6 +179,7 @@ E407861A2110CE6E006887B1 /* Persephone */ = { isa = PBXGroup; children = ( + E407861F2110CE70006887B1 /* Assets.xcassets */, E408D3B7220DE8CC0006D9BE /* Extensions */, E4D1B598220BA3C90026F233 /* Resources */, E4D1B597220BA3A20026F233 /* Controllers */, @@ -230,9 +231,7 @@ E408D3C3220E138B0006D9BE /* Views */ = { isa = PBXGroup; children = ( - E40786212110CE70006887B1 /* Main.storyboard */, E408D3C8220E341D0006D9BE /* AlbumItem.swift */, - E408D3C9220E341D0006D9BE /* AlbumItem.xib */, ); path = Views; sourceTree = ""; @@ -340,7 +339,8 @@ E4D1B598220BA3C90026F233 /* Resources */ = { isa = PBXGroup; children = ( - E407861F2110CE70006887B1 /* Assets.xcassets */, + E40786212110CE70006887B1 /* Main.storyboard */, + E408D3C9220E341D0006D9BE /* AlbumItem.xib */, ); path = Resources; sourceTree = ""; diff --git a/Persephone/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/Persephone/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Persephone/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Persephone/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Persephone/Resources/Assets.xcassets/Contents.json b/Persephone/Assets.xcassets/Contents.json similarity index 100% rename from Persephone/Resources/Assets.xcassets/Contents.json rename to Persephone/Assets.xcassets/Contents.json diff --git a/Persephone/Resources/Assets.xcassets/blankAlbum.imageset/Contents.json b/Persephone/Assets.xcassets/blankAlbum.imageset/Contents.json similarity index 100% rename from Persephone/Resources/Assets.xcassets/blankAlbum.imageset/Contents.json rename to Persephone/Assets.xcassets/blankAlbum.imageset/Contents.json diff --git a/Persephone/Resources/Assets.xcassets/blankAlbum.imageset/blankAlbum.pdf b/Persephone/Assets.xcassets/blankAlbum.imageset/blankAlbum.pdf similarity index 100% rename from Persephone/Resources/Assets.xcassets/blankAlbum.imageset/blankAlbum.pdf rename to Persephone/Assets.xcassets/blankAlbum.imageset/blankAlbum.pdf diff --git a/Persephone/Resources/Assets.xcassets/nextTrackButton.imageset/Contents.json b/Persephone/Assets.xcassets/nextTrackButton.imageset/Contents.json similarity index 100% rename from Persephone/Resources/Assets.xcassets/nextTrackButton.imageset/Contents.json rename to Persephone/Assets.xcassets/nextTrackButton.imageset/Contents.json diff --git a/Persephone/Resources/Assets.xcassets/nextTrackButton.imageset/nextTrackButton.png b/Persephone/Assets.xcassets/nextTrackButton.imageset/nextTrackButton.png similarity index 100% rename from Persephone/Resources/Assets.xcassets/nextTrackButton.imageset/nextTrackButton.png rename to Persephone/Assets.xcassets/nextTrackButton.imageset/nextTrackButton.png diff --git a/Persephone/Resources/Assets.xcassets/nextTrackButton.imageset/nextTrackButton@2x.png b/Persephone/Assets.xcassets/nextTrackButton.imageset/nextTrackButton@2x.png similarity index 100% rename from Persephone/Resources/Assets.xcassets/nextTrackButton.imageset/nextTrackButton@2x.png rename to Persephone/Assets.xcassets/nextTrackButton.imageset/nextTrackButton@2x.png diff --git a/Persephone/Resources/Assets.xcassets/pauseButton.imageset/Contents.json b/Persephone/Assets.xcassets/pauseButton.imageset/Contents.json similarity index 100% rename from Persephone/Resources/Assets.xcassets/pauseButton.imageset/Contents.json rename to Persephone/Assets.xcassets/pauseButton.imageset/Contents.json diff --git a/Persephone/Resources/Assets.xcassets/pauseButton.imageset/pauseButton.png b/Persephone/Assets.xcassets/pauseButton.imageset/pauseButton.png similarity index 100% rename from Persephone/Resources/Assets.xcassets/pauseButton.imageset/pauseButton.png rename to Persephone/Assets.xcassets/pauseButton.imageset/pauseButton.png diff --git a/Persephone/Resources/Assets.xcassets/pauseButton.imageset/pauseButton@2x.png b/Persephone/Assets.xcassets/pauseButton.imageset/pauseButton@2x.png similarity index 100% rename from Persephone/Resources/Assets.xcassets/pauseButton.imageset/pauseButton@2x.png rename to Persephone/Assets.xcassets/pauseButton.imageset/pauseButton@2x.png diff --git a/Persephone/Resources/Assets.xcassets/playButton.imageset/Contents.json b/Persephone/Assets.xcassets/playButton.imageset/Contents.json similarity index 100% rename from Persephone/Resources/Assets.xcassets/playButton.imageset/Contents.json rename to Persephone/Assets.xcassets/playButton.imageset/Contents.json diff --git a/Persephone/Resources/Assets.xcassets/playButton.imageset/playButton.png b/Persephone/Assets.xcassets/playButton.imageset/playButton.png similarity index 100% rename from Persephone/Resources/Assets.xcassets/playButton.imageset/playButton.png rename to Persephone/Assets.xcassets/playButton.imageset/playButton.png diff --git a/Persephone/Resources/Assets.xcassets/playButton.imageset/playButton@2x.png b/Persephone/Assets.xcassets/playButton.imageset/playButton@2x.png similarity index 100% rename from Persephone/Resources/Assets.xcassets/playButton.imageset/playButton@2x.png rename to Persephone/Assets.xcassets/playButton.imageset/playButton@2x.png diff --git a/Persephone/Resources/Assets.xcassets/prevTrackButton.imageset/Contents.json b/Persephone/Assets.xcassets/prevTrackButton.imageset/Contents.json similarity index 100% rename from Persephone/Resources/Assets.xcassets/prevTrackButton.imageset/Contents.json rename to Persephone/Assets.xcassets/prevTrackButton.imageset/Contents.json diff --git a/Persephone/Resources/Assets.xcassets/prevTrackButton.imageset/prevTrackButton.png b/Persephone/Assets.xcassets/prevTrackButton.imageset/prevTrackButton.png similarity index 100% rename from Persephone/Resources/Assets.xcassets/prevTrackButton.imageset/prevTrackButton.png rename to Persephone/Assets.xcassets/prevTrackButton.imageset/prevTrackButton.png diff --git a/Persephone/Resources/Assets.xcassets/prevTrackButton.imageset/prevTrackButton@2x.png b/Persephone/Assets.xcassets/prevTrackButton.imageset/prevTrackButton@2x.png similarity index 100% rename from Persephone/Resources/Assets.xcassets/prevTrackButton.imageset/prevTrackButton@2x.png rename to Persephone/Assets.xcassets/prevTrackButton.imageset/prevTrackButton@2x.png diff --git a/Persephone/Resources/Assets.xcassets/stopButton.imageset/Contents.json b/Persephone/Assets.xcassets/stopButton.imageset/Contents.json similarity index 100% rename from Persephone/Resources/Assets.xcassets/stopButton.imageset/Contents.json rename to Persephone/Assets.xcassets/stopButton.imageset/Contents.json diff --git a/Persephone/Resources/Assets.xcassets/stopButton.imageset/stopButton.png b/Persephone/Assets.xcassets/stopButton.imageset/stopButton.png similarity index 100% rename from Persephone/Resources/Assets.xcassets/stopButton.imageset/stopButton.png rename to Persephone/Assets.xcassets/stopButton.imageset/stopButton.png diff --git a/Persephone/Resources/Assets.xcassets/stopButton.imageset/stopButton@2x.png b/Persephone/Assets.xcassets/stopButton.imageset/stopButton@2x.png similarity index 100% rename from Persephone/Resources/Assets.xcassets/stopButton.imageset/stopButton@2x.png rename to Persephone/Assets.xcassets/stopButton.imageset/stopButton@2x.png diff --git a/Persephone/Controllers/AlbumViewController.swift b/Persephone/Controllers/AlbumViewController.swift index 9fe4527..3aabc17 100644 --- a/Persephone/Controllers/AlbumViewController.swift +++ b/Persephone/Controllers/AlbumViewController.swift @@ -10,8 +10,12 @@ import Cocoa class AlbumViewController: NSViewController, NSCollectionViewDataSource, - NSCollectionViewDelegate { + NSCollectionViewDelegate, + NSCollectionViewDelegateFlowLayout { var albums: [MPDClient.Album] = [] + var albumWidth: CGFloat = 0 + let paddingWidth: CGFloat = 40 + let gutterWidth: CGFloat = 20 override func viewDidLoad() { super.viewDidLoad() @@ -24,6 +28,12 @@ class AlbumViewController: NSViewController, ) } + override func viewWillLayout() { + super.viewWillLayout() + + albumCollectionView.collectionViewLayout?.invalidateLayout() + } + @objc func updateAlbums(_ notification: Notification) { guard let albums = notification.userInfo?[Notification.albumsKey] as? [MPDClient.Album] else { return } @@ -51,5 +61,22 @@ class AlbumViewController: NSViewController, return albumItem } + func collectionView(_ collectionView: NSCollectionView, layout: NSCollectionViewLayout, sizeForItemAt: IndexPath) -> NSSize { + let width = collectionView.frame.size.width + var divider: CGFloat = 1 + var itemWidth: CGFloat = 0 + + repeat { + let totalPaddingWidth = paddingWidth * 2 + let totalGutterWidth = (divider - 1) * (gutterWidth + 1) + itemWidth = (width - totalPaddingWidth - totalGutterWidth) / divider + divider = divider + 1 + } while itemWidth > 180 + + let itemHeight = itemWidth + 39 + + return NSSize(width: itemWidth, height: itemHeight) + } + @IBOutlet var albumCollectionView: NSCollectionView! } diff --git a/Persephone/Controllers/QueueViewController.swift b/Persephone/Controllers/QueueViewController.swift index 01b86d9..dce8a6e 100644 --- a/Persephone/Controllers/QueueViewController.swift +++ b/Persephone/Controllers/QueueViewController.swift @@ -28,7 +28,7 @@ class QueueViewController: NSViewController, NSOutlineViewDataSource, NSOutlineV override func viewDidLoad() { super.viewDidLoad() - queueView.columnAutoresizingStyle = .uniformColumnAutoresizingStyle + queueView.columnAutoresizingStyle = .sequentialColumnAutoresizingStyle NotificationCenter.default.addObserver( self, diff --git a/Persephone/Views/AlbumItem.xib b/Persephone/Resources/AlbumItem.xib similarity index 82% rename from Persephone/Views/AlbumItem.xib rename to Persephone/Resources/AlbumItem.xib index d15869a..8920df3 100644 --- a/Persephone/Views/AlbumItem.xib +++ b/Persephone/Resources/AlbumItem.xib @@ -16,43 +16,43 @@ - + - - - - - - + + - - + + + + + + - + - + - + diff --git a/Persephone/Views/Base.lproj/Main.storyboard b/Persephone/Resources/Base.lproj/Main.storyboard similarity index 98% rename from Persephone/Views/Base.lproj/Main.storyboard rename to Persephone/Resources/Base.lproj/Main.storyboard index c844d9b..eb0cd9b 100644 --- a/Persephone/Views/Base.lproj/Main.storyboard +++ b/Persephone/Resources/Base.lproj/Main.storyboard @@ -737,7 +737,7 @@ - + @@ -762,23 +762,23 @@ - + - + - + - + - + @@ -792,7 +792,7 @@ - + @@ -807,7 +807,7 @@ - + @@ -818,7 +818,7 @@ - + @@ -841,7 +841,7 @@ - + @@ -855,7 +855,7 @@ - + @@ -883,8 +883,12 @@ + + + +