Skip to main content

Add a basic info overlay; right-align info

ID
e4749db
date
2023-06-10 23:15:11+00:00
author
Alex Chan <alex@alexwlchan.net>
parent
698a0e6
message
Add a basic info overlay; right-align info
changed files
5 files, 68 additions, 11 deletions

Changed files

BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj (32078) → BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj (32472)

diff --git a/BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj b/BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj
index 095368c..c02341f 100644
--- a/BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj
+++ b/BlinkReviewer/BlinkReviewer.xcodeproj/project.pbxproj
@@ -8,6 +8,7 @@
 
 /* Begin PBXBuildFile section */
 		940331732A336B5100200C5D /* DeferredRendering.swift in Sources */ = {isa = PBXBuildFile; fileRef = 940331722A336B5100200C5D /* DeferredRendering.swift */; };
+		941E18FA2A35362600A2EA98 /* Info.swift in Sources */ = {isa = PBXBuildFile; fileRef = 941E18F92A35362600A2EA98 /* Info.swift */; };
 		945F17B02A33D167004FC479 /* ThumbnailImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945F17AF2A33D167004FC479 /* ThumbnailImage.swift */; };
 		945F17B22A33D69B004FC479 /* FavoriteOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945F17B12A33D69B004FC479 /* FavoriteOverlay.swift */; };
 		945F17B42A33D726004FC479 /* ReviewStateIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945F17B32A33D726004FC479 /* ReviewStateIcon.swift */; };
@@ -54,6 +55,7 @@
 
 /* Begin PBXFileReference section */
 		940331722A336B5100200C5D /* DeferredRendering.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeferredRendering.swift; sourceTree = "<group>"; };
+		941E18F92A35362600A2EA98 /* Info.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Info.swift; sourceTree = "<group>"; };
 		945F17AF2A33D167004FC479 /* ThumbnailImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThumbnailImage.swift; sourceTree = "<group>"; };
 		945F17B12A33D69B004FC479 /* FavoriteOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoriteOverlay.swift; sourceTree = "<group>"; };
 		945F17B32A33D726004FC479 /* ReviewStateIcon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewStateIcon.swift; sourceTree = "<group>"; };
@@ -148,6 +150,7 @@
 			children = (
 				94F7E39D2A331A9E00763DB9 /* Statistics.swift */,
 				94A083652A33F50900238964 /* Debug.swift */,
+				941E18F92A35362600A2EA98 /* Info.swift */,
 			);
 			path = Info;
 			sourceTree = "<group>";
@@ -393,6 +396,7 @@
 				94D2C8B92A320E6F00BEE15B /* ReviewState.swift in Sources */,
 				94F7E39E2A331A9E00763DB9 /* Statistics.swift in Sources */,
 				94D2C8C12A32FCE300BEE15B /* PHAssetImage.swift in Sources */,
+				941E18FA2A35362600A2EA98 /* Info.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

BlinkReviewer/BlinkReviewer/Photos/AssetHelpers.swift (2360) → BlinkReviewer/BlinkReviewer/Photos/AssetHelpers.swift (2485)

diff --git a/BlinkReviewer/BlinkReviewer/Photos/AssetHelpers.swift b/BlinkReviewer/BlinkReviewer/Photos/AssetHelpers.swift
index dec461e..6c7eb49 100644
--- a/BlinkReviewer/BlinkReviewer/Photos/AssetHelpers.swift
+++ b/BlinkReviewer/BlinkReviewer/Photos/AssetHelpers.swift
@@ -21,6 +21,10 @@ extension PHAsset {
         
         return result
     }
+    
+    func originalFilename() -> String {
+        PHAssetResource.assetResources(for: self).first!.originalFilename
+    }
 
     /// Returns true if an asset is in the given album, false otherwise.
     private func isInAlbum(_ album: PHAssetCollection) -> Bool {

BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift (6188) → BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift (6187)

diff --git a/BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift b/BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift
index 24a5830..5acd571 100644
--- a/BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift
+++ b/BlinkReviewer/BlinkReviewer/Photos/PhotosLibrary.swift
@@ -75,7 +75,6 @@ class PhotosLibrary: NSObject, ObservableObject, PHPhotoLibraryChangeObserver {
         }
     }
 
-
     private func getInitialData() {
         DispatchQueue.main.async {
             let start = DispatchTime.now()

BlinkReviewer/BlinkReviewer/Views/Info/Info.swift (0) → BlinkReviewer/BlinkReviewer/Views/Info/Info.swift (1020)

diff --git a/BlinkReviewer/BlinkReviewer/Views/Info/Info.swift b/BlinkReviewer/BlinkReviewer/Views/Info/Info.swift
new file mode 100644
index 0000000..40f3963
--- /dev/null
+++ b/BlinkReviewer/BlinkReviewer/Views/Info/Info.swift
@@ -0,0 +1,37 @@
+import SwiftUI
+import Photos
+
+/// Show some info about the asset.
+struct Info: View {
+    var asset: PHAsset
+    
+    var body: some View {
+        HStack {
+            HStack {
+                Image(systemName: "calendar")
+                Text("\(asset.creationDate?.ISO8601Format() ?? "(unknown)")")
+            }
+                .font(.title)
+                .padding(10)
+                .foregroundColor(.white)
+                .background(.black.opacity(0.7))
+                .cornerRadius(7.0)
+                .shadow(radius: 2.0)
+                .textSelection(.enabled)
+            
+            HStack {
+                Image(systemName: "doc")
+                Text(asset.originalFilename())
+            }
+                .font(.title)
+                .padding(10)
+                .foregroundColor(.white)
+                .background(.black.opacity(0.7))
+                .cornerRadius(7.0)
+                .shadow(radius: 2.0)
+                .textSelection(.enabled)
+            
+        }
+            
+    }
+}

BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift (7657) → BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift (8102)

diff --git a/BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift b/BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift
index 69a8262..ece2d8d 100644
--- a/BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift
+++ b/BlinkReviewer/BlinkReviewer/Views/PhotoReviewer.swift
@@ -27,6 +27,7 @@ struct PhotoReviewer: View {
     
     @State var showStatistics: Bool = false
     @State var showDebug: Bool = false
+    @State var showInfo: Bool = false
     
     // This contains the big image that is currently in focus.  See the comments
     // on FocusedImage for why this state is defined outside that view.
@@ -51,20 +52,29 @@ struct PhotoReviewer: View {
                     Spacer()
                 }
                 
-                HStack {
+                VStack {
                     Spacer()
                     
-                    VStack {
-                        Spacer()
-                        
-                        if showDebug {
+                    if showDebug {
+                        HStack {
+                            Spacer()
                             Debug(asset: focusedAsset, focusedAssetIndex: focusedAssetIndex)
-                        }
-                        
-                        if showStatistics {
+                        }.padding()
+                    }
+                    
+                    if showInfo {
+                        HStack {
+                            Spacer()
+                            Info(asset: focusedAsset)
+                        }.padding()
+                    }
+                    
+                    if showStatistics {
+                        HStack {
+                            Spacer()
                             Statistics().environmentObject(photosLibrary)
-                        }
-                    }.padding()
+                        }.padding()
+                    }
                 }.padding()
             }
             .background(.black)
@@ -163,6 +173,9 @@ struct PhotoReviewer: View {
             case let e where e.characters == "s":
                 showStatistics.toggle()
             
+            case let e where e.characters == "i":
+                showInfo.toggle()
+            
             case let e where e.characters == "u":
                 if photosLibrary.state(of: focusedAsset) != nil {
                     if let lastUnreviewed = (focusedAssetIndex..<photosLibrary.assets2.count).first(where: { index in