1
1
mirror of https://github.com/danbee/persephone synced 2025-03-04 08:39:11 +00:00

Move ReSwift stuff into extensions

This commit is contained in:
Daniel Barber 2019-04-27 18:06:34 -04:00
parent 81b0626017
commit 86feface73
Signed by: danbarber
GPG Key ID: 931D8112E0103DD8
4 changed files with 43 additions and 36 deletions

View File

@ -11,10 +11,9 @@ import ReSwift
import MediaKeyTap import MediaKeyTap
@NSApplicationMain @NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate, MediaKeyTapDelegate, StoreSubscriber { class AppDelegate: NSObject,
NSApplicationDelegate,
typealias StoreSubscriberStateType = PlayerState MediaKeyTapDelegate {
var preferences = Preferences() var preferences = Preferences()
var mediaKeyTap: MediaKeyTap? var mediaKeyTap: MediaKeyTap?
@ -87,9 +86,13 @@ class AppDelegate: NSObject, NSApplicationDelegate, MediaKeyTapDelegate, StoreSu
AppDelegate.mpdClient.updateDatabase() AppDelegate.mpdClient.updateDatabase()
} }
@IBOutlet weak var updateDatabaseMenuItem: NSMenuItem!
}
extension AppDelegate: StoreSubscriber {
typealias StoreSubscriberStateType = PlayerState
func newState(state: PlayerState) { func newState(state: PlayerState) {
updateDatabaseMenuItem.isEnabled = !state.databaseUpdating updateDatabaseMenuItem.isEnabled = !state.databaseUpdating
} }
@IBOutlet weak var updateDatabaseMenuItem: NSMenuItem!
} }

View File

@ -12,10 +12,7 @@ import Differ
class AlbumViewController: NSViewController, class AlbumViewController: NSViewController,
NSCollectionViewDelegate, NSCollectionViewDelegate,
NSCollectionViewDelegateFlowLayout, NSCollectionViewDelegateFlowLayout {
StoreSubscriber {
typealias StoreSubscriberStateType = AlbumListState
var preferences = Preferences() var preferences = Preferences()
let paddingWidth: CGFloat = 40 let paddingWidth: CGFloat = 40
@ -81,6 +78,13 @@ class AlbumViewController: NSViewController,
} }
} }
@IBOutlet var albumScrollView: NSScrollView!
@IBOutlet var albumCollectionView: NSCollectionView!
}
extension AlbumViewController: StoreSubscriber {
typealias StoreSubscriberStateType = AlbumListState
func newState(state: StoreSubscriberStateType) { func newState(state: StoreSubscriberStateType) {
if dataSource.albums == [] { if dataSource.albums == [] {
dataSource.albums = state.albums dataSource.albums = state.albums
@ -94,7 +98,4 @@ class AlbumViewController: NSViewController,
) )
} }
} }
@IBOutlet var albumScrollView: NSScrollView!
@IBOutlet var albumCollectionView: NSCollectionView!
} }

View File

@ -10,10 +10,7 @@ import Cocoa
import ReSwift import ReSwift
class QueueViewController: NSViewController, class QueueViewController: NSViewController,
NSOutlineViewDelegate, NSOutlineViewDelegate {
StoreSubscriber {
typealias StoreSubscriberStateType = QueueState
var dataSource = QueueDataSource() var dataSource = QueueDataSource()
@IBOutlet var queueView: NSOutlineView! @IBOutlet var queueView: NSOutlineView!
@ -38,12 +35,6 @@ class QueueViewController: NSViewController,
AppDelegate.store.unsubscribe(self) AppDelegate.store.unsubscribe(self)
} }
func newState(state: StoreSubscriberStateType) {
dataSource.setQueueIcon()
queueView.reloadData()
updateAlbumArt(state)
}
override func keyDown(with event: NSEvent) { override func keyDown(with event: NSEvent) {
switch event.keyCode { switch event.keyCode {
case NSEvent.keyCodeSpace: case NSEvent.keyCodeSpace:
@ -166,3 +157,13 @@ func cellForSongTitle(_ outlineView: NSOutlineView, with queueItem: QueueItem) -
return cellView return cellView
} }
} }
extension QueueViewController: StoreSubscriber {
typealias StoreSubscriberStateType = QueueState
func newState(state: StoreSubscriberStateType) {
dataSource.setQueueIcon()
queueView.reloadData()
updateAlbumArt(state)
}
}

View File

@ -9,9 +9,7 @@
import Cocoa import Cocoa
import ReSwift import ReSwift
class WindowController: NSWindowController, StoreSubscriber { class WindowController: NSWindowController {
typealias StoreSubscriberStateType = PlayerState
enum TransportAction: Int { enum TransportAction: Int {
case prevTrack, playPause, stop, nextTrack case prevTrack, playPause, stop, nextTrack
} }
@ -33,16 +31,6 @@ class WindowController: NSWindowController, StoreSubscriber {
trackRemaining.font = .timerFont trackRemaining.font = .timerFont
} }
func newState(state: StoreSubscriberStateType) {
self.state = state.state
DispatchQueue.main.async {
self.setTransportControlState(state)
self.setTrackProgressControls(state)
self.setDatabaseUpdatingIndicator(state)
}
}
override func keyDown(with event: NSEvent) { override func keyDown(with event: NSEvent) {
switch event.keyCode { switch event.keyCode {
case NSEvent.keyCodeSpace: case NSEvent.keyCodeSpace:
@ -161,3 +149,17 @@ class WindowController: NSWindowController, StoreSubscriber {
@IBOutlet var trackRemaining: NSTextField! @IBOutlet var trackRemaining: NSTextField!
@IBOutlet var databaseUpdatingIndicator: NSProgressIndicator! @IBOutlet var databaseUpdatingIndicator: NSProgressIndicator!
} }
extension WindowController: StoreSubscriber {
typealias StoreSubscriberStateType = PlayerState
func newState(state: StoreSubscriberStateType) {
self.state = state.state
DispatchQueue.main.async {
self.setTransportControlState(state)
self.setTrackProgressControls(state)
self.setDatabaseUpdatingIndicator(state)
}
}
}