Improve tag and images view, save website settings

This commit is contained in:
Christoph Hagen
2024-12-02 13:08:52 +01:00
parent 1261ea534b
commit 4440b2ce0d
22 changed files with 576 additions and 144 deletions

View File

@ -5,7 +5,8 @@ struct ImageDetailsView: View {
@Environment(\.language)
var language
let image: ImageResource
@ObservedObject
var image: ImageResource
@State
private var newId: String

View File

@ -0,0 +1,17 @@
import SwiftUI
struct ImagesContentView: View {
@ObservedObject
var image: ImageResource
var body: some View {
image.imageToDisplay
.resizable()
.aspectRatio(contentMode: .fit)
}
}
#Preview {
ImagesContentView(image: .init(resourceName: "image1"))
}

View File

@ -19,38 +19,26 @@ struct ImagesView: View {
private var showImageDetails = false
var body: some View {
FlexibleColumnView(items: $content.images) { image, width in
let isSelected = selectedImage == image
let borderColor: Color = isSelected ? .accentColor : .clear
return image.imageToDisplay
.resizable()
.aspectRatio(contentMode: .fit)
.border(borderColor, width: 5)
.frame(width: width)
.onTapGesture { didTap(image: image) }
}
.inspector(isPresented: $showImageDetails) {
NavigationSplitView {
List(content.images, selection: $selectedImage) { image in
Text(image.id)
.tag(image)
}
} content: {
if let selectedImage {
ImagesContentView(image: selectedImage)
.layoutPriority(1)
} else {
Text("Select an image in the sidebar")
}
} detail: {
if let selectedImage {
ImageDetailsView(image: selectedImage)
.frame(maxWidth: 350)
} else {
Text("Select an image to show its details")
EmptyView()
}
}
.toolbar {
ToolbarItem(placement: .primaryAction) {
Button(action: { showImageDetails.toggle() }) {
Label("Details", systemSymbol: .infoCircle)
}
}
}
}
private func didTap(image: ImageResource) {
if selectedImage == image {
selectedImage = nil
} else {
selectedImage = image
}
}
}