Skip to content

Commit

Permalink
#207 Replace all sliders in custom window sizes
Browse files Browse the repository at this point in the history
  • Loading branch information
MrKai77 committed Feb 16, 2024
1 parent 48a84d8 commit a62bb4f
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 54 deletions.
52 changes: 24 additions & 28 deletions Loop/Settings/Keybindings/Custom Keybinds/CustomKeybindView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -80,35 +80,31 @@ struct CustomKeybindView: View {
}
}

HStack {
Stepper(
"Width",
value: Binding<Double>(
get: { self.action.width ?? 0 },
set: { self.action.width = $0 }
),
in: action.measureSystem == .percentage ? 0...100 : 0...(.greatestFiniteMagnitude),
step: action.measureSystem == .percentage ? 10 : 100,
format: .number
)
.focused($focusedField, equals: "width")
Text(action.measureSystem?.postscript ?? "")
}
CrispValueAdjuster(
"Width",
value: Binding<Double>( // Width is an optional
get: { self.action.width ?? 0 },
set: { self.action.width = $0 }
),
sliderRange: action.measureSystem == .percentage ? 0...100 : 0...(
Double(NSScreen.main?.frame.width ?? 1000)
),
postscript: action.measureSystem?.postscript ?? "",
lowerClamp: true
)

HStack {
Stepper(
"Height",
value: Binding<Double>(
get: { self.action.height ?? 0 },
set: { self.action.height = $0 }
),
in: action.measureSystem == .percentage ? 0...100 : 0...(.greatestFiniteMagnitude),
step: action.measureSystem == .percentage ? 10 : 100,
format: .number
)
.focused($focusedField, equals: "height")
Text(action.measureSystem?.postscript ?? "")
}
CrispValueAdjuster(
"Height",
value: Binding<Double>( // Height is an optional
get: { self.action.height ?? 0 },
set: { self.action.height = $0 }
),
sliderRange: action.measureSystem == .percentage ? 0...100 : 0...(
Double(NSScreen.main?.frame.height ?? 1000)
),
postscript: action.measureSystem?.postscript ?? "",
lowerClamp: true
)
}

Section {
Expand Down
11 changes: 6 additions & 5 deletions Loop/Settings/Keybindings/KeybindingsSettingsView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,13 @@ struct KeybindingsSettingsView: View {
}
}

Stepper(
"Trigger Delay (seconds)",
value: self.$triggerDelay,
in: 0...10,
CrispValueAdjuster(
"Trigger Delay",
value: $triggerDelay,
sliderRange: 0...10,
postscript: "sec",
step: 0.1,
format: .number
lowerClamp: true
)

Toggle("Double-click trigger key to trigger Loop", isOn: $doubleClickToTrigger)
Expand Down
14 changes: 7 additions & 7 deletions Loop/Settings/Padding/PaddingConfigurationView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,15 @@ struct PaddingConfigurationView: View {
"Window Gaps",
value: $paddingModel.window,
sliderRange: 0...100,
postfix: "px",
postscript: "px",
lowerClamp: true
)
CrispValueAdjuster(
"External Bar",
description: "Use this if you are using a custom menubar.",
value: $paddingModel.externalBar,
sliderRange: 0...100,
postfix: "px",
postscript: "px",
lowerClamp: true
)
}
Expand All @@ -59,28 +59,28 @@ struct PaddingConfigurationView: View {
"Top",
value: $paddingModel.top,
sliderRange: 0...100,
postfix: "px",
postscript: "px",
lowerClamp: true
)
CrispValueAdjuster(
"Bottom",
value: $paddingModel.bottom,
sliderRange: 0...100,
postfix: "px",
postscript: "px",
lowerClamp: true
)
CrispValueAdjuster(
"Right",
value: $paddingModel.right,
sliderRange: 0...100,
postfix: "px",
postscript: "px",
lowerClamp: true
)
CrispValueAdjuster(
"Left",
value: $paddingModel.left,
sliderRange: 0...100,
postfix: "px",
postscript: "px",
lowerClamp: true
)
}
Expand All @@ -100,7 +100,7 @@ struct PaddingConfigurationView: View {
}
),
sliderRange: 0...100,
postfix: "px",
postscript: "px",
lowerClamp: true
)
}
Expand Down
6 changes: 3 additions & 3 deletions Loop/Settings/PreviewSettingsView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -56,21 +56,21 @@ struct PreviewSettingsView: View {
"Padding",
value: $previewPadding,
sliderRange: 0...20,
postfix: "px",
postscript: "px",
lowerClamp: true
)
CrispValueAdjuster(
"Corner Radius",
value: $previewCornerRadius,
sliderRange: 0...20,
postfix: "px",
postscript: "px",
lowerClamp: true
)
CrispValueAdjuster(
"Border Thickness",
value: $previewBorderThickness,
sliderRange: 0...10,
postfix: "px",
postscript: "px",
lowerClamp: true
)
}
Expand Down
6 changes: 3 additions & 3 deletions Loop/Settings/RadialMenuSettingsView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,15 @@ struct RadialMenuSettingsView: View {
"Corner Radius",
value: $radialMenuCornerRadius,
sliderRange: 30...50,
postfix: "px",
postscript: "px",
lowerClamp: true,
upperClamp: true
)
CrispValueAdjuster(
"Thickness",
value: $radialMenuThickness,
sliderRange: 10...35,
postfix: "px",
postscript: "px",
lowerClamp: true,
upperClamp: true
)
Expand All @@ -62,7 +62,7 @@ struct RadialMenuSettingsView: View {
"Appearance Delay",
value: $radialMenuDelay,
sliderRange: 0...10,
postfix: "sec",
postscript: "sec",
lowerClamp: true
)
}
Expand Down
29 changes: 21 additions & 8 deletions Loop/Utilities/CrispValueAdjuster.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ struct CrispValueAdjuster<V>: View where V: Strideable, V: BinaryFloatingPoint,
let description: String?
@Binding var value: V
let sliderRange: ClosedRange<V>
let postfix: String?
let postscript: String?
var step: V.Stride
let upperClamp: Bool
let lowerClamp: Bool

Expand All @@ -25,20 +26,32 @@ struct CrispValueAdjuster<V>: View where V: Strideable, V: BinaryFloatingPoint,
description: String? = nil,
value: Binding<V>,
sliderRange: ClosedRange<V>,
postfix: String? = nil,
postscript: String? = nil,
step: V? = nil,
lowerClamp: Bool = false,
upperClamp: Bool = false
) {
self.title = title
self.description = description
self._value = value
self.sliderRange = sliderRange
self.postfix = postfix
self.postscript = postscript
self.lowerClamp = lowerClamp
self.upperClamp = upperClamp

self.formatter = NumberFormatter()
self.formatter.maximumFractionDigits = 2

if let step = step {
self.step = V.Stride(step)
} else {
self.step = 0 // Initialize first
self.step = totalRange / 10
}
}

let stepperWidth: CGFloat = 150
let formatter: NumberFormatter

var totalRange: V.Stride {
V.Stride(sliderRange.upperBound) - V.Stride(sliderRange.lowerBound)
Expand Down Expand Up @@ -125,7 +138,7 @@ struct CrispValueAdjuster<V>: View where V: Strideable, V: BinaryFloatingPoint,
}
}
),
formatter: NumberFormatter()
formatter: formatter
)
.labelsHidden()
.textFieldStyle(.plain)
Expand Down Expand Up @@ -165,7 +178,7 @@ struct CrispValueAdjuster<V>: View where V: Strideable, V: BinaryFloatingPoint,
}
}
),
step: self.totalRange / 10
step: step
)
.labelsHidden()
}
Expand All @@ -174,23 +187,23 @@ struct CrispValueAdjuster<V>: View where V: Strideable, V: BinaryFloatingPoint,
.fixedSize()
.padding(.vertical, -10)

if let postfix = postfix {
if let postfix = postscript {
Text(postfix)
}
}
}

@ViewBuilder
var stepperMinText: some View {
Text("\(sliderRange.lowerBound.formatted())\(postfix == nil ? "" : " \(postfix!)")")
Text("\(sliderRange.lowerBound.formatted())\(postscript == nil ? "" : " \(postscript!)")")
.font(.caption2)
.foregroundStyle(.secondary)
.padding(.trailing, -4)
}

@ViewBuilder
var stepperMaxText: some View {
Text("\(sliderRange.upperBound.formatted())\(postfix == nil ? "" : " \(postfix!)")")
Text("\(sliderRange.upperBound.formatted())\(postscript == nil ? "" : " \(postscript!)")")
.font(.caption2)
.foregroundStyle(.secondary)
.padding(.leading, -4)
Expand Down

0 comments on commit a62bb4f

Please sign in to comment.