@@ -13,11 +13,11 @@ class DimScreenSwitch: SwitchProvider {
13
13
enum DimScreenError : Error {
14
14
case brightnessTooLow
15
15
}
16
-
16
+
17
17
var type : SwitchType = . dimScreen
18
-
18
+
19
19
var delegate : SwitchDelegate ?
20
-
20
+
21
21
private var isDimming : Bool = false {
22
22
didSet {
23
23
timerCounter = 0
@@ -30,11 +30,11 @@ class DimScreenSwitch: SwitchProvider {
30
30
private let timer = Timer . publish ( every: 1 , on: . main, in: . common) . autoconnect ( )
31
31
private var timerCounter = 0
32
32
private var cancellable = Set < AnyCancellable > ( )
33
-
33
+
34
34
private var durationBySecond : Int {
35
35
autoDimScreenTime * 60 //persistance unit is min, here is second
36
36
}
37
-
37
+
38
38
init ( ) {
39
39
NotificationCenter . default. addObserver ( forName: . changeDimScreenSetting, object: nil , queue: . main) { [ weak self] _ in
40
40
guard let strongSelf = self else { return }
@@ -46,34 +46,38 @@ class DimScreenSwitch: SwitchProvider {
46
46
}
47
47
strongSelf. autoDimScreenTime = Preferences . shared. autoDimScreenTime
48
48
}
49
-
49
+
50
50
setTimer ( )
51
51
}
52
-
52
+
53
53
deinit {
54
54
cancellable. removeAll ( )
55
55
}
56
-
56
+
57
57
func currentStatus( ) -> Bool {
58
58
return isDimming
59
59
}
60
-
60
+
61
61
func currentInfo( ) -> String {
62
62
return " Built-in Screen "
63
63
}
64
-
64
+
65
65
func operateSwitch( isOn: Bool ) async throws {
66
66
if isOn {
67
67
try dimScreen ( )
68
68
} else {
69
69
restoreScreen ( )
70
70
}
71
71
}
72
-
72
+
73
73
func isVisible( ) -> Bool {
74
- return true
74
+ if #available( macOS 15 . 0 , * ) {
75
+ return false
76
+ } else {
77
+ return true
78
+ }
75
79
}
76
-
80
+
77
81
private func setTimer( ) {
78
82
timer. sink { _ in
79
83
guard !self . isDimming, self . autoDimScreenTime != 0 else { return } //switch is on and duration isn't never
@@ -85,22 +89,22 @@ class DimScreenSwitch: SwitchProvider {
85
89
}
86
90
} . store ( in: & cancellable)
87
91
}
88
-
92
+
89
93
private func dimScreen( ) throws {
90
94
manager. configureDisplays ( )
91
95
originalBrightness = manager. getBrightness ( )
92
96
try modifyDimPercent ( )
93
97
isDimming = true
94
98
}
95
-
99
+
96
100
private func modifyDimPercent( ) throws {
97
101
let dimBrightness = originalBrightness * dimPercent
98
102
guard dimBrightness >= 0.15 else { // the minimum brightness is 0.15
99
103
throw DimScreenError . brightnessTooLow
100
104
}
101
105
manager. setBrightness ( level: dimBrightness)
102
106
}
103
-
107
+
104
108
private func restoreScreen( ) {
105
109
manager. configureDisplays ( )
106
110
manager. setBrightness ( level: originalBrightness)
0 commit comments