Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add top padding and show artist genre Improve header spacing and play button hover

Apply .padding(.top, 15) to album and artist title texts. Show the
artist's genre when available in ArtistHeaderView. Add
isHoveringPlayButton state and onHover handlers to album and artist card
views, using Color(hex: "fe09a3") as the hover fill and a 0.15s
easeInOut animation.

+34 -5
macos/Rockbox.xcodeproj/project.xcworkspace/xcuserdata/tsirysandratraina.xcuserdatad/UserInterfaceState.xcuserstate

This is a binary file and will not be displayed.

+1
macos/Rockbox/Views/AlbumDetail/AlbumHeaderView.swift
··· 63 63 VStack(alignment: .leading, spacing: 8) { 64 64 Text(album.title) 65 65 .font(.system(size: 24, weight: .bold)) 66 + .padding(.top, 15) 66 67 67 68 Text(album.artist) 68 69 .font(.system(size: 16))
+6 -1
macos/Rockbox/Views/Albums/AlbumCardView.swift
··· 58 58 }) { 59 59 ZStack { 60 60 Circle() 61 - .fill(.black.opacity(0.5)) 61 + .fill(isHoveringPlayButton ? Color(hex: "fe09a3") : .white.opacity(0.3)) 62 62 .frame(width: 44, height: 44) 63 63 64 64 Image(systemName: "play.fill") ··· 67 67 } 68 68 } 69 69 .buttonStyle(.borderless) 70 + .onHover { hovering in 71 + withAnimation(.easeInOut(duration: 0.15)) { 72 + isHoveringPlayButton = hovering 73 + } 74 + } 70 75 } 71 76 } 72 77 .onHover { hovering in
+9 -2
macos/Rockbox/Views/ArtistDetail/ArtistAlbumCardView.swift
··· 12 12 var onSelect: () -> Void 13 13 14 14 @State private var isHovering = false 15 + @State private var isHoveringPlayButton = false 15 16 @State private var errorText: String? 16 17 17 18 var body: some View { ··· 61 62 }) { 62 63 ZStack { 63 64 Circle() 64 - .fill(.black.opacity(0.5)) 65 + .fill(isHoveringPlayButton ? Color(hex: "fe09a3") : .white.opacity(0.3)) 65 66 .frame(width: 36, height: 36) 66 67 67 68 Image(systemName: "play.fill") 68 69 .font(.system(size: 14)) 69 70 .foregroundStyle(.white) 70 71 } 71 - }.buttonStyle(.borderless) 72 + } 73 + .buttonStyle(.borderless) 74 + .onHover { hovering in 75 + withAnimation(.easeInOut(duration: 0.15)) { 76 + isHoveringPlayButton = hovering 77 + } 78 + } 72 79 } 73 80 } 74 81 .onHover { hovering in
+8
macos/Rockbox/Views/ArtistDetail/ArtistHeaderView.swift
··· 65 65 VStack(alignment: .leading, spacing: 8) { 66 66 Text(artist.name) 67 67 .font(.system(size: 28, weight: .bold)) 68 + .padding(.top, 15) 69 + 70 + if !artist.genre.isEmpty { 71 + Text(artist.genre) 72 + .foregroundStyle(.tertiary) 73 + } 68 74 69 75 Text("\(albumCount) albums · \(trackCount) songs") 70 76 .font(.system(size: 13)) 71 77 .foregroundStyle(.tertiary) 72 78 .padding(.top, 4) 79 + 80 + 73 81 74 82 Spacer() 75 83
+10 -2
macos/Rockbox/Views/Artists/ArtistCardView.swift
··· 10 10 struct ArtistCardView: View { 11 11 let artist: Artist 12 12 @State private var isHovering = false 13 + @State private var isHoveringPlayButton = false 13 14 @State private var errorText: String? = nil 14 15 15 16 var body: some View { ··· 56 57 }) { 57 58 ZStack { 58 59 Circle() 59 - .fill(.black.opacity(0.5)) 60 + .fill(isHoveringPlayButton ? Color(hex: "fe09a3") : .white.opacity(0.3)) 60 61 .frame(width: 44, height: 44) 61 62 62 63 Image(systemName: "play.fill") 63 64 .font(.system(size: 18)) 64 65 .foregroundStyle(.white) 65 66 } 66 - }.buttonStyle(.borderless) 67 + } 68 + .buttonStyle(.borderless) 69 + .onHover { hovering in 70 + withAnimation(.easeInOut(duration: 0.15)) { 71 + isHoveringPlayButton = hovering 72 + } 73 + } 74 + 67 75 } 68 76 } 69 77 .onHover { hovering in