Files
i2p.i2p/launchers/macosx/I2PLauncher/userinterface/Style2019/EditorTableView/SettingsView.swift

97 lines
2.5 KiB
Swift

//
// SettingsView.swift
// I2PLauncher
//
// Created by Mikal Villa on 08/04/2019.
// Copyright © 2019 The I2P Project. All rights reserved.
//
import Cocoa
import SnapKit
class SettingsView: NSView {
let settingsHeader = SectionHeaderView(name: "Hmm")
let notifyCheckbox = NSButton()
let servicesHeader = SectionHeaderView(name: "Services")
let searchField = NSSearchField()
var searchCallback: ((String) -> Void)?
init() {
super.init(frame: .zero)
setup()
}
required init?(coder: NSCoder) {
super.init(frame: .zero)
setup()
}
func setup() {
addSubview(settingsHeader)
addSubview(notifyCheckbox)
addSubview(servicesHeader)
addSubview(searchField)
let smallFont = NSFont.systemFont(ofSize: NSFont.systemFontSize(for: .small))
notifyCheckbox.setButtonType(.switch)
notifyCheckbox.title = "Notify when a status changes"
notifyCheckbox.font = smallFont
notifyCheckbox.state = Preferences.shared().notifyOnStatusChange ? .on : .off
notifyCheckbox.action = #selector(SettingsView.updateNotifyOnStatusChange)
notifyCheckbox.target = self
searchField.sendsSearchStringImmediately = true
searchField.sendsWholeSearchString = false
searchField.action = #selector(SettingsView.filterServices)
searchField.target = self
settingsHeader.snp.makeConstraints { make in
make.top.left.equalTo(6)
make.right.equalTo(-6)
make.height.equalTo(16)
}
/*startAtLoginCheckbox.snp.makeConstraints { make in
make.top.equalTo(settingsHeader.snp.bottom).offset(6)
make.left.equalTo(14)
make.right.equalTo(-14)
make.height.equalTo(18)
}*/
notifyCheckbox.snp.makeConstraints { make in
make.top.equalTo(settingsHeader.snp.bottom).offset(6)
make.left.equalTo(14)
make.right.equalTo(-14).priority(200)
make.height.equalTo(18)
}
servicesHeader.snp.makeConstraints { make in
make.top.equalTo(notifyCheckbox.snp.bottom).offset(10)
make.left.equalTo(6)
make.right.equalTo(-6)
make.height.equalTo(16)
}
searchField.snp.makeConstraints { make in
make.top.equalTo(servicesHeader.snp.bottom).offset(6)
make.left.equalTo(12)
make.right.equalTo(-12)
make.height.equalTo(22)
}
}
@objc private func updateNotifyOnStatusChange() {
Preferences.shared().notifyOnStatusChange = (notifyCheckbox.state == .on)
}
@objc private func filterServices() {
searchCallback?(searchField.stringValue)
}
}