Skip to main content

start adding review states

ID
ae1b773
date
2023-06-08 12:37:17+00:00
author
Alex Chan <alex@alexwlchan.net>
parent
3c2551b
message
start adding review states
changed files
2 files, 56 additions, 1 deletion

Changed files

BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift (1422) → BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift (3039)

diff --git a/BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift b/BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift
index dba8cd7..64dfb7e 100644
--- a/BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift
+++ b/BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift
@@ -8,6 +8,12 @@
 import SwiftUI
 import Photos
 
+enum ReviewState {
+    case Approved
+    case Rejected
+    case NeedsAction
+}
+
 /// Renders a square thumbnail for an image.
 ///
 /// The image will be expanded to fill the square, and may be clipped
@@ -20,6 +26,42 @@ struct ThumbnailImage: View {
         isSelected ? 70.0 : 50.0
     }
     
+    var state: ReviewState? {
+        var result: ReviewState? = nil
+        
+        asset.albums().forEach { album in
+            switch (album.localizedTitle) {
+                case "Approved":
+                    result = .Approved
+                case "Rejected":
+                    result = .Rejected
+                case "Needs Action":
+                    result = .NeedsAction
+                default:
+                    break
+            }
+        }
+        
+        return result
+    }
+    
+    var stateColor: Color {
+        switch (state) {
+            case .Approved:
+                return .green
+            case .Rejected:
+                return .red
+            case .NeedsAction:
+                return .blue
+            default:
+                return .gray.opacity(0.5)
+        }
+    }
+    
+    var cornerRadius: CGFloat {
+        return isSelected ? 7.0 : 5.0
+    }
+    
     var body: some View {
         Image(nsImage: asset.getThumbnail())
             .resizable()
@@ -35,6 +77,12 @@ struct ThumbnailImage: View {
             .scaledToFill()
             .frame(width: size, height: size, alignment: .center)
             .clipped()
+            .cornerRadius(cornerRadius)
+            .overlay(
+                // https://www.appcoda.com/swiftui-border/
+                RoundedRectangle(cornerRadius: cornerRadius)
+                    .stroke(stateColor, lineWidth: state != nil ? 3.0 : 1.0)
+            )
             .overlay(alignment: Alignment(horizontal: .leading, vertical: .bottom)) {
                 if (asset.isFavorite) {
                     Image(systemName: "heart.fill")
@@ -43,5 +91,12 @@ struct ThumbnailImage: View {
                         .shadow(radius: 2.0)
                 }
             }
+            .overlay(alignment: Alignment(horizontal: .leading, vertical: .top)) {
+                if (state != nil) {
+                    Image(systemName: "checkmark.circle.fill").foregroundColor(stateColor).accentColor(.white).padding(2).font(.title2)
+//                    "info.circle.fill"
+//                    "trash.circle.fill
+                }
+            }
     }
 }

BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift (2810) → BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift (2810)

diff --git a/BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift b/BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift
index caa6486..cec0cdb 100644
--- a/BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift
+++ b/BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift
@@ -50,7 +50,7 @@ struct ThumbnailList: View {
                         .environment(\.layoutDirection, .rightToLeft)
                     }.padding()
             }
-                .frame(height: 70)
+                .frame(height: 90)
                 .flipsForRightToLeftLayoutDirection(true)
                 .environment(\.layoutDirection, .rightToLeft)
                 .onChange(of: selectedAssetIndex, perform: { newIndex in