diff options
| author | Fuwn <[email protected]> | 2025-06-27 19:18:54 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-06-27 19:18:54 -0700 |
| commit | 40918f417cec13cde2b7be8555d3f3bf8fa6656f (patch) | |
| tree | ce3f0daaaece3a6af75f37305898530f9b4d940f | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-40918f417cec13cde2b7be8555d3f3bf8fa6656f.tar.xz sora-testing-40918f417cec13cde2b7be8555d3f3bf8fa6656f.zip | |
feat: Development commit
| -rw-r--r-- | Localizable.xcstrings | 3 | ||||
| -rw-r--r-- | Sora/Data/Settings/SettingsManager.swift | 3 | ||||
| -rw-r--r-- | Sora/Views/Post/Grid/PostGridThumbnailView.swift | 16 | ||||
| -rw-r--r-- | Sora/Views/Settings/Section/SettingsThumbnailsView.swift | 2 |
4 files changed, 23 insertions, 1 deletions
diff --git a/Localizable.xcstrings b/Localizable.xcstrings index 49b207b..f94e55f 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -428,6 +428,9 @@ "Uncategorised" : { }, + "Uniform Thumbnail Size" : { + + }, "User ID" : { } diff --git a/Sora/Data/Settings/SettingsManager.swift b/Sora/Data/Settings/SettingsManager.swift index 5cd59ff..007c1d8 100644 --- a/Sora/Data/Settings/SettingsManager.swift +++ b/Sora/Data/Settings/SettingsManager.swift @@ -31,6 +31,9 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l @AppStorage("alternativeThumbnailGrid") var alternativeThumbnailGrid = false + @AppStorage("uniformThumbnailGrid") + var uniformThumbnailGrid = false + private var syncObservation: NSObjectProtocol? #if os(macOS) diff --git a/Sora/Views/Post/Grid/PostGridThumbnailView.swift b/Sora/Views/Post/Grid/PostGridThumbnailView.swift index b281980..15bf9da 100644 --- a/Sora/Views/Post/Grid/PostGridThumbnailView.swift +++ b/Sora/Views/Post/Grid/PostGridThumbnailView.swift @@ -20,7 +20,7 @@ struct PostGridThumbnailView: View { } @ViewBuilder - private func imageContent(image: Image) -> some View { + private func primaryImageContent(image: Image) -> some View { let isFiltered = settings.blurRatings.contains(post.rating) && manager.selectedPost?.id != post.id @@ -34,6 +34,20 @@ struct PostGridThumbnailView: View { .clipShape(RoundedRectangle(cornerRadius: 8)) } + @ViewBuilder + private func imageContent(image: Image) -> some View { + if settings.uniformThumbnailGrid { + GeometryReader { proxy in + primaryImageContent(image: image) + .frame(width: proxy.size.width, height: proxy.size.width) + } + .clipped() + .aspectRatio(1, contentMode: .fit) + } else { + primaryImageContent(image: image) + } + } + var body: some View { VStack { NetworkImage( diff --git a/Sora/Views/Settings/Section/SettingsThumbnailsView.swift b/Sora/Views/Settings/Section/SettingsThumbnailsView.swift index 9e4c856..910debb 100644 --- a/Sora/Views/Settings/Section/SettingsThumbnailsView.swift +++ b/Sora/Views/Settings/Section/SettingsThumbnailsView.swift @@ -23,6 +23,8 @@ struct SettingsThumbnailsView: View { ) #endif + Toggle("Uniform Thumbnail Size", isOn: $settings.uniformThumbnailGrid) + Toggle("Lazy Thumbnail Loading", isOn: $settings.alternativeThumbnailGrid) #if os(macOS) |