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

Compare commits

..

No commits in common. "123f9c1e4accbf20e2a09799ed7fa69fb88feaf4" and "f22b5b022cf29e6c287e0cd3687a640ac0f72a4b" have entirely different histories.

8 changed files with 65 additions and 121 deletions

View File

@ -1201,7 +1201,7 @@
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/libmpdclient/output", "$(PROJECT_DIR)/libmpdclient/output",
); );
MARKETING_VERSION = "0.16.0-prealpha"; MARKETING_VERSION = "0.15.2-alpha";
PRODUCT_BUNDLE_IDENTIFIER = me.danbarber.Persephone; PRODUCT_BUNDLE_IDENTIFIER = me.danbarber.Persephone;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
@ -1233,7 +1233,7 @@
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/libmpdclient/output", "$(PROJECT_DIR)/libmpdclient/output",
); );
MARKETING_VERSION = "0.16.0-prealpha"; MARKETING_VERSION = "0.15.2-alpha";
PRODUCT_BUNDLE_IDENTIFIER = me.danbarber.Persephone; PRODUCT_BUNDLE_IDENTIFIER = me.danbarber.Persephone;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";

View File

@ -71,34 +71,7 @@ class AlbumViewItem: NSCollectionViewItem {
.processor(DownsamplingImageProcessor(size: .albumListCoverSize)), .processor(DownsamplingImageProcessor(size: .albumListCoverSize)),
.scaleFactor(2), .scaleFactor(2),
] ]
) { result in
switch result {
case .success(let imageResult):
guard let imageData = imageResult.image.tiffRepresentation
else { return }
let rawProvider = RawImageDataProvider(
data: imageData,
cacheKey: album.hash
) )
self.cacheSmallCover(provider: rawProvider)
case .failure(_):
break
}
}
}
func cacheSmallCover(provider: ImageDataProvider) {
_ = KingfisherManager.shared.retrieveImage(
with: .provider(provider),
options: [
.memoryCacheExpiration(.never),
.processor(DownsamplingImageProcessor(size: .queueSongCoverSize)),
.scaleFactor(2),
]
) { result in }
} }
func setAppearance(selected isSelected: Bool) { func setAppearance(selected isSelected: Bool) {

View File

@ -145,6 +145,19 @@ class AlbumDetailView: NSViewController {
.scaleFactor(2), .scaleFactor(2),
] ]
) )
cacheSmallCover(provider: provider)
}
func cacheSmallCover(provider: MPDAlbumArtImageDataProvider) {
_ = KingfisherManager.shared.retrieveImage(
with: .provider(provider),
options: [
.memoryCacheExpiration(.never),
.processor(DownsamplingImageProcessor(size: .queueSongCoverSize)),
.scaleFactor(2),
]
) { result in }
} }
func setAppearance() { func setAppearance() {

View File

@ -154,7 +154,6 @@ extension MPDClient {
self.idle(forceIdle) self.idle(forceIdle)
} }
commandOperation.queuePriority = priority commandOperation.queuePriority = priority
commandQueue.addOperation(commandOperation) commandQueue.addOperation(commandOperation)
} }

View File

@ -42,16 +42,14 @@ extension MPDClient {
func handleIdleResult(_ result: mpd_idle) { func handleIdleResult(_ result: mpd_idle) {
let mpdIdle = MPDIdle(rawValue: result.rawValue) let mpdIdle = MPDIdle(rawValue: result.rawValue)
let wasIdle: Bool
do { do {
idleLock.lock() idleLock.lock()
defer { idleLock.unlock() } defer { idleLock.unlock() }
wasIdle = isIdle
isIdle = false
}
if wasIdle { if isIdle {
isIdle = false
if mpdIdle.contains(.database) { if mpdIdle.contains(.database) {
self.fetchAllAlbums() self.fetchAllAlbums()
} }
@ -81,9 +79,11 @@ extension MPDClient {
self.delegate?.didFinishDatabaseUpdate(mpdClient: self) self.delegate?.didFinishDatabaseUpdate(mpdClient: self)
} }
} }
}
}
if !mpdIdle.isEmpty { if !mpdIdle.isEmpty {
self.idle() self.idle()
} }
} }
}
} }

View File

@ -19,51 +19,27 @@ extension MPDClient {
} }
func playTrack(at queuePos: Int) { func playTrack(at queuePos: Int) {
enqueueCommand( enqueueCommand(command: .playTrack, userData: ["queuePos": queuePos])
command: .playTrack,
forceIdle: true,
userData: ["queuePos": queuePos]
)
} }
func appendSong(_ song: MPDSong) { func appendSong(_ song: MPDSong) {
enqueueCommand( enqueueCommand(command: .appendSong, userData: ["song": song])
command: .appendSong,
forceIdle: true,
userData: ["song": song]
)
} }
func removeSong(at queuePos: Int) { func removeSong(at queuePos: Int) {
enqueueCommand( enqueueCommand(command: .removeSong, userData: ["queuePos": queuePos])
command: .removeSong,
forceIdle: true,
userData: ["queuePos": queuePos]
)
} }
func moveSongInQueue(at queuePos: Int, to newQueuePos: Int) { func moveSongInQueue(at queuePos: Int, to newQueuePos: Int) {
enqueueCommand( enqueueCommand(command: .moveSongInQueue, userData: ["oldQueuePos": queuePos, "newQueuePos": newQueuePos])
command: .moveSongInQueue,
forceIdle: true,
userData: ["oldQueuePos": queuePos, "newQueuePos": newQueuePos]
)
} }
func addSongToQueue(songUri: String, at queuePos: Int) { func addSongToQueue(songUri: String, at queuePos: Int) {
enqueueCommand( enqueueCommand(command: .addSongToQueue, userData: ["uri": songUri, "queuePos": queuePos])
command: .addSongToQueue,
forceIdle: true,
userData: ["uri": songUri, "queuePos": queuePos]
)
} }
func addAlbumToQueue(album: MPDAlbum, at queuePos: Int) { func addAlbumToQueue(album: MPDAlbum, at queuePos: Int) {
enqueueCommand( enqueueCommand(command: .addAlbumToQueue, userData: ["album": album, "queuePos": queuePos])
command: .addAlbumToQueue,
forceIdle: true,
userData: ["album": album, "queuePos": queuePos]
)
} }
func sendPlayTrack(at queuePos: Int) { func sendPlayTrack(at queuePos: Int) {

View File

@ -18,7 +18,6 @@ extension MPDClient {
) { ) {
enqueueCommand( enqueueCommand(
command: .fetchAlbumArt, command: .fetchAlbumArt,
priority: .low,
userData: [ userData: [
"songUri": songUri, "songUri": songUri,
"callback": callback, "callback": callback,

View File

@ -11,41 +11,25 @@ import mpdclient
extension MPDClient { extension MPDClient {
func playPause() { func playPause() {
enqueueCommand( enqueueCommand(command: .playPause, priority: .veryHigh, forceIdle: true)
command: .playPause,
priority: .high,
forceIdle: true
)
} }
func stop() { func stop() {
enqueueCommand( enqueueCommand(command: .stop, priority: .veryHigh, forceIdle: true)
command: .stop,
priority: .high,
forceIdle: true
)
} }
func prevTrack() { func prevTrack() {
enqueueCommand( enqueueCommand(command: .prevTrack, priority: .veryHigh, forceIdle: true)
command: .prevTrack,
priority: .high,
forceIdle: true
)
} }
func nextTrack() { func nextTrack() {
enqueueCommand( enqueueCommand(command: .nextTrack, priority: .veryHigh, forceIdle: true)
command: .nextTrack,
priority: .high,
forceIdle: true
)
} }
func seekCurrentSong(timeInSeconds: Float) { func seekCurrentSong(timeInSeconds: Float) {
enqueueCommand( enqueueCommand(
command: .seekCurrentSong, command: .seekCurrentSong,
priority: .high, priority: .veryHigh,
forceIdle: true, forceIdle: true,
userData: ["timeInSeconds": timeInSeconds] userData: ["timeInSeconds": timeInSeconds]
) )
@ -54,7 +38,7 @@ extension MPDClient {
func setShuffleState(shuffleState: Bool) { func setShuffleState(shuffleState: Bool) {
enqueueCommand( enqueueCommand(
command: .setShuffleState, command: .setShuffleState,
priority: .high, priority: .veryHigh,
forceIdle: true, forceIdle: true,
userData: ["shuffleState": shuffleState] userData: ["shuffleState": shuffleState]
) )
@ -63,7 +47,7 @@ extension MPDClient {
func setRepeatState(repeatState: Bool) { func setRepeatState(repeatState: Bool) {
enqueueCommand( enqueueCommand(
command: .setRepeatState, command: .setRepeatState,
priority: .high, priority: .veryHigh,
forceIdle: true, forceIdle: true,
userData: ["repeatState": repeatState] userData: ["repeatState": repeatState]
) )