1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
/*
Copyright (C) 2024 Rubén Beltrán del Río
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see https://captura.tranquil.systems.
*/
import SwiftUI
struct OutputSettings: View {
@AppStorage("outputFormats") var outputFormats: OutputFormatSetting = .all
@AppStorage("frameRate") var frameRate = 10.0
private var anyState: String { "\(outputFormats), \(frameRate)" }
var body: some View {
Form {
VStack(alignment: .center) {
LabeledContent("GIF Framerate") {
Slider(value: $frameRate, in: 4...10, step: 1) {
Text("\(Int(frameRate))").font(.body).frame(width: 24)
} minimumValueLabel: {
Text("4")
} maximumValueLabel: {
Text("10")
}
}.font(.headline)
Picker(selection: $outputFormats, label: Text("Output Formats").font(.headline)) {
Text("GIF & MP4")
.tag(OutputFormatSetting.all)
.padding(.horizontal, 4.0)
.padding(.vertical, 2.0)
Text("Only GIF")
.tag(OutputFormatSetting.gifOnly)
.padding(.horizontal, 4.0)
.padding(.vertical, 2.0)
Text("Only MP4")
.tag(OutputFormatSetting.mp4Only)
.padding(.horizontal, 4.0)
.padding(.vertical, 2.0)
}.pickerStyle(.radioGroup)
}
Spacer()
}
.onChange(of: anyState) { _ in
NotificationCenter.default.post(name: .reloadConfiguration, object: nil, userInfo: nil)
}
}
}
#Preview {
OutputSettings()
}
|