diff --git a/Persephone.xcodeproj/xcshareddata/xcschemes/Persephone-iOS.xcscheme b/Persephone.xcodeproj/xcshareddata/xcschemes/Persephone-iOS.xcscheme
new file mode 100644
index 0000000..68ab8fd
--- /dev/null
+++ b/Persephone.xcodeproj/xcshareddata/xcschemes/Persephone-iOS.xcscheme
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Resources/export/iosAppIcon.png b/Resources/export/iosAppIcon.png
new file mode 100644
index 0000000..2e41614
Binary files /dev/null and b/Resources/export/iosAppIcon.png differ
diff --git a/Resources/export/iosAppIcon@2x.png b/Resources/export/iosAppIcon@2x.png
new file mode 100644
index 0000000..7b6a09a
Binary files /dev/null and b/Resources/export/iosAppIcon@2x.png differ
diff --git a/Resources/export/nextTrackButtonHugeiOS.pdf b/Resources/export/nextTrackButtonHugeiOS.pdf
new file mode 100644
index 0000000..c1687a6
Binary files /dev/null and b/Resources/export/nextTrackButtonHugeiOS.pdf differ
diff --git a/Resources/export/nextTrackButtonHugeiOS.png b/Resources/export/nextTrackButtonHugeiOS.png
new file mode 100644
index 0000000..d3e38bf
Binary files /dev/null and b/Resources/export/nextTrackButtonHugeiOS.png differ
diff --git a/Resources/export/nextTrackButtonHugeiOS@2x.png b/Resources/export/nextTrackButtonHugeiOS@2x.png
new file mode 100644
index 0000000..3342900
Binary files /dev/null and b/Resources/export/nextTrackButtonHugeiOS@2x.png differ
diff --git a/Resources/export/nextTrackButtonHugeiOS@3x.png b/Resources/export/nextTrackButtonHugeiOS@3x.png
new file mode 100644
index 0000000..5131eda
Binary files /dev/null and b/Resources/export/nextTrackButtonHugeiOS@3x.png differ
diff --git a/Resources/export/nextTrackButtonLargeiOS.pdf b/Resources/export/nextTrackButtonLargeiOS.pdf
index 30c8349..9f2f974 100644
Binary files a/Resources/export/nextTrackButtonLargeiOS.pdf and b/Resources/export/nextTrackButtonLargeiOS.pdf differ
diff --git a/Resources/export/pauseButtonHugeiOS.pdf b/Resources/export/pauseButtonHugeiOS.pdf
new file mode 100644
index 0000000..b47299f
Binary files /dev/null and b/Resources/export/pauseButtonHugeiOS.pdf differ
diff --git a/Resources/export/pauseButtonHugeiOS.png b/Resources/export/pauseButtonHugeiOS.png
new file mode 100644
index 0000000..29d5497
Binary files /dev/null and b/Resources/export/pauseButtonHugeiOS.png differ
diff --git a/Resources/export/pauseButtonHugeiOS@2x.png b/Resources/export/pauseButtonHugeiOS@2x.png
new file mode 100644
index 0000000..cf1ffcd
Binary files /dev/null and b/Resources/export/pauseButtonHugeiOS@2x.png differ
diff --git a/Resources/export/pauseButtonHugeiOS@3x.png b/Resources/export/pauseButtonHugeiOS@3x.png
new file mode 100644
index 0000000..6115b41
Binary files /dev/null and b/Resources/export/pauseButtonHugeiOS@3x.png differ
diff --git a/Resources/export/pauseButtonLargeiOS.pdf b/Resources/export/pauseButtonLargeiOS.pdf
index 0680892..4f49630 100644
Binary files a/Resources/export/pauseButtonLargeiOS.pdf and b/Resources/export/pauseButtonLargeiOS.pdf differ
diff --git a/Resources/export/playButtonHugeiOS.pdf b/Resources/export/playButtonHugeiOS.pdf
new file mode 100644
index 0000000..81115af
Binary files /dev/null and b/Resources/export/playButtonHugeiOS.pdf differ
diff --git a/Resources/export/playButtonHugeiOS.png b/Resources/export/playButtonHugeiOS.png
new file mode 100644
index 0000000..a8e7f2c
Binary files /dev/null and b/Resources/export/playButtonHugeiOS.png differ
diff --git a/Resources/export/playButtonHugeiOS@2x.png b/Resources/export/playButtonHugeiOS@2x.png
new file mode 100644
index 0000000..9638f00
Binary files /dev/null and b/Resources/export/playButtonHugeiOS@2x.png differ
diff --git a/Resources/export/playButtonHugeiOS@3x.png b/Resources/export/playButtonHugeiOS@3x.png
new file mode 100644
index 0000000..a620610
Binary files /dev/null and b/Resources/export/playButtonHugeiOS@3x.png differ
diff --git a/Resources/export/playButtonLargeiOS.pdf b/Resources/export/playButtonLargeiOS.pdf
index faad7a1..38ed773 100644
Binary files a/Resources/export/playButtonLargeiOS.pdf and b/Resources/export/playButtonLargeiOS.pdf differ
diff --git a/Resources/export/prevTrackButtonHugeiOS.pdf b/Resources/export/prevTrackButtonHugeiOS.pdf
new file mode 100644
index 0000000..d4eb770
Binary files /dev/null and b/Resources/export/prevTrackButtonHugeiOS.pdf differ
diff --git a/Resources/export/prevTrackButtonHugeiOS.png b/Resources/export/prevTrackButtonHugeiOS.png
new file mode 100644
index 0000000..1f813bc
Binary files /dev/null and b/Resources/export/prevTrackButtonHugeiOS.png differ
diff --git a/Resources/export/prevTrackButtonHugeiOS@2x.png b/Resources/export/prevTrackButtonHugeiOS@2x.png
new file mode 100644
index 0000000..1959763
Binary files /dev/null and b/Resources/export/prevTrackButtonHugeiOS@2x.png differ
diff --git a/Resources/icons.sketch b/Resources/icons.sketch
index 2a5d316..fb6fb32 100644
Binary files a/Resources/icons.sketch and b/Resources/icons.sketch differ
diff --git a/iOS/Assets.xcassets/Contents.json b/iOS/Assets.xcassets/Contents.json
index da4a164..73c0059 100644
--- a/iOS/Assets.xcassets/Contents.json
+++ b/iOS/Assets.xcassets/Contents.json
@@ -1,6 +1,6 @@
{
"info" : {
- "version" : 1,
- "author" : "xcode"
+ "author" : "xcode",
+ "version" : 1
}
-}
\ No newline at end of file
+}
diff --git a/iOS/Assets.xcassets/nextTrackButtonHugeiOS.imageset/Contents.json b/iOS/Assets.xcassets/nextTrackButtonHugeiOS.imageset/Contents.json
new file mode 100644
index 0000000..1e7587e
--- /dev/null
+++ b/iOS/Assets.xcassets/nextTrackButtonHugeiOS.imageset/Contents.json
@@ -0,0 +1,16 @@
+{
+ "images" : [
+ {
+ "filename" : "nextTrackButtonHugeiOS.pdf",
+ "idiom" : "universal"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ },
+ "properties" : {
+ "preserves-vector-representation" : true,
+ "template-rendering-intent" : "template"
+ }
+}
diff --git a/iOS/Assets.xcassets/nextTrackButtonHugeiOS.imageset/nextTrackButtonHugeiOS.pdf b/iOS/Assets.xcassets/nextTrackButtonHugeiOS.imageset/nextTrackButtonHugeiOS.pdf
new file mode 100644
index 0000000..c1687a6
Binary files /dev/null and b/iOS/Assets.xcassets/nextTrackButtonHugeiOS.imageset/nextTrackButtonHugeiOS.pdf differ
diff --git a/iOS/Assets.xcassets/pauseButtonHugeiOS.imageset/Contents.json b/iOS/Assets.xcassets/pauseButtonHugeiOS.imageset/Contents.json
new file mode 100644
index 0000000..62a34b5
--- /dev/null
+++ b/iOS/Assets.xcassets/pauseButtonHugeiOS.imageset/Contents.json
@@ -0,0 +1,16 @@
+{
+ "images" : [
+ {
+ "filename" : "pauseButtonHugeiOS.pdf",
+ "idiom" : "universal"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ },
+ "properties" : {
+ "preserves-vector-representation" : true,
+ "template-rendering-intent" : "template"
+ }
+}
diff --git a/iOS/Assets.xcassets/pauseButtonHugeiOS.imageset/pauseButtonHugeiOS.pdf b/iOS/Assets.xcassets/pauseButtonHugeiOS.imageset/pauseButtonHugeiOS.pdf
new file mode 100644
index 0000000..b47299f
Binary files /dev/null and b/iOS/Assets.xcassets/pauseButtonHugeiOS.imageset/pauseButtonHugeiOS.pdf differ
diff --git a/iOS/Assets.xcassets/playButtonHugeiOS.imageset/Contents.json b/iOS/Assets.xcassets/playButtonHugeiOS.imageset/Contents.json
new file mode 100644
index 0000000..c9a0c7c
--- /dev/null
+++ b/iOS/Assets.xcassets/playButtonHugeiOS.imageset/Contents.json
@@ -0,0 +1,16 @@
+{
+ "images" : [
+ {
+ "filename" : "playButtonHugeiOS.pdf",
+ "idiom" : "universal"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ },
+ "properties" : {
+ "preserves-vector-representation" : true,
+ "template-rendering-intent" : "template"
+ }
+}
diff --git a/iOS/Assets.xcassets/playButtonHugeiOS.imageset/playButtonHugeiOS.pdf b/iOS/Assets.xcassets/playButtonHugeiOS.imageset/playButtonHugeiOS.pdf
new file mode 100644
index 0000000..81115af
Binary files /dev/null and b/iOS/Assets.xcassets/playButtonHugeiOS.imageset/playButtonHugeiOS.pdf differ
diff --git a/iOS/Assets.xcassets/prevTrackButtonHugeiOS.imageset/Contents.json b/iOS/Assets.xcassets/prevTrackButtonHugeiOS.imageset/Contents.json
new file mode 100644
index 0000000..57d239b
--- /dev/null
+++ b/iOS/Assets.xcassets/prevTrackButtonHugeiOS.imageset/Contents.json
@@ -0,0 +1,16 @@
+{
+ "images" : [
+ {
+ "filename" : "prevTrackButtonHugeiOS.pdf",
+ "idiom" : "universal"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ },
+ "properties" : {
+ "preserves-vector-representation" : true,
+ "template-rendering-intent" : "template"
+ }
+}
diff --git a/iOS/Assets.xcassets/prevTrackButtonHugeiOS.imageset/prevTrackButtonHugeiOS.pdf b/iOS/Assets.xcassets/prevTrackButtonHugeiOS.imageset/prevTrackButtonHugeiOS.pdf
new file mode 100644
index 0000000..d4eb770
Binary files /dev/null and b/iOS/Assets.xcassets/prevTrackButtonHugeiOS.imageset/prevTrackButtonHugeiOS.pdf differ
diff --git a/iOS/Assets.xcassets/speakerHigh.imageset/Contents.json b/iOS/Assets.xcassets/speakerHigh.imageset/Contents.json
new file mode 100644
index 0000000..8a644e7
--- /dev/null
+++ b/iOS/Assets.xcassets/speakerHigh.imageset/Contents.json
@@ -0,0 +1,16 @@
+{
+ "images" : [
+ {
+ "filename" : "speakerHigh.pdf",
+ "idiom" : "universal"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ },
+ "properties" : {
+ "preserves-vector-representation" : true,
+ "template-rendering-intent" : "template"
+ }
+}
diff --git a/iOS/Assets.xcassets/speakerHigh.imageset/speakerHigh.pdf b/iOS/Assets.xcassets/speakerHigh.imageset/speakerHigh.pdf
new file mode 100644
index 0000000..08ac5f1
Binary files /dev/null and b/iOS/Assets.xcassets/speakerHigh.imageset/speakerHigh.pdf differ
diff --git a/iOS/Assets.xcassets/speakerOff.imageset/Contents.json b/iOS/Assets.xcassets/speakerOff.imageset/Contents.json
new file mode 100644
index 0000000..5e29376
--- /dev/null
+++ b/iOS/Assets.xcassets/speakerOff.imageset/Contents.json
@@ -0,0 +1,16 @@
+{
+ "images" : [
+ {
+ "filename" : "speakerOff.pdf",
+ "idiom" : "universal"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ },
+ "properties" : {
+ "preserves-vector-representation" : true,
+ "template-rendering-intent" : "template"
+ }
+}
diff --git a/iOS/Assets.xcassets/speakerOff.imageset/speakerOff.pdf b/iOS/Assets.xcassets/speakerOff.imageset/speakerOff.pdf
new file mode 100644
index 0000000..a258eea
Binary files /dev/null and b/iOS/Assets.xcassets/speakerOff.imageset/speakerOff.pdf differ
diff --git a/iOS/Components/Browser/Album Browser/AlbumViewController.swift b/iOS/Components/Browser/Album Browser/AlbumViewController.swift
index a17a4ac..5480a89 100644
--- a/iOS/Components/Browser/Album Browser/AlbumViewController.swift
+++ b/iOS/Components/Browser/Album Browser/AlbumViewController.swift
@@ -34,6 +34,7 @@ class AlbumViewController: UICollectionViewController {
}
@objc func didConnect() {
+ print("Album view controller - Connected!")
App.mpdClient.fetchAllAlbums()
}
diff --git a/iOS/Components/Now Playing/NowPlayingBarViewController.swift b/iOS/Components/Now Playing/NowPlayingBarViewController.swift
new file mode 100644
index 0000000..b41a81b
--- /dev/null
+++ b/iOS/Components/Now Playing/NowPlayingBarViewController.swift
@@ -0,0 +1,134 @@
+//
+// NowPlayingViewController.swift
+// Persephone-iOS
+//
+// Created by Dan Barber on 2020-5-15.
+// Copyright © 2020 Dan Barber. All rights reserved.
+//
+
+import UIKit
+import ReSwift
+import Kingfisher
+
+class NowPlayingBarViewController: UIViewController {
+ @IBOutlet var separatorHeight: NSLayoutConstraint!
+ @IBOutlet var playPauseButton: UIButton!
+ @IBOutlet var nextButton: UIButton!
+ @IBOutlet var songTitle: UILabel!
+ @IBOutlet var albumCoverView: UIImageView!
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ separatorHeight.constant = 1 / traitCollection.displayScale
+
+ App.store.subscribe(self) {
+ $0.select {
+ ($0.playerState, $0.queueState)
+ }
+ }
+
+ NotificationCenter.default.addObserver(self, selector: #selector(didConnect), name: .didConnect, object: nil)
+ NotificationCenter.default.addObserver(self, selector: #selector(willDisconnect), name: .willDisconnect, object: nil)
+ NotificationCenter.default.addObserver(self, selector: #selector(didReloadAlbumArt), name: .didReloadAlbumArt, object: nil)
+
+ albumCoverView.layer.backgroundColor = UIColor.black.cgColor
+ albumCoverView.layer.cornerRadius = 4
+ albumCoverView.layer.borderWidth = 1 / traitCollection.displayScale
+ albumCoverView.layer.masksToBounds = true
+
+ setAppearance()
+ }
+
+ override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
+ super.traitCollectionDidChange(previousTraitCollection)
+
+ separatorHeight.constant = 1 / traitCollection.displayScale
+
+ if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) {
+ setAppearance()
+ }
+ }
+
+ func setAppearance() {
+ let darkMode = traitCollection.userInterfaceStyle == .dark
+
+ albumCoverView.layer.borderColor = darkMode ? CGColor.albumBorderColorDark : CGColor.albumBorderColorLight
+ }
+
+ @objc func didConnect() {
+ App.mpdClient.fetchQueue()
+ }
+
+ @objc func willDisconnect() {
+ DispatchQueue.main.async {
+ App.store.dispatch(UpdateQueuePosAction(queuePos: -1))
+ App.store.dispatch(UpdateQueueAction(queue: []))
+ }
+ }
+
+ @objc func didReloadAlbumArt() {
+ // NO-OP
+ }
+
+ func setTransportControlState(_ state: PlayerState) {
+ guard let state = state.state else { return }
+
+ playPauseButton.isEnabled = state.isOneOf([.playing, .paused, .stopped])
+ nextButton.isEnabled = state.isOneOf([.playing, .paused])
+
+ if state.isOneOf([.paused, .stopped, .unknown]) {
+ playPauseButton.setImage(.playIconLarge, for: .normal)
+ } else {
+ playPauseButton.setImage(.pauseIconLarge, for: .normal)
+ }
+ }
+
+ func setSong(_ song: Song?) {
+ guard let song = song else {
+ self.songTitle.text = "Not Playing"
+ self.albumCoverView.image = .defaultCoverArt
+ return
+ }
+
+ songTitle.text = song.title
+
+ let provider = MPDAlbumArtImageDataProvider(
+ songUri: song.mpdSong.uriString,
+ cacheKey: song.album.hash
+ )
+
+ albumCoverView.kf.setImage(
+ with: .provider(provider),
+ placeholder: UIImage.defaultCoverArt,
+ options: [
+ .processor(DownsamplingImageProcessor(size: .queueSongCoverSize)),
+ .scaleFactor(traitCollection.displayScale),
+ ]
+ )
+ }
+
+ @IBAction func playPauseButtonAction(_ sender: Any) {
+ App.mpdClient.playPause()
+ }
+
+ @IBAction func nextButtonAction(_ sender: Any) {
+ App.mpdClient.nextTrack()
+ }
+
+ @IBAction func expandNowPlaying(_ sender: Any) {
+ }
+}
+
+extension NowPlayingBarViewController: StoreSubscriber {
+ typealias StoreSubscriberStateType = (
+ playerState: PlayerState, queueState: QueueState
+ )
+
+ func newState(state: StoreSubscriberStateType) {
+ DispatchQueue.main.async {
+ self.setTransportControlState(state.playerState)
+ self.setSong(state.playerState.currentSong)
+ }
+ }
+}
diff --git a/iOS/Components/Now Playing/NowPlayingBarViewController.xib b/iOS/Components/Now Playing/NowPlayingBarViewController.xib
new file mode 100644
index 0000000..3078075
--- /dev/null
+++ b/iOS/Components/Now Playing/NowPlayingBarViewController.xib
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iOS/Components/Now Playing/NowPlayingTabBarController.swift b/iOS/Components/Now Playing/NowPlayingTabBarController.swift
index b26baa3..c446de8 100644
--- a/iOS/Components/Now Playing/NowPlayingTabBarController.swift
+++ b/iOS/Components/Now Playing/NowPlayingTabBarController.swift
@@ -9,32 +9,22 @@
import UIKit
class NowPlayingTabBarController: UITabBarController {
- private var barHeight: NSLayoutConstraint!
- let nowPlayingViewController = NowPlayingViewController()
+ let nowPlayingViewController = NowPlayingBarViewController()
override func viewDidLoad() {
super.viewDidLoad()
- addChild(nowPlayingViewController)
let subview = nowPlayingViewController.view!
- tabBar.superview?.addSubview(subview)
- tabBar.clipsToBounds = false
+ view.addSubview(subview)
subview.translatesAutoresizingMaskIntoConstraints = false
- barHeight = subview.heightAnchor.constraint(equalToConstant: 0)
+
NSLayoutConstraint.activate([
subview.leadingAnchor.constraint(equalTo: view.leadingAnchor),
subview.trailingAnchor.constraint(equalTo: view.trailingAnchor),
subview.topAnchor.constraint(equalTo: tabBar.topAnchor),
- barHeight,
+ subview.heightAnchor.constraint(equalToConstant: NowPlayingTabBar.barHeight),
])
- nowPlayingViewController.didMove(toParent: self)
-
+
additionalSafeAreaInsets.bottom = NowPlayingTabBar.barHeight
}
-
- override func preferredContentSizeDidChange(forChildContentContainer container: UIContentContainer) {
- super.preferredContentSizeDidChange(forChildContentContainer: container)
-
- barHeight.constant = container.preferredContentSize.height
- }
}
diff --git a/iOS/Components/Now Playing/NowPlayingViewController.swift b/iOS/Components/Now Playing/NowPlayingViewController.swift
index 6f2e386..d1ff710 100644
--- a/iOS/Components/Now Playing/NowPlayingViewController.swift
+++ b/iOS/Components/Now Playing/NowPlayingViewController.swift
@@ -2,132 +2,29 @@
// NowPlayingViewController.swift
// Persephone-iOS
//
-// Created by Dan Barber on 2020-5-15.
+// Created by Dan Barber on 2020-12-01.
// Copyright © 2020 Dan Barber. All rights reserved.
//
import UIKit
-import ReSwift
-import Kingfisher
class NowPlayingViewController: UIViewController {
- @IBOutlet var separatorHeight: NSLayoutConstraint!
- @IBOutlet var playPauseButton: UIButton!
- @IBOutlet var nextButton: UIButton!
- @IBOutlet var songTitle: UILabel!
- @IBOutlet var albumCoverView: UIImageView!
-
- override func viewDidLoad() {
- super.viewDidLoad()
-
- separatorHeight.constant = 1 / traitCollection.displayScale
-
- App.store.subscribe(self) {
- $0.select { $0.playerState }
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ // Do any additional setup after loading the view.
}
-
- NotificationCenter.default.addObserver(self, selector: #selector(didConnect), name: .didConnect, object: nil)
- NotificationCenter.default.addObserver(self, selector: #selector(willDisconnect), name: .willDisconnect, object: nil)
- NotificationCenter.default.addObserver(self, selector: #selector(didReloadAlbumArt), name: .didReloadAlbumArt, object: nil)
- albumCoverView.layer.backgroundColor = UIColor.black.cgColor
- albumCoverView.layer.cornerRadius = 4
- albumCoverView.layer.borderWidth = 1 / traitCollection.displayScale
- albumCoverView.layer.masksToBounds = true
- setAppearance()
- }
-
- override func didMove(toParent parent: UIViewController?) {
- super.didMove(toParent: parent)
+ /*
+ // MARK: - Navigation
- preferredContentSize.height = NowPlayingTabBar.barHeight
- }
-
- override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
- super.traitCollectionDidChange(previousTraitCollection)
-
- separatorHeight.constant = 1 / traitCollection.displayScale
-
- if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) {
- setAppearance()
+ // In a storyboard-based application, you will often want to do a little preparation before navigation
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
+ // Get the new view controller using segue.destination.
+ // Pass the selected object to the new view controller.
}
- }
-
- func setAppearance() {
- let darkMode = traitCollection.userInterfaceStyle == .dark
+ */
- albumCoverView.layer.borderColor = darkMode ? CGColor.albumBorderColorDark : CGColor.albumBorderColorLight
- }
-
- @objc func didConnect() {
- App.mpdClient.fetchQueue()
- }
-
- @objc func willDisconnect() {
- DispatchQueue.main.async {
- App.store.dispatch(UpdateQueuePosAction(queuePos: -1))
- App.store.dispatch(UpdateQueueAction(queue: []))
- }
- }
-
- @objc func didReloadAlbumArt() {
- // NO-OP
- }
-
- func setTransportControlState(_ state: PlayerState) {
- guard let state = state.state else { return }
-
- playPauseButton.isEnabled = state.isOneOf([.playing, .paused, .stopped])
- nextButton.isEnabled = state.isOneOf([.playing, .paused])
-
- if state.isOneOf([.paused, .stopped, .unknown]) {
- playPauseButton.setImage(.playIconLarge, for: .normal)
- } else {
- playPauseButton.setImage(.pauseIconLarge, for: .normal)
- }
- }
-
- func setSong(_ song: Song?) {
- guard let song = song else {
- self.songTitle.text = "Not Playing"
- self.albumCoverView.image = .defaultCoverArt
- return
- }
-
- songTitle.text = song.title
-
- let provider = MPDAlbumArtImageDataProvider(
- songUri: song.mpdSong.uriString,
- cacheKey: song.album.hash
- )
-
- albumCoverView.kf.setImage(
- with: .provider(provider),
- placeholder: UIImage.defaultCoverArt,
- options: [
- .processor(DownsamplingImageProcessor(size: .queueSongCoverSize)),
- .scaleFactor(traitCollection.displayScale),
- ]
- )
- }
-
- @IBAction func playPauseButtonAction(_ sender: Any) {
- App.mpdClient.playPause()
- }
-
- @IBAction func nextButtonAction(_ sender: Any) {
- App.mpdClient.nextTrack()
- }
-}
-
-extension NowPlayingViewController: StoreSubscriber {
- typealias StoreSubscriberStateType = PlayerState
-
- func newState(state: PlayerState) {
- DispatchQueue.main.async {
- self.setTransportControlState(state)
- self.setSong(state.currentSong)
- }
- }
}
diff --git a/iOS/Components/Now Playing/NowPlayingViewController.xib b/iOS/Components/Now Playing/NowPlayingViewController.xib
index 57666fb..68fb285 100644
--- a/iOS/Components/Now Playing/NowPlayingViewController.xib
+++ b/iOS/Components/Now Playing/NowPlayingViewController.xib
@@ -1,105 +1,74 @@
-
-
+
+
-
+
+
-
+
-
-
-
-
-
-
+
-
-
-
+
+
+
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iOS/SceneDelegate.swift b/iOS/SceneDelegate.swift
index 3a6c218..a601459 100644
--- a/iOS/SceneDelegate.swift
+++ b/iOS/SceneDelegate.swift
@@ -21,7 +21,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
_ = App.mpdServerController
- App.store.dispatch(UpdateServerHost(host: "192.168.1.42"))
+ App.store.dispatch(UpdateServerHost(host: "192.168.4.31"))
}
func sceneDidDisconnect(_ scene: UIScene) {