mirror of
https://github.com/danbee/persephone
synced 2025-03-04 08:39:11 +00:00
This works by clearing the queue, adding all the tracks from the album to the queue and playing the first track. Fix bug where resize might leave a play button visible Had to refactor the QueueView somewhat as there was a bug that only surfaced on clearing and refilling the playlist. The bug was due to the way NSOutlineView reuses subviews. Add screenshot with album play button Move queue datasource and refactor view controller Move album datasource out of the view controller
58 lines
1.1 KiB
Swift
58 lines
1.1 KiB
Swift
//
|
|
// MPDClientSong.swift
|
|
// Persephone
|
|
//
|
|
// Created by Daniel Barber on 2019/2/03.
|
|
// Copyright © 2019 Dan Barber. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import mpdclient
|
|
|
|
extension MPDClient {
|
|
class Song {
|
|
let mpdSong: OpaquePointer
|
|
|
|
enum TagType: Int {
|
|
case unknown = -1
|
|
case artist, album, albumArtist, title, track, name,
|
|
genre, date, composer, performer, comment, disc
|
|
|
|
case musicBrainzArtistId
|
|
case musicBrainzAlbumId
|
|
case musicBrainzAlbumArtistId
|
|
case musicBrainzTrackId
|
|
case musicBrainzReleaseTrackId
|
|
|
|
case originalDate
|
|
|
|
case artistSort
|
|
case albumArtistSort
|
|
case albumSort
|
|
|
|
case tagCount
|
|
}
|
|
|
|
init(_ mpdSong: OpaquePointer) {
|
|
self.mpdSong = mpdSong
|
|
}
|
|
|
|
deinit {
|
|
mpd_song_free(mpdSong)
|
|
}
|
|
|
|
var uri: UnsafePointer<Int8> {
|
|
return mpd_song_get_uri(mpdSong)
|
|
}
|
|
|
|
func getTag(_ tagType: TagType) -> String {
|
|
let mpdTagType = mpd_tag_type(rawValue: Int32(tagType.rawValue))
|
|
|
|
guard let tag = mpd_song_get_tag(mpdSong, mpdTagType, 0)
|
|
else { return "" }
|
|
|
|
return String(cString: tag)
|
|
}
|
|
}
|
|
}
|