72 lines
2.0 KiB
Swift
72 lines
2.0 KiB
Swift
//
|
|
// LibraryView.swift
|
|
// Mobile Music Assistant
|
|
//
|
|
// Created by Sven Hanold on 26.03.26.
|
|
//
|
|
|
|
import SwiftUI
|
|
import UIKit
|
|
|
|
enum LibraryTab: CaseIterable {
|
|
case albumArtists, artists, albums, playlists, genres, podcasts, radio
|
|
|
|
var title: LocalizedStringKey {
|
|
switch self {
|
|
case .albumArtists: return "Album Artists"
|
|
case .artists: return "Artists"
|
|
case .albums: return "Albums"
|
|
case .playlists: return "Playlists"
|
|
case .genres: return "Genres"
|
|
case .podcasts: return "Podcasts"
|
|
case .radio: return "Radio"
|
|
}
|
|
}
|
|
}
|
|
|
|
struct LibraryView: View {
|
|
@Environment(MAService.self) private var service
|
|
@State private var selectedTab: LibraryTab = .albumArtists
|
|
|
|
init() {
|
|
UISegmentedControl.appearance().setTitleTextAttributes(
|
|
[.font: UIFont.systemFont(ofSize: 11, weight: .medium)],
|
|
for: .normal
|
|
)
|
|
}
|
|
|
|
var body: some View {
|
|
NavigationStack {
|
|
Group {
|
|
switch selectedTab {
|
|
case .albumArtists: ArtistsView(albumArtistsOnly: true)
|
|
case .artists: ArtistsView()
|
|
case .albums: AlbumsView()
|
|
case .playlists: PlaylistsView()
|
|
case .genres: GenresView()
|
|
case .podcasts: PodcastsView()
|
|
case .radio: RadiosView()
|
|
}
|
|
}
|
|
.navigationBarTitleDisplayMode(.inline)
|
|
.toolbar {
|
|
ToolbarItem(placement: .principal) {
|
|
Picker("Library", selection: $selectedTab) {
|
|
ForEach(LibraryTab.allCases, id: \.self) { tab in
|
|
Text(tab.title).tag(tab)
|
|
}
|
|
}
|
|
.pickerStyle(.segmented)
|
|
.frame(maxWidth: 360)
|
|
}
|
|
}
|
|
.withMANavigation()
|
|
}
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
LibraryView()
|
|
.environment(MAService())
|
|
}
|