Page Menu
Home
Musing Studio
Search
Configure Global Search
Log In
Files
F10669333
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
5 KB
Subscribers
None
View Options
diff --git a/Shared/Navigation/ContentView.swift b/Shared/Navigation/ContentView.swift
index 16cb4b1..b404072 100644
--- a/Shared/Navigation/ContentView.swift
+++ b/Shared/Navigation/ContentView.swift
@@ -1,23 +1,25 @@
import SwiftUI
struct ContentView: View {
@ObservedObject var postStore: PostStore
+ @ObservedObject var preferences: PreferencesModel
var body: some View {
NavigationView {
SidebarView()
PostList(selectedCollection: allPostsCollection)
Text("Select a post, or create a new draft.")
.foregroundColor(.secondary)
}
.environmentObject(postStore)
+ .environmentObject(preferences)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
- ContentView(postStore: testPostStore)
+ ContentView(postStore: testPostStore, preferences: PreferencesModel())
}
}
diff --git a/Shared/Preferences/PreferencesView.swift b/Shared/Preferences/PreferencesView.swift
index 290dd46..e45ff17 100644
--- a/Shared/Preferences/PreferencesView.swift
+++ b/Shared/Preferences/PreferencesView.swift
@@ -1,28 +1,28 @@
import SwiftUI
struct PreferencesView: View {
- @State private var appearance: Int = 0
+ @ObservedObject var preferences: PreferencesModel
var body: some View {
#if os(iOS)
- Picker(selection: $appearance, label: Text("Appearance")) {
+ Picker(selection: $preferences.appearance, label: Text("Appearance")) {
Text("System").tag(0)
Text("Light Mode").tag(1)
Text("Dark Mode").tag(2)
}
.pickerStyle(SegmentedPickerStyle())
#elseif os(macOS)
- Picker(selection: $appearance, label: Text("Appearance")) {
+ Picker(selection: $preferences.appearance, label: Text("Appearance")) {
Text("System").tag(0)
Text("Light Mode").tag(1)
Text("Dark Mode").tag(2)
}
#endif
}
}
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
- PreferencesView()
+ PreferencesView(preferences: PreferencesModel())
}
}
diff --git a/Shared/WriteFreely_MultiPlatformApp.swift b/Shared/WriteFreely_MultiPlatformApp.swift
index d96c106..1b426da 100644
--- a/Shared/WriteFreely_MultiPlatformApp.swift
+++ b/Shared/WriteFreely_MultiPlatformApp.swift
@@ -1,24 +1,27 @@
import SwiftUI
@main
struct WriteFreely_MultiPlatformApp: App {
+ @StateObject private var preferences = PreferencesModel()
+
#if DEBUG
@StateObject private var store = testPostStore
#else
@StateObject private var store = PostStore()
#endif
var body: some Scene {
WindowGroup {
- ContentView(postStore: store)
+ ContentView(postStore: store, preferences: preferences)
+ .environment(\.colorScheme, preferences.preferredColorScheme)
}
#if os(macOS)
Settings {
- SettingsView()
+ SettingsView(preferences: preferences)
.frame(minWidth: 300, maxWidth: 300, minHeight: 200, maxHeight: 200)
.padding()
}
#endif
}
}
diff --git a/iOS/Settings/SettingsView.swift b/iOS/Settings/SettingsView.swift
index daed735..50ad760 100644
--- a/iOS/Settings/SettingsView.swift
+++ b/iOS/Settings/SettingsView.swift
@@ -1,25 +1,28 @@
import SwiftUI
struct SettingsView: View {
+ @EnvironmentObject var preferences: PreferencesModel
+
@Binding var isPresented: Bool
var body: some View {
VStack {
SettingsHeaderView(isPresented: $isPresented)
Form {
Section(header: Text("Login Details")) {
AccountView()
}
Section(header: Text("Appearance")) {
- PreferencesView()
+ PreferencesView(preferences: preferences)
}
}
}
+ .preferredColorScheme(preferences.preferredColorScheme)
}
}
struct SettingsView_Previews: PreviewProvider {
static var previews: some View {
SettingsView(isPresented: .constant(true))
}
}
diff --git a/macOS/Settings/SettingsView.swift b/macOS/Settings/SettingsView.swift
index 40af22c..b4b9393 100644
--- a/macOS/Settings/SettingsView.swift
+++ b/macOS/Settings/SettingsView.swift
@@ -1,41 +1,43 @@
import SwiftUI
struct SettingsView: View {
+ @ObservedObject var preferences: PreferencesModel
+
@State var selectedView = 0
var body: some View {
TabView(selection: $selectedView) {
Form {
Section(header: Text("Login Details")) {
AccountView()
}
}
.tabItem {
Image(systemName: "person.crop.circle")
Text("Account")
}
.tag(0)
VStack {
- PreferencesView()
+ PreferencesView(preferences: preferences)
Spacer()
}
.tabItem {
Image(systemName: "gear")
Text("Preferences")
}
.tag(1)
}
}
}
struct SettingsView_AccountTabPreviews: PreviewProvider {
static var previews: some View {
- SettingsView(selectedView: 0)
+ SettingsView(preferences: PreferencesModel(), selectedView: 0)
}
}
struct SettingsView_PreferencesTabPreviews: PreviewProvider {
static var previews: some View {
- SettingsView(selectedView: 1)
+ SettingsView(preferences: PreferencesModel(), selectedView: 1)
}
}
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Fri, May 16, 2:11 AM (1 d, 9 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3238784
Attached To
rWFSUI WriteFreely SwiftUI
Event Timeline
Log In to Comment