@@ -4,6 +4,32 @@ struct SettingsView: View {
44 @EnvironmentObject var gestureManager : GestureManager
55 @AppStorage ( " gestureMode " ) private var gestureMode = " doubleTap "
66 @AppStorage ( " invertCrown " ) private var invertCrown = false
7+ @AppStorage ( " crownControlEnabled " ) private var crownControlEnabled = true
8+ @AppStorage ( " crownDetentsPerSlide " ) private var crownDetentsPerSlide = 1
9+
10+ private var crownFooterText : String {
11+ guard crownControlEnabled else {
12+ return " Digital Crown slide navigation is disabled to prevent accidental slide changes. "
13+ }
14+
15+ let direction = invertCrown
16+ ? " clockwise = previous slide, counterclockwise = next slide "
17+ : " clockwise = next slide, counterclockwise = previous slide "
18+
19+ let sensitivity : String
20+ switch crownDetentsPerSlide {
21+ case 1 :
22+ sensitivity = " Fast: every crown detent advances a slide. "
23+ case 2 :
24+ sensitivity = " Balanced: two detents are required per slide. "
25+ case 3 :
26+ sensitivity = " Deliberate: three detents are required per slide. "
27+ default :
28+ sensitivity = " Locked-in: five detents are required per slide. "
29+ }
30+
31+ return " \( sensitivity) Crown \( direction) . "
32+ }
733
834 var body : some View {
935 List {
@@ -71,14 +97,26 @@ struct SettingsView: View {
7197 }
7298
7399 Section {
100+ Toggle ( isOn: $crownControlEnabled) {
101+ Label ( " Crown Control " , systemImage: " digitalcrown.horizontal.arrow.clockwise " )
102+ . font ( . system( size: 15 ) )
103+ }
104+
105+ Picker ( " Sensitivity " , selection: $crownDetentsPerSlide) {
106+ Text ( " Fast " ) . tag ( 1 )
107+ Text ( " Balanced " ) . tag ( 2 )
108+ Text ( " Deliberate " ) . tag ( 3 )
109+ Text ( " Locked-in " ) . tag ( 5 )
110+ }
111+ . disabled ( !crownControlEnabled)
112+
74113 Toggle ( isOn: $invertCrown) {
75114 Label ( " Invert Crown " , systemImage: " digitalcrown.horizontal.arrow.counterclockwise " )
76115 . font ( . system( size: 15 ) )
77116 }
117+ . disabled ( !crownControlEnabled)
78118 } footer: {
79- Text ( invertCrown
80- ? " Crown clockwise = previous slide, counterclockwise = next slide. "
81- : " Crown clockwise = next slide, counterclockwise = previous slide. " )
119+ Text ( crownFooterText)
82120 . font ( . system( size: 11 ) )
83121 . foregroundColor ( . secondary)
84122 }
0 commit comments