Add support for light/dark mode and a setting
- ID
bd29fe6- date
2023-06-18 07:43:21+00:00- author
Alex Chan <alex@alexwlchan.net>- parent
097102b- message
Add support for light/dark mode and a setting- changed files
Changed files
BlinkReviewer/Blink.xcodeproj/project.pbxproj (34735) → BlinkReviewer/Blink.xcodeproj/project.pbxproj (35177)
diff --git a/BlinkReviewer/Blink.xcodeproj/project.pbxproj b/BlinkReviewer/Blink.xcodeproj/project.pbxproj
index bd4177c..7e5fe81 100644
--- a/BlinkReviewer/Blink.xcodeproj/project.pbxproj
+++ b/BlinkReviewer/Blink.xcodeproj/project.pbxproj
@@ -8,6 +8,7 @@
/* Begin PBXBuildFile section */
940331732A336B5100200C5D /* DeferredRendering.swift in Sources */ = {isa = PBXBuildFile; fileRef = 940331722A336B5100200C5D /* DeferredRendering.swift */; };
+ 9404B57D2A3EEBBA00068FA8 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9404B57C2A3EEBBA00068FA8 /* SettingsView.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 */; };
@@ -58,6 +59,7 @@
/* Begin PBXFileReference section */
940331722A336B5100200C5D /* DeferredRendering.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeferredRendering.swift; sourceTree = "<group>"; };
+ 9404B57C2A3EEBBA00068FA8 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.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>"; };
@@ -247,6 +249,7 @@
940331742A336BEB00200C5D /* Helpers */,
94D751212A31BD8E005859E7 /* PhotoReviewer.swift */,
94D2C8C02A32FCE300BEE15B /* PHAssetImage.swift */,
+ 9404B57C2A3EEBBA00068FA8 /* SettingsView.swift */,
);
path = Views;
sourceTree = "<group>";
@@ -434,6 +437,7 @@
94A083682A33F6E900238964 /* ThumbnailList.swift in Sources */,
94D750F02A31A796005859E7 /* BlinkApp.swift in Sources */,
940331732A336B5100200C5D /* DeferredRendering.swift in Sources */,
+ 9404B57D2A3EEBBA00068FA8 /* SettingsView.swift in Sources */,
9492C9702A3C3803002E44EC /* Timer.swift in Sources */,
94A0835E2A33E49E00238964 /* FocusedImage.swift in Sources */,
945F17B82A33DAC7004FC479 /* ReviewStateSaturation.swift in Sources */,
@@ -600,7 +604,7 @@
CODE_SIGN_ENTITLEMENTS = Blink/Blink.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
- CURRENT_PROJECT_VERSION = 77;
+ CURRENT_PROJECT_VERSION = 86;
DEVELOPMENT_ASSET_PATHS = "\"Blink/Preview Content\"";
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
@@ -627,7 +631,7 @@
CODE_SIGN_ENTITLEMENTS = Blink/Blink.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
- CURRENT_PROJECT_VERSION = 77;
+ CURRENT_PROJECT_VERSION = 86;
DEVELOPMENT_ASSET_PATHS = "\"Blink/Preview Content\"";
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
@@ -652,7 +656,7 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 77;
+ CURRENT_PROJECT_VERSION = 86;
GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 13.3;
MARKETING_VERSION = 1.0;
@@ -670,7 +674,7 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 77;
+ CURRENT_PROJECT_VERSION = 86;
GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 13.3;
MARKETING_VERSION = 1.0;
@@ -687,7 +691,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 77;
+ CURRENT_PROJECT_VERSION = 86;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = net.alexwlchan.BlinkReviewerUITests;
@@ -703,7 +707,7 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 77;
+ CURRENT_PROJECT_VERSION = 86;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = net.alexwlchan.BlinkReviewerUITests;
BlinkReviewer/Blink/BlinkApp.swift (657) → BlinkReviewer/Blink/BlinkApp.swift (1150)
diff --git a/BlinkReviewer/Blink/BlinkApp.swift b/BlinkReviewer/Blink/BlinkApp.swift
index 7d6055f..fface23 100644
--- a/BlinkReviewer/Blink/BlinkApp.swift
+++ b/BlinkReviewer/Blink/BlinkApp.swift
@@ -9,6 +9,8 @@ import SwiftUI
@main
struct BlinkApp: App {
+ @AppStorage("colorScheme") private var colorScheme: String = "dark"
+
let photosLibrary = PhotosLibrary()
var body: some Scene {
@@ -19,7 +21,25 @@ struct BlinkApp: App {
//
// See https://www.optionalmap.com/posts/swiftui_single_window_app/
Window("Blink", id: "main") {
- PhotoReviewer().environmentObject(photosLibrary)
+ PhotoReviewer()
+ .environmentObject(photosLibrary)
+ .preferredColorScheme(preferredColorScheme())
+ }
+
+ Settings {
+ SettingsView()
}
}
+
+ private func preferredColorScheme() -> ColorScheme? {
+ switch(colorScheme) {
+ case "dark":
+ return .dark
+ case "light":
+ return .light
+ default:
+ return nil
+ }
+ }
+
}
BlinkReviewer/Blink/Views/PhotoReviewer.swift (13094) → BlinkReviewer/Blink/Views/PhotoReviewer.swift (13062)
diff --git a/BlinkReviewer/Blink/Views/PhotoReviewer.swift b/BlinkReviewer/Blink/Views/PhotoReviewer.swift
index 2d35372..d43334f 100644
--- a/BlinkReviewer/Blink/Views/PhotoReviewer.swift
+++ b/BlinkReviewer/Blink/Views/PhotoReviewer.swift
@@ -43,7 +43,7 @@ struct PhotoReviewer: View {
ThumbnailList(focusedAssetIndex: $focusedAssetIndex)
.environmentObject(photosLibrary)
.frame(height: 90)
- .background(.gray.opacity(0.3))
+ .background(.gray.opacity(0.2))
FocusedImage(
asset: focusedAsset,
@@ -78,7 +78,6 @@ struct PhotoReviewer: View {
}
}.padding()
}
- .background(.black)
.onAppear {
NSEvent.addLocalMonitorForEvents(
matching: .keyDown,
BlinkReviewer/Blink/Views/SettingsView.swift (0) → BlinkReviewer/Blink/Views/SettingsView.swift (512)
diff --git a/BlinkReviewer/Blink/Views/SettingsView.swift b/BlinkReviewer/Blink/Views/SettingsView.swift
new file mode 100644
index 0000000..b7b26af
--- /dev/null
+++ b/BlinkReviewer/Blink/Views/SettingsView.swift
@@ -0,0 +1,24 @@
+//
+// SettingsView.swift
+// Blink
+//
+// Created by Alex Chan on 18/06/2023.
+//
+
+import SwiftUI
+
+struct SettingsView: View {
+ @AppStorage("colorScheme") private var colorScheme: String = "dark"
+
+ var body: some View {
+ VStack {
+ Picker("Appearance", selection: $colorScheme) {
+ Text("Dark").tag("dark")
+ Text("Light").tag("light")
+ Text("Match system").tag("match_system")
+ }
+ }
+ .padding()
+ }
+
+}