remove some old code
- ID
9a54a45- date
2023-06-10 08:06:33+00:00- author
Alex Chan <alex@alexwlchan.net>- parent
af7cab6- message
remove some old code- changed files
5 files, 1 addition, 218 deletions
Changed files
BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj (33888) → BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj (32538)
diff --git a/BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj b/BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj
index 27abb60..4dedd7d 100644
--- a/BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj
+++ b/BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj
@@ -30,12 +30,9 @@
94D751022A31A798005859E7 /* BlinkReviewerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D751012A31A798005859E7 /* BlinkReviewerTests.swift */; };
94D7510C2A31A798005859E7 /* BlinkReviewerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D7510B2A31A798005859E7 /* BlinkReviewerUITests.swift */; };
94D7510E2A31A798005859E7 /* BlinkReviewerUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D7510D2A31A798005859E7 /* BlinkReviewerUITestsLaunchTests.swift */; };
- 94D7511C2A31A7B1005859E7 /* ThumbnailImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D7511B2A31A7B1005859E7 /* ThumbnailImage.swift */; };
- 94D7511E2A31B243005859E7 /* FullSizeImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D7511D2A31B243005859E7 /* FullSizeImage.swift */; };
94D751202A31B53E005859E7 /* AlbumInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D7511F2A31B53E005859E7 /* AlbumInfo.swift */; };
94D751222A31BD8E005859E7 /* PhotoReviewer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D751212A31BD8E005859E7 /* PhotoReviewer.swift */; };
94D7512B2A31D6AC005859E7 /* AssetHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D7512A2A31D6AC005859E7 /* AssetHelpers.swift */; };
- 94D751302A31DC4A005859E7 /* ThumbnailList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D7512F2A31DC4A005859E7 /* ThumbnailList.swift */; };
94F7E39E2A331A9E00763DB9 /* Statistics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94F7E39D2A331A9E00763DB9 /* Statistics.swift */; };
/* End PBXBuildFile section */
@@ -84,12 +81,9 @@
94D751072A31A798005859E7 /* BlinkReviewerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BlinkReviewerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
94D7510B2A31A798005859E7 /* BlinkReviewerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlinkReviewerUITests.swift; sourceTree = "<group>"; };
94D7510D2A31A798005859E7 /* BlinkReviewerUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlinkReviewerUITestsLaunchTests.swift; sourceTree = "<group>"; };
- 94D7511B2A31A7B1005859E7 /* ThumbnailImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThumbnailImage.swift; sourceTree = "<group>"; };
- 94D7511D2A31B243005859E7 /* FullSizeImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FullSizeImage.swift; sourceTree = "<group>"; };
94D7511F2A31B53E005859E7 /* AlbumInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlbumInfo.swift; sourceTree = "<group>"; };
94D751212A31BD8E005859E7 /* PhotoReviewer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoReviewer.swift; sourceTree = "<group>"; };
94D7512A2A31D6AC005859E7 /* AssetHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssetHelpers.swift; sourceTree = "<group>"; };
- 94D7512F2A31DC4A005859E7 /* ThumbnailList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThumbnailList.swift; sourceTree = "<group>"; };
94F7E39D2A331A9E00763DB9 /* Statistics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Statistics.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
@@ -234,11 +228,8 @@
94A0835F2A33E7E900238964 /* FocusedImage */,
945F17AE2A33D15D004FC479 /* Thumbnails */,
940331742A336BEB00200C5D /* Helpers */,
- 94D7511B2A31A7B1005859E7 /* ThumbnailImage.swift */,
- 94D7511D2A31B243005859E7 /* FullSizeImage.swift */,
94D7511F2A31B53E005859E7 /* AlbumInfo.swift */,
94D751212A31BD8E005859E7 /* PhotoReviewer.swift */,
- 94D7512F2A31DC4A005859E7 /* ThumbnailList.swift */,
94D2C8C02A32FCE300BEE15B /* PHAssetImage.swift */,
);
path = Views;
@@ -384,7 +375,6 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 94D7511C2A31A7B1005859E7 /* ThumbnailImage.swift in Sources */,
94D7512B2A31D6AC005859E7 /* AssetHelpers.swift in Sources */,
94D2C8BD2A32796500BEE15B /* AlbumHelpers.swift in Sources */,
945F17B02A33D167004FC479 /* NewThumbnailImage.swift in Sources */,
@@ -394,7 +384,6 @@
94A083632A33F30300238964 /* LoadingIndicatorOverlay.swift in Sources */,
945F17B42A33D726004FC479 /* ReviewStateIcon.swift in Sources */,
945F17B62A33D7AA004FC479 /* ReviewStateBorder.swift in Sources */,
- 94D7511E2A31B243005859E7 /* FullSizeImage.swift in Sources */,
94A083612A33E98000238964 /* AlbumInfoOverlay.swift in Sources */,
94C5FFF22A33ADD4004ADDF5 /* PHFetchResultCollection.swift in Sources */,
94A083662A33F50900238964 /* Debug.swift in Sources */,
@@ -403,7 +392,6 @@
940331732A336B5100200C5D /* DeferredRendering.swift in Sources */,
94D751202A31B53E005859E7 /* AlbumInfo.swift in Sources */,
94A0835E2A33E49E00238964 /* FocusedImage.swift in Sources */,
- 94D751302A31DC4A005859E7 /* ThumbnailList.swift in Sources */,
945F17B82A33DAC7004FC479 /* ReviewStateSaturation.swift in Sources */,
94D751222A31BD8E005859E7 /* PhotoReviewer.swift in Sources */,
94D2C8B92A320E6F00BEE15B /* ReviewState.swift in Sources */,
BlinkReviewer/BlinkReviewer/Views/FullSizeImage.swift (2660) → BlinkReviewer/BlinkReviewer/Views/FullSizeImage.swift (0)
diff --git a/BlinkReviewer/BlinkReviewer/Views/FullSizeImage.swift b/BlinkReviewer/BlinkReviewer/Views/FullSizeImage.swift
deleted file mode 100644
index 2570993..0000000
--- a/BlinkReviewer/BlinkReviewer/Views/FullSizeImage.swift
+++ /dev/null
@@ -1,62 +0,0 @@
-//
-// PreviewImage.swift
-// BlinkReviewer
-//
-// Created by Alex Chan on 08/06/2023.
-//
-
-import Photos
-import SwiftUI
-
-struct FullSizeImage: View {
- @ObservedObject var image: PHAssetImage
-
- var body: some View {
- ZStack {
- VStack {
- HStack {
- Spacer()
-
- Image(nsImage: self.image.image)
- .resizable()
- .aspectRatio(contentMode: .fit)
- .overlay(alignment: Alignment(horizontal: .center, vertical: .top)) {
- if let asset = image.asset {
- AlbumInfo(asset)
- }
- }
- .overlay(alignment: Alignment(horizontal: .trailing, vertical: .bottom)) {
-
- // Render a progress indicator if we're waiting for a higher-resolution
- // image to load; see the comment on `PHAssetImage`.
- //
- // `ProgressView` does have a `tint` modifier, but that doesn't seem to
- // work on macOS 13 -- this uses some code from a Stack Overflow answer
- // by aheze: https://stackoverflow.com/a/66568704/1558022
- if (self.image.isDegraded) {
- ProgressView()
- .colorInvert()
- .brightness(1)
- .padding()
- .deferredRendering(
- // Note: even if the image is already cached locally, the
- // image caching manager typically sends two images: a low-res
- // version comes immediately, then a higher-res version within
- // a second or two. This causes the progress indicator to
- // "flash" -- it appears then almost instantly disappears.
- //
- // Deferring the rendering by a second avoids this "flash".
- for: .seconds(1)
- )
- }
-
- }
-
- Spacer()
- }
-
- Spacer()
- }.padding()
- }
- }
-}
BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift (2624) → BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift (0)
diff --git a/BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift b/BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift
deleted file mode 100644
index e7ecf95..0000000
--- a/BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// ThumbnailItem.swift
-// BlinkReviewer
-//
-// Created by Alex Chan on 08/06/2023.
-//
-
-import SwiftUI
-import Photos
-
-/// Renders a square thumbnail for an image.
-///
-/// The image will be expanded to fill the square, and may be clipped
-/// if the original aspect ratio isn't square.
-struct ThumbnailImage: View {
- @ObservedObject var thumbnail: PHAssetImage
- var state: ReviewState?
- var isFavorite: Bool
- var isSelected: Bool
-
- var size: CGFloat {
- isSelected ? 70.0 : 50.0
- }
-
- var cornerRadius: CGFloat {
- return isSelected ? 7.0 : 5.0
- }
-
- var body: some View {
- VStack {
- Image(nsImage: thumbnail.image)
- .resizable()
- .saturation(state == .Rejected ? 0.0 : 1.0)
- // Note: it's taken several attempts to get this working correctly;
- // it behaves differently in the running app to the SwiftUI preview.
- //
- // Expected properties:
- //
- // - Thumbnails are square
- // - Thumbnails are expanded to fill the square, but they prefer
- // to crop rather than stretch the image
- //
- .scaledToFill()
- .frame(width: size, height: size, alignment: .center)
- .clipped()
- .overlay(
- // https://www.appcoda.com/swiftui-border/
- RoundedRectangle(cornerRadius: cornerRadius)
- .stroke(
- state?.color() ?? .gray.opacity(0.7),
- lineWidth: state != nil ? 3.0 : 1.0
- )
- )
- .cornerRadius(cornerRadius)
- .overlay(alignment: Alignment(horizontal: .leading, vertical: .bottom)) {
- if (isFavorite) {
- Image(systemName: "heart.fill")
- .foregroundColor(.white)
- .padding(2)
- .shadow(radius: 2.0)
- }
- }
- .overlay(alignment: Alignment(horizontal: .leading, vertical: .top)) {
- if let thisState = state {
- thisState.icon()
- .foregroundStyle(.white, thisState.color())
- .symbolRenderingMode(.palette)
- .padding(2)
- .font(.title2)
- .shadow(radius: 2.0)
- }
- }
- }
- }
-}
BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift (3015) → BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift (0)
diff --git a/BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift b/BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift
deleted file mode 100644
index e56d6d0..0000000
--- a/BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// ThumbnailList.swift
-// BlinkReviewer
-//
-// Created by Alex Chan on 08/06/2023.
-//
-
-import SwiftUI
-import Photos
-
-
-struct ThumbnailList: View {
- @EnvironmentObject var photosLibrary: PhotosLibrary
-
- @Binding var selectedAssetIndex: Int
-
- private var assets: PHFetchResultCollection {
- return PHFetchResultCollection(photosLibrary.assets2)
- }
-
- var body: some View {
- ScrollViewReader { proxy in
- ScrollView(.horizontal) {
- LazyHStack(spacing: 5) {
- // TODO: placeholder images for start/end
-
- // Implementation note: we use the localIdentifier rather than the
- // array index as the id here, because the app gets way slower if
- // you use the array index -- it tries to regenerate a bunch of
- // the thumbnails every time you change position.
-
- // wassup with reversing???? lazy loading innit
- ForEach(Array(zip(assets.indices, assets)), id: \.1.localIdentifier) { index, asset in
- // Text("asset \(index)")
- ThumbnailImage(
- thumbnail: PHAssetImage(asset, size: CGSize(width: 70, height: 70), deliveryMode: .opportunistic),
- state: photosLibrary.state(of: asset),
- isFavorite: asset.isFavorite,
- isSelected: photosLibrary.assets2.count - 1 - index == selectedAssetIndex
- ).onTapGesture {
- selectedAssetIndex = photosLibrary.assets2.count - 1 - index
- }
- }
-
- // Note: these two uses of RTL direction are a way to get the LazyHStack
- // to start on the right-hand side (i.e. the newest image) without loading
- // everything else in the view.
- //
- // I suspect this may get easier with the new scrollPosition API, coming
- // in the 2023 OS releases. TODO: Investigate this new API when available.
- //
- // See https://developer.apple.com/documentation/swiftui/view/scrollposition(initialanchor:)
- .flipsForRightToLeftLayoutDirection(true)
- .environment(\.layoutDirection, .rightToLeft)
- }.padding()
- }
- .frame(height: 90)
- .flipsForRightToLeftLayoutDirection(true)
- .environment(\.layoutDirection, .rightToLeft)
- .onChange(of: selectedAssetIndex, perform: { newIndex in
- // fires on change + initial run
- withAnimation {
- proxy.scrollTo(assets[photosLibrary.assets2.count - 1 - selectedAssetIndex].localIdentifier, anchor: .center)
- }
- })
- }
- }
-}
BlinkReviewer/BlinkReviewer/Views/Thumbnails/NewThumbnailImage.swift (1932) → BlinkReviewer/BlinkReviewer/Views/Thumbnails/NewThumbnailImage.swift (1956)
diff --git a/BlinkReviewer/BlinkReviewer/Views/Thumbnails/NewThumbnailImage.swift b/BlinkReviewer/BlinkReviewer/Views/Thumbnails/NewThumbnailImage.swift
index 6b3f7a8..47d51f8 100644
--- a/BlinkReviewer/BlinkReviewer/Views/Thumbnails/NewThumbnailImage.swift
+++ b/BlinkReviewer/BlinkReviewer/Views/Thumbnails/NewThumbnailImage.swift
@@ -24,7 +24,7 @@ struct NewThumbnailImage: View {
// `body` method, which is too late! So instead we have the parent
// view call into PhotosLibrary and pass in the relevant values here.
init(_ assetImage: PHAssetImage, state: ReviewState?, isFavorite: Bool, isFocused: Bool) {
- print("Redrawing thumbnail image! \(assetImage.asset?.localIdentifier ?? "(unknown)")")
+ print("Redrawing thumbnail image! \(assetImage.asset?.localIdentifier ?? "(unknown)") @ \(DispatchTime.now())")
self.assetImage = assetImage
self.state = state