Add empty page text, playlist text to settings

This commit is contained in:
Christoph Hagen
2025-01-07 11:26:59 +01:00
parent 9f120b251f
commit 9d95e7d210
23 changed files with 266 additions and 94 deletions

View File

@ -36,8 +36,24 @@ struct AudioSettingsDetailView: View {
footer: "The CSS file to provide the functionality for the audio player",
selectedFile: $audioPlayer.audioPlayerJsFile,
allowedType: .asset)
LocalizedAudioSettingsDetailView(settings: audioPlayer.localized(in: language))
.id(language)
}
.padding()
}
}
}
struct LocalizedAudioSettingsDetailView: View {
@ObservedObject
var settings: LocalizedAudioPlayerSettings
var body: some View {
StringPropertyView(
title: "Playlist Text",
text: $settings.playlistText,
footer: "The text on the audio player indicating the playlist")
}
}

View File

@ -14,9 +14,9 @@ struct GenerationDetailView: View {
case .navigationBar:
NavigationBarSettingsView()
case .postFeed:
PostFeedSettingsView()
PostFeedSettingsView(postSettings: content.settings.posts)
case .pages:
PageSettingsDetailView()
PageSettingsDetailView(pageSettings: content.settings.pages)
case .tagOverview:
TagOverviewDetailView()
case .audioPlayer:

View File

@ -0,0 +1,21 @@
import SwiftUI
struct LocalizedPageSettingsView: View {
@ObservedObject
var settings: LocalizedPageSettings
var body: some View {
VStack(alignment: .leading) {
StringPropertyView(
title: "Empty Page Title",
text: $settings.emptyPageTitle,
footer: "The title to show for the box on an empty page")
TextFieldPropertyView(
title: "Empty Page Text",
text: $settings.emptyPageText,
footer: "The text to show in the box on an empty page")
}
}
}

View File

@ -5,8 +5,8 @@ struct PageSettingsDetailView: View {
@Environment(\.language)
private var language
@EnvironmentObject
private var content: Content
@ObservedObject
var pageSettings: PageSettings
var body: some View {
ScrollView {
@ -17,50 +17,52 @@ struct PageSettingsDetailView: View {
IntegerPropertyView(
title: "Content Width",
value: $content.settings.pages.contentWidth,
value: $pageSettings.contentWidth,
footer: "The maximum width of the content in pages (in pixels)")
IntegerPropertyView(
title: "Fullscreen Image Width",
value: $content.settings.pages.largeImageWidth,
value: $pageSettings.largeImageWidth,
footer: "The maximum width of images that are diplayed fullscreen")
IntegerPropertyView(
title: "Page Link Image Width",
value: $content.settings.pages.pageLinkImageSize,
value: $pageSettings.pageLinkImageSize,
footer: "The maximum width of images diplayed as thumbnails on page links")
FilePropertyView(
title: "Default CSS File",
footer: "The CSS file containing the styling of all pages",
selectedFile: $content.settings.pages.defaultCssFile,
selectedFile: $pageSettings.defaultCssFile,
allowedType: .asset)
FilePropertyView(
title: "Code Highlighting File",
footer: "The JavaScript file to provide syntax highlighting of code blocks",
selectedFile: $content.settings.pages.codeHighlightingJsFile,
selectedFile: $pageSettings.codeHighlightingJsFile,
allowedType: .asset)
FilePropertyView(
title: "3D Model Viewer File",
footer: "The JavaScript file to provide the functionality for the 3D model viewer",
selectedFile: $content.settings.pages.modelViewerJsFile,
selectedFile: $pageSettings.modelViewerJsFile,
allowedType: .asset)
FilePropertyView(
title: "Image Comparison CSS File",
footer: "The CSS file to provide image comparisons",
selectedFile: $content.settings.pages.imageCompareCssFile,
selectedFile: $pageSettings.imageCompareCssFile,
allowedType: .asset)
FilePropertyView(
title: "Image Comparison JaveScript File",
footer: "The JavaScript file to provide image comparisons",
selectedFile: $content.settings.pages.imageCompareJsFile,
selectedFile: $pageSettings.imageCompareJsFile,
allowedType: .asset)
LocalizedPageSettingsView(settings: pageSettings.localized(in: language))
.id(language)
}
.padding()
}
@ -69,7 +71,6 @@ struct PageSettingsDetailView: View {
#Preview {
PageSettingsDetailView()
.environmentObject(Content.mock)
PageSettingsDetailView(pageSettings: .default)
.padding()
}

View File

@ -5,8 +5,8 @@ struct PostFeedSettingsView: View {
@Environment(\.language)
private var language
@EnvironmentObject
private var content: Content
@ObservedObject
var postSettings: PostSettings
var body: some View {
ScrollView {
@ -16,31 +16,32 @@ struct PostFeedSettingsView: View {
IntegerPropertyView(
title: "Content Width",
value: $content.settings.posts.contentWidth,
value: $postSettings.contentWidth,
footer: "The maximum width of the content the post feed (in pixels)")
IntegerPropertyView(
title: "Posts Per Page",
value: $content.settings.posts.postsPerPage,
value: $postSettings.postsPerPage,
footer: "The maximum number of posts displayed on a single page")
FilePropertyView(
title: "Default CSS File",
footer: "The CSS file containing the styling of all post pages",
selectedFile: $content.settings.posts.defaultCssFile)
selectedFile: $postSettings.defaultCssFile)
FilePropertyView(
title: "Swiper CSS File",
footer: "The CSS file containing the styling of image galleries in post feeds",
selectedFile: $content.settings.posts.swiperCssFile)
selectedFile: $postSettings.swiperCssFile)
FilePropertyView(
title: "Swiper JavaScript File",
footer: "The JavaScript file to load the image gallery code in post feeds",
selectedFile: $content.settings.posts.swiperJsFile)
selectedFile: $postSettings.swiperJsFile)
LocalizedPostFeedSettingsView(
settings: content.settings.localized(in: language))
settings: postSettings.localized(in: language))
.id(language)
}
.padding()
}
@ -49,7 +50,6 @@ struct PostFeedSettingsView: View {
#Preview {
PostFeedSettingsView()
.environmentObject(Content.mock)
PostFeedSettingsView(postSettings: .default)
.padding()
}