diff --git a/QueueCube/App/QueueCubeApp.swift b/QueueCube/App/QueueCubeApp.swift index d2430ac..eb7ecfa 100644 --- a/QueueCube/App/QueueCubeApp.swift +++ b/QueueCube/App/QueueCubeApp.swift @@ -14,7 +14,6 @@ struct QueueCubeApp: App { var body: some Scene { WindowGroup { ContentView() - .frame(minWidth: 400.0, minHeight: 600.0) .onAppear { #if targetEnvironment(macCatalyst) guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene else { return } diff --git a/QueueCube/Views/MainView.swift b/QueueCube/Views/MainView.swift index 010797a..fd2578d 100644 --- a/QueueCube/Views/MainView.swift +++ b/QueueCube/Views/MainView.swift @@ -118,43 +118,21 @@ struct MainView: View struct NowPlayingMiniPlayerModifier: ViewModifier { @Binding var model: NowPlayingViewModel - private let height = 64.0 + @State var nowPlayingHeight: CGFloat = 0.0 func body(content: Content) -> some View { - let playPauseImageName = model.isPlaying ? "pause.fill" : "play.fill" - ZStack { content - .safeAreaPadding(.bottom, height) + .safeAreaPadding(.bottom, nowPlayingHeight) VStack { Spacer() - - HStack { - VStack(alignment: .leading) { - Text(model.title) - .bold() - - Text(model.subtitle) - .foregroundStyle(.secondary) - } - - Spacer() - - Button(action: { model.onPlayPause(model) }) { Image(systemName: playPauseImageName) } - .imageScale(.large) - .padding(12.0) - } - .padding() - .frame(height: height) - .background( - RoundedRectangle(cornerRadius: 12) - .fill(.regularMaterial) - .stroke(.ultraThinMaterial, lineWidth: 1.0) - ) - .shadow(color: .black.opacity(0.15), radius: 14.0, y: 2.0) - - .padding() + + NowPlayingMiniView(model: $model) + .padding() + .fixedSize(horizontal: false, vertical: true) + .onGeometryChange(for: CGSize.self) { $0.size } + action: { nowPlayingHeight = $0.height } } } } diff --git a/QueueCube/Views/NowPlayingMiniView.swift b/QueueCube/Views/NowPlayingMiniView.swift new file mode 100644 index 0000000..a9e68a6 --- /dev/null +++ b/QueueCube/Views/NowPlayingMiniView.swift @@ -0,0 +1,42 @@ +// +// NowPlayingMiniView.swift +// QueueCube +// +// Created by James Magahern on 6/11/25. +// + +import SwiftUI + +struct NowPlayingMiniView: View { + @Binding var model: NowPlayingViewModel + + var body: some View { + let playPauseImageName = model.isPlaying ? "pause.fill" : "play.fill" + + HStack { + VStack(alignment: .leading) { + Text(model.title) + .font(.caption) + .lineLimit(1) + .bold() + + Text(model.subtitle) + .font(.caption) + .foregroundStyle(.secondary) + } + + Spacer() + + Button(action: { model.onPlayPause(model) }) { Image(systemName: playPauseImageName) } + .imageScale(.large) + .padding(12.0) + } + .padding(EdgeInsets(top: 4.0, leading: 10.0, bottom: 4.0, trailing: 10.0)) + .background( + RoundedRectangle(cornerRadius: 12) + .fill(.regularMaterial) + .stroke(.ultraThinMaterial, lineWidth: 1.0) + ) + .shadow(color: .black.opacity(0.15), radius: 14.0, y: 2.0) + } +}