Fix: LockScreen UI bug

This commit is contained in:
Hariharan Mudaliar 2025-11-20 14:23:21 +05:30
commit e6074c4fa3
3 changed files with 61 additions and 19 deletions

View file

@ -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(

View file

@ -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,

View file

@ -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)
} }