Skip to main content

Add a little heart overlay for favorites

ID
3c2551b
date
2023-06-08 12:10:21+00:00
author
Alex Chan <alex@alexwlchan.net>
parent
7dd10e9
message
Add a little heart overlay for favorites
changed files
2 files, 12 additions, 12 deletions

Changed files

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

diff --git a/BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift b/BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift
index 2eed657..dba8cd7 100644
--- a/BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift
+++ b/BlinkReviewer/BlinkReviewer/Views/ThumbnailImage.swift
@@ -6,13 +6,14 @@
 //
 
 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 {
-    var thumbnail: NSImage
+    var asset: PHAsset
     var isSelected: Bool
     
     var size: CGFloat {
@@ -20,7 +21,7 @@ struct ThumbnailImage: View {
     }
     
     var body: some View {
-        Image(nsImage: thumbnail)
+        Image(nsImage: asset.getThumbnail())
             .resizable()
             // Note: it's taken several attempts to get this working correctly;
             // it behaves differently in the running app to the SwiftUI preview.
@@ -34,14 +35,13 @@ struct ThumbnailImage: View {
             .scaledToFill()
             .frame(width: size, height: size, alignment: .center)
             .clipped()
-    }
-}
-
-struct ThumbnailItem_Previews: PreviewProvider {
-    static var previews: some View {
-        ThumbnailImage(
-            thumbnail: NSImage(named: "IMG_5934")!,
-            isSelected: true
-        )
+            .overlay(alignment: Alignment(horizontal: .leading, vertical: .bottom)) {
+                if (asset.isFavorite) {
+                    Image(systemName: "heart.fill")
+                        .foregroundColor(.white)
+                        .padding(2)
+                        .shadow(radius: 2.0)
+                }
+            }
     }
 }

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

diff --git a/BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift b/BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift
index fa3d18b..caa6486 100644
--- a/BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift
+++ b/BlinkReviewer/BlinkReviewer/Views/ThumbnailList.swift
@@ -32,7 +32,7 @@ struct ThumbnailList: View {
                     // the thumbnails every time you change position.
                     ForEach(Array(displayAssets().enumerated()), id: \.element.localIdentifier) { index, asset in
                         ThumbnailImage(
-                            thumbnail: asset.getThumbnail(),
+                            asset: asset,
                             isSelected: displayAssets()[displaySelectedAssetIndex()].localIdentifier == asset.localIdentifier
                         ).onTapGesture {
                             selectedAssetIndex = assets.count - 1 - index