feat: prepared app settings to add new buttons for import/export settings (#1837)

This commit is contained in:
Serhiy Mytrovtsiy
2024-03-27 20:08:26 +01:00
parent 05c35c6d1e
commit 6507322371

View File

@@ -54,6 +54,9 @@ class ApplicationSettings: NSStackView {
private var combinedModules: NSView?
private var combinedModulesSeparator: NSView?
private var buttons: NSView?
private var buttonsSeparator: NSView?
init() {
super.init(frame: NSRect(x: 0, y: 0, width: Constants.Settings.width, height: Constants.Settings.height))
@@ -62,20 +65,32 @@ class ApplicationSettings: NSStackView {
let scrollView = ScrollableStackView()
scrollView.stackView.spacing = 0
let settings = self.settingsView()
let appSettings = self.appSettingsView()
scrollView.stackView.addArrangedSubview(self.informationView())
scrollView.stackView.addArrangedSubview(self.separatorView())
scrollView.stackView.addArrangedSubview(self.settingsView())
scrollView.stackView.addArrangedSubview(settings)
scrollView.stackView.addArrangedSubview(self.separatorView())
scrollView.stackView.addArrangedSubview(self.combinedModulesView())
let separator = self.separatorView()
var separator = self.separatorView()
self.combinedModulesSeparator = separator
scrollView.stackView.addArrangedSubview(separator)
scrollView.stackView.addArrangedSubview(appSettings)
separator = self.separatorView()
self.buttonsSeparator = separator
scrollView.stackView.addArrangedSubview(separator)
scrollView.stackView.addArrangedSubview(self.buttonsView())
self.toggleCombinedModulesView()
self.toggleButtonsView()
self.addArrangedSubview(scrollView)
if let settingsGrid = settings.subviews.first {
appSettings.subviews.first?.widthAnchor.constraint(equalTo: settingsGrid.widthAnchor).isActive = true
}
NotificationCenter.default.addObserver(self, selector: #selector(toggleUninstallHelperButton), name: .fanHelperState, object: nil)
}
@@ -261,6 +276,45 @@ class ApplicationSettings: NSStackView {
return view
}
private func appSettingsView() -> NSView {
let view: NSStackView = NSStackView()
view.orientation = .vertical
view.edgeInsets = NSEdgeInsets(
top: Constants.Settings.margin,
left: Constants.Settings.margin,
bottom: Constants.Settings.margin,
right: Constants.Settings.margin
)
view.spacing = 10
view.translatesAutoresizingMaskIntoConstraints = false
view.widthAnchor.constraint(equalToConstant: self.frame.width - 15).isActive = true
let grid: NSGridView = NSGridView(frame: NSRect(x: 0, y: 0, width: view.frame.width, height: 0))
grid.rowSpacing = 10
grid.columnSpacing = 20
grid.xPlacement = .trailing
grid.rowAlignment = .firstBaseline
grid.translatesAutoresizingMaskIntoConstraints = false
grid.setContentHuggingPriority(.defaultHigh, for: .horizontal)
grid.setContentHuggingPriority(.defaultHigh, for: .vertical)
let resetBtn: NSButton = NSButton()
resetBtn.title = localizedString("Reset")
resetBtn.bezelStyle = .rounded
resetBtn.target = self
resetBtn.action = #selector(self.resetSettings)
resetBtn.widthAnchor.constraint(equalToConstant: 225).isActive = true
grid.addRow(with: [
self.titleView(localizedString("Settings")),
resetBtn
])
view.addArrangedSubview(grid)
return view
}
private func buttonsView() -> NSView {
let view: NSView = NSView(frame: NSRect(x: 0, y: 0, width: self.frame.width, height: 60))
view.heightAnchor.constraint(equalToConstant: 60).isActive = true
@@ -272,12 +326,6 @@ class ApplicationSettings: NSStackView {
row.distribution = .fill
self.buttonsContainer = row
let reset: NSButton = NSButton()
reset.title = localizedString("Reset settings")
reset.bezelStyle = .rounded
reset.target = self
reset.action = #selector(self.resetSettings)
let uninstall: NSButton = NSButton()
uninstall.title = localizedString("Uninstall fan helper")
uninstall.bezelStyle = .rounded
@@ -285,11 +333,7 @@ class ApplicationSettings: NSStackView {
uninstall.action = #selector(self.uninstallHelper)
self.uninstallHelperButton = uninstall
row.addArrangedSubview(reset)
if SMCHelper.shared.isInstalled {
row.addArrangedSubview(uninstall)
}
row.addArrangedSubview(uninstall)
view.addSubview(row)
NSLayoutConstraint.activate([
@@ -297,6 +341,7 @@ class ApplicationSettings: NSStackView {
row.centerYAnchor.constraint(equalTo: view.centerYAnchor)
])
self.buttons = view
return view
}
@@ -335,6 +380,11 @@ class ApplicationSettings: NSStackView {
self.combinedModulesSeparator?.isHidden = !self.combinedModulesState
}
private func toggleButtonsView() {
self.buttons?.isHidden = !SMCHelper.shared.isInstalled
self.buttonsSeparator?.isHidden = !SMCHelper.shared.isInstalled
}
// MARK: - actions
@objc private func updateAction(_ sender: NSObject) {
@@ -463,6 +513,10 @@ private class ModuleSelectorView: NSStackView {
w += v.frame.width + self.spacing
}
if w < 20 {
w = 20
}
self.addSubview(background, positioned: .below, relativeTo: .none)
self.setFrameSize(NSSize(width: w, height: self.frame.height))