mirror of
https://github.com/FBukovina/Atoll.git
synced 2026-10-27 15:14:33 +00:00
Fix: LockScreen UI bug
This commit is contained in:
parent
d88d9acb60
commit
e6074c4fa3
3 changed files with 61 additions and 19 deletions
|
|
@ -429,21 +429,20 @@ struct LockScreenMusicPanel: View {
|
||||||
}
|
}
|
||||||
|
|
||||||
private var playPauseButton: some View {
|
private var playPauseButton: some View {
|
||||||
let frameSize: CGFloat = isExpanded ? 72 : 48
|
let frameSize: CGFloat = isExpanded ? 80 : 54
|
||||||
let symbolSize: CGFloat = isExpanded ? 30 : 24
|
let symbolSize: CGFloat = isExpanded ? 34 : 26
|
||||||
|
let iconName = musicManager.isPlaying ? "pause.fill" : "play.fill"
|
||||||
|
|
||||||
return Button(action: {
|
return HoverButton(
|
||||||
|
icon: iconName,
|
||||||
|
iconColor: .white,
|
||||||
|
scale: .large,
|
||||||
|
pressEffect: .none
|
||||||
|
) {
|
||||||
registerInteraction()
|
registerInteraction()
|
||||||
musicManager.togglePlay()
|
musicManager.togglePlay()
|
||||||
}) {
|
|
||||||
Image(systemName: musicManager.isPlaying ? "pause.fill" : "play.fill")
|
|
||||||
.font(.system(size: symbolSize, weight: .semibold))
|
|
||||||
.foregroundColor(.white)
|
|
||||||
.contentTransition(.symbolEffect(.replace))
|
|
||||||
.frame(width: frameSize, height: frameSize)
|
|
||||||
.contentShape(Rectangle())
|
|
||||||
}
|
}
|
||||||
.buttonStyle(PlainButtonStyle())
|
.frame(width: frameSize, height: frameSize)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func controlButton(
|
private func controlButton(
|
||||||
|
|
|
||||||
|
|
@ -621,10 +621,10 @@ private struct MinimalisticReminderDetailsView: View {
|
||||||
private var playPauseButton: some View {
|
private var playPauseButton: some View {
|
||||||
MinimalisticSquircircleButton(
|
MinimalisticSquircircleButton(
|
||||||
icon: musicManager.isPlaying ? "pause.fill" : "play.fill",
|
icon: musicManager.isPlaying ? "pause.fill" : "play.fill",
|
||||||
fontSize: 24,
|
fontSize: 28,
|
||||||
fontWeight: .semibold,
|
fontWeight: .semibold,
|
||||||
frameSize: CGSize(width: 54, height: 54),
|
frameSize: CGSize(width: 60, height: 60),
|
||||||
cornerRadius: 20,
|
cornerRadius: 24,
|
||||||
foregroundColor: .white,
|
foregroundColor: .white,
|
||||||
pressEffect: .none,
|
pressEffect: .none,
|
||||||
symbolEffectStyle: .replace,
|
symbolEffectStyle: .replace,
|
||||||
|
|
|
||||||
|
|
@ -122,6 +122,7 @@ struct MusicControlsView: View {
|
||||||
let showShuffleAndRepeat: Bool
|
let showShuffleAndRepeat: Bool
|
||||||
@Default(.musicAuxLeftControl) private var leftAuxControl
|
@Default(.musicAuxLeftControl) private var leftAuxControl
|
||||||
@Default(.musicAuxRightControl) private var rightAuxControl
|
@Default(.musicAuxRightControl) private var rightAuxControl
|
||||||
|
@Default(.musicSkipBehavior) private var musicSkipBehavior
|
||||||
@Default(.enableLyrics) private var enableLyrics
|
@Default(.enableLyrics) private var enableLyrics
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
|
|
@ -214,20 +215,62 @@ struct MusicControlsView: View {
|
||||||
|
|
||||||
private var playbackControls: some View {
|
private var playbackControls: some View {
|
||||||
let controls = resolvedAuxControls
|
let controls = resolvedAuxControls
|
||||||
|
let seekInterval: TimeInterval = 10
|
||||||
|
let skipMagnitude: CGFloat = 6
|
||||||
|
|
||||||
|
let backwardConfig: (icon: String, press: HoverButton.PressEffect?, action: () -> Void)
|
||||||
|
let forwardConfig: (icon: String, press: HoverButton.PressEffect?, action: () -> Void)
|
||||||
|
|
||||||
|
switch musicSkipBehavior {
|
||||||
|
case .track:
|
||||||
|
backwardConfig = (
|
||||||
|
icon: "backward.fill",
|
||||||
|
press: .nudge(-skipMagnitude),
|
||||||
|
action: { musicManager.previousTrack() }
|
||||||
|
)
|
||||||
|
forwardConfig = (
|
||||||
|
icon: "forward.fill",
|
||||||
|
press: .nudge(skipMagnitude),
|
||||||
|
action: { musicManager.nextTrack() }
|
||||||
|
)
|
||||||
|
case .tenSecond:
|
||||||
|
backwardConfig = (
|
||||||
|
icon: "gobackward.10",
|
||||||
|
press: .wiggle(.counterClockwise),
|
||||||
|
action: { musicManager.seek(by: -seekInterval) }
|
||||||
|
)
|
||||||
|
forwardConfig = (
|
||||||
|
icon: "goforward.10",
|
||||||
|
press: .wiggle(.clockwise),
|
||||||
|
action: { musicManager.seek(by: seekInterval) }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
return HStack(spacing: 8) {
|
return HStack(spacing: 8) {
|
||||||
if showShuffleAndRepeat {
|
if showShuffleAndRepeat {
|
||||||
auxButton(for: controls.left)
|
auxButton(for: controls.left)
|
||||||
}
|
}
|
||||||
HoverButton(icon: "backward.fill", scale: .medium, pressEffect: .nudge(-6)) {
|
|
||||||
MusicManager.shared.previousTrack()
|
HoverButton(
|
||||||
|
icon: backwardConfig.icon,
|
||||||
|
scale: .medium,
|
||||||
|
pressEffect: backwardConfig.press
|
||||||
|
) {
|
||||||
|
backwardConfig.action()
|
||||||
}
|
}
|
||||||
|
|
||||||
HoverButton(icon: musicManager.isPlaying ? "pause.fill" : "play.fill", scale: .large) {
|
HoverButton(icon: musicManager.isPlaying ? "pause.fill" : "play.fill", scale: .large) {
|
||||||
MusicManager.shared.togglePlay()
|
MusicManager.shared.togglePlay()
|
||||||
}
|
}
|
||||||
HoverButton(icon: "forward.fill", scale: .medium, pressEffect: .nudge(6)) {
|
|
||||||
MusicManager.shared.nextTrack()
|
HoverButton(
|
||||||
|
icon: forwardConfig.icon,
|
||||||
|
scale: .medium,
|
||||||
|
pressEffect: forwardConfig.press
|
||||||
|
) {
|
||||||
|
forwardConfig.action()
|
||||||
}
|
}
|
||||||
|
|
||||||
if showShuffleAndRepeat {
|
if showShuffleAndRepeat {
|
||||||
auxButton(for: controls.right)
|
auxButton(for: controls.right)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue