feat: added fieldSettingRow for setting with text field

This commit is contained in:
Serhiy Mytrovtsiy
2023-03-25 17:29:06 +01:00
parent 895eaba528
commit d70b424211
2 changed files with 46 additions and 39 deletions

View File

@@ -361,6 +361,46 @@ public extension NSView {
return view
}
func fieldSettingRow(_ sender: NSTextFieldDelegate, title: String, value: String, placeholder: String? = nil, width: CGFloat = 200) -> NSView {
let view: NSStackView = NSStackView()
view.translatesAutoresizingMaskIntoConstraints = false
view.heightAnchor.constraint(equalToConstant: Constants.Settings.row).isActive = true
view.orientation = .horizontal
view.alignment = .centerY
view.distribution = .fill
view.spacing = 0
let titleField: NSTextField = LabelField(frame: NSRect.zero, title)
titleField.font = NSFont.systemFont(ofSize: 12, weight: .regular)
titleField.textColor = .textColor
let valueField: NSTextField = NSTextField()
valueField.font = NSFont.systemFont(ofSize: 12, weight: .regular)
valueField.textColor = .textColor
valueField.isEditable = true
valueField.isSelectable = true
valueField.isBezeled = false
valueField.wantsLayer = true
valueField.canDrawSubviewsIntoLayer = true
valueField.usesSingleLineMode = true
valueField.maximumNumberOfLines = 1
valueField.focusRingType = .none
valueField.stringValue = value
valueField.delegate = sender
if let placeholder {
valueField.placeholderString = placeholder
}
valueField.alignment = .natural
view.addArrangedSubview(titleField)
view.addArrangedSubview(NSView())
view.addArrangedSubview(valueField)
valueField.widthAnchor.constraint(equalToConstant: width).isActive = true
return view
}
func selectView(action: Selector, items: [KeyValue_p], selected: String) -> NSPopUpButton {
let select: NSPopUpButton = NSPopUpButton(frame: NSRect(x: 0, y: 0, width: 50, height: 28))
select.target = self

View File

@@ -118,7 +118,12 @@ internal class Settings: NSStackView, Settings_v, NSTextFieldDelegate {
))
}
self.addArrangedSubview(self.connectivityHost())
self.addArrangedSubview(fieldSettingRow(self,
title: localizedString("Connectivity host (ICMP)"),
value: self.ICMPHost,
placeholder: localizedString("Leave empty to disable the check"),
width: 220
))
}
private func interfaceSelector() -> NSView {
@@ -222,44 +227,6 @@ internal class Settings: NSStackView, Settings_v, NSTextFieldDelegate {
return view
}
func connectivityHost() -> NSView {
let view: NSStackView = NSStackView()
view.translatesAutoresizingMaskIntoConstraints = false
view.heightAnchor.constraint(equalToConstant: Constants.Settings.row).isActive = true
view.orientation = .horizontal
view.alignment = .centerY
view.distribution = .fill
view.spacing = 0
let titleField: NSTextField = LabelField(frame: NSRect(x: 0, y: 0, width: 0, height: 0), localizedString("Connectivity host (ICMP)"))
titleField.font = NSFont.systemFont(ofSize: 12, weight: .regular)
titleField.textColor = .textColor
let valueField: NSTextField = NSTextField()
valueField.font = NSFont.systemFont(ofSize: 12, weight: .regular)
valueField.textColor = .textColor
valueField.isEditable = true
valueField.isSelectable = true
valueField.isBezeled = false
valueField.wantsLayer = true
valueField.canDrawSubviewsIntoLayer = true
valueField.usesSingleLineMode = true
valueField.maximumNumberOfLines = 1
valueField.focusRingType = .none
valueField.delegate = self
valueField.stringValue = self.ICMPHost
valueField.placeholderString = localizedString("Leave empty to disable the check")
valueField.alignment = .natural
view.addArrangedSubview(titleField)
view.addArrangedSubview(NSView())
view.addArrangedSubview(valueField)
valueField.widthAnchor.constraint(equalToConstant: 200).isActive = true
return view
}
@objc func handleSelection(_ sender: NSPopUpButton) {
guard let item = sender.selectedItem, let id = item.identifier?.rawValue else { return }