add a big image, implement basic back/forth navigation
- ID
416432b- date
2023-06-09 22:39:27+00:00- author
Alex Chan <alex@alexwlchan.net>- parent
8039a1d- message
add a big image, implement basic back/forth navigation- changed files
2 files, 66 additions, 1 deletion
Changed files
BlinkReviewer/BlinkReviewer/Views/BigImage/BigImage.swift (0) → BlinkReviewer/BlinkReviewer/Views/BigImage/BigImage.swift (646)
diff --git a/BlinkReviewer/BlinkReviewer/Views/BigImage/BigImage.swift b/BlinkReviewer/BlinkReviewer/Views/BigImage/BigImage.swift
new file mode 100644
index 0000000..0d3b20e
--- /dev/null
+++ b/BlinkReviewer/BlinkReviewer/Views/BigImage/BigImage.swift
@@ -0,0 +1,30 @@
+//
+// BigImage.swift
+// BlinkReviewer
+//
+// Created by Alex Chan on 09/06/2023.
+//
+
+import SwiftUI
+import Photos
+
+struct BigImage: View {
+ @State var asset: PHAsset
+ @ObservedObject var assetImage: PHAssetImage
+
+ init(_ asset: PHAsset) {
+ print("creating an instance of BigImage!")
+ self.asset = asset
+ self.assetImage = PHAssetImage(
+ asset,
+ size: PHImageManagerMaximumSize,
+ deliveryMode: .highQualityFormat
+ )
+ }
+
+ var body: some View {
+ Image(nsImage: assetImage.image)
+ .resizable()
+ .aspectRatio(contentMode: .fit)
+ }
+}
BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift (7686) → BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift (8844)
diff --git a/BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift b/BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift
index d3cb34a..9472eb4 100644
--- a/BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift
+++ b/BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift
@@ -5,6 +5,7 @@
// Created by Alex Chan on 08/06/2023.
//
+import OSLog
import SwiftUI
import Photos
@@ -37,7 +38,19 @@ struct PhotoReviewer: View {
NewThumbnailImage(asset, isFocused: index == focusedAssetIndex)
.environmentObject(photosLibrary)
}
+ .frame(height: 90)
+
+ BigImage(focusedAsset)
+
+ Spacer()
}
+ }
+ .onAppear {
+ NSEvent.addLocalMonitorForEvents(matching: .keyDown) { event in
+ handleKeyEventNew(event)
+ return event
+ }
+ }
//
// VStack {
// let binding = Binding {
@@ -89,11 +102,33 @@ struct PhotoReviewer: View {
// }
// .padding()
// }.padding()
- }
+// }
} else {
Text("Waiting for Photos Library authorization…")
}
}
+
+ private func handleKeyEventNew(_ event: NSEvent) {
+ let logger = Logger()
+
+ switch event {
+ case let e where e.specialKey == NSEvent.SpecialKey.leftArrow:
+ print("to the left!")
+ if focusedAssetIndex < photosLibrary.assets2.count - 1 {
+ focusedAssetIndex += 1
+ }
+
+ case let e where e.specialKey == NSEvent.SpecialKey.rightArrow:
+ print("to the right!")
+ if focusedAssetIndex > 0 {
+ focusedAssetIndex -= 1
+ }
+
+ default:
+ logger.info("Received unhandled keyboard event: \(event, privacy: .public)")
+ break
+ }
+ }
private func handleKeyEvent(_ event: NSEvent) {
let asset = photosLibrary.assets2.object(at: photosLibrary.assets2.count - 1 - selectedAssetIndex)