From e6074c4fa3c784389a5c874c06448b1c352d3015 Mon Sep 17 00:00:00 2001 From: Hariharan Mudaliar Date: Thu, 20 Nov 2025 14:23:21 +0530 Subject: [PATCH] Fix: LockScreen UI bug --- .../LockScreen/LockScreenMusicPanel.swift | 21 ++++---- .../Notch/MinimalisticMusicPlayerView.swift | 6 +-- .../components/Notch/NotchHomeView.swift | 51 +++++++++++++++++-- 3 files changed, 60 insertions(+), 18 deletions(-) diff --git a/DynamicIsland/components/LockScreen/LockScreenMusicPanel.swift b/DynamicIsland/components/LockScreen/LockScreenMusicPanel.swift index 8c735de..b16afb2 100644 --- a/DynamicIsland/components/LockScreen/LockScreenMusicPanel.swift +++ b/DynamicIsland/components/LockScreen/LockScreenMusicPanel.swift @@ -429,21 +429,20 @@ struct LockScreenMusicPanel: View { } private var playPauseButton: some View { - let frameSize: CGFloat = isExpanded ? 72 : 48 - let symbolSize: CGFloat = isExpanded ? 30 : 24 + let frameSize: CGFloat = isExpanded ? 80 : 54 + 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() 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( diff --git a/DynamicIsland/components/Notch/MinimalisticMusicPlayerView.swift b/DynamicIsland/components/Notch/MinimalisticMusicPlayerView.swift index 4dc43ec..cb5cae0 100644 --- a/DynamicIsland/components/Notch/MinimalisticMusicPlayerView.swift +++ b/DynamicIsland/components/Notch/MinimalisticMusicPlayerView.swift @@ -621,10 +621,10 @@ private struct MinimalisticReminderDetailsView: View { private var playPauseButton: some View { MinimalisticSquircircleButton( icon: musicManager.isPlaying ? "pause.fill" : "play.fill", - fontSize: 24, + fontSize: 28, fontWeight: .semibold, - frameSize: CGSize(width: 54, height: 54), - cornerRadius: 20, + frameSize: CGSize(width: 60, height: 60), + cornerRadius: 24, foregroundColor: .white, pressEffect: .none, symbolEffectStyle: .replace, diff --git a/DynamicIsland/components/Notch/NotchHomeView.swift b/DynamicIsland/components/Notch/NotchHomeView.swift index f7be331..8f554f7 100644 --- a/DynamicIsland/components/Notch/NotchHomeView.swift +++ b/DynamicIsland/components/Notch/NotchHomeView.swift @@ -122,6 +122,7 @@ struct MusicControlsView: View { let showShuffleAndRepeat: Bool @Default(.musicAuxLeftControl) private var leftAuxControl @Default(.musicAuxRightControl) private var rightAuxControl + @Default(.musicSkipBehavior) private var musicSkipBehavior @Default(.enableLyrics) private var enableLyrics var body: some View { @@ -214,20 +215,62 @@ struct MusicControlsView: View { private var playbackControls: some View { 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) { if showShuffleAndRepeat { 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) { 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 { auxButton(for: controls.right) }