1
0
mirror of https://github.com/nicoverbruggen/phpmon.git synced 2025-08-08 04:20:07 +02:00
Files
app/phpmon/Domain/Preferences/PreferencesWindowController.swift
2024-01-09 19:28:39 +01:00

110 lines
3.3 KiB
Swift

//
// PreferencesWindowController.swift
// PHP Monitor
//
// Created by Nico Verbruggen on 02/04/2021.
// Copyright © 2023 Nico Verbruggen. All rights reserved.
//
import Cocoa
class PreferencesWindowController: PMWindowController {
// MARK: - Window Identifier
override var windowName: String {
return "Preferences"
}
public static func create(delegate: NSWindowDelegate?) {
let storyboard = NSStoryboard(name: "Main", bundle: nil)
let windowController = storyboard.instantiateController(
withIdentifier: "preferencesWindow"
) as! PreferencesWindowController
guard let window = windowController.window else { return }
window.title = "prefs.title".localized
window.subtitle = "prefs.subtitle".localized
window.delegate = delegate ?? windowController
window.styleMask = [.titled, .closable, .miniaturizable]
App.shared.preferencesWindowController = windowController
}
public static func show(delegate: NSWindowDelegate? = nil) {
var justCreated = false
if App.shared.preferencesWindowController == nil {
Self.create(delegate: delegate)
guard let preferencesWC = App.shared.preferencesWindowController else {
return
}
guard let tabVC = preferencesWC.contentViewController as? NSTabViewController else {
return
}
for vc in preferencesWC.tabVCs {
tabVC.addChild(vc.viewController)
let item = tabVC.tabViewItem(for: vc.viewController)
item?.image = NSImage(systemSymbolName: vc.icon, accessibilityDescription: "\(vc.label) Icon")
item?.label = vc.label
}
tabVC.preferredContentSize = NSSize(
width: tabVC.view.frame.size.width,
height: tabVC.view.frame.size.height
)
justCreated = true
}
App.shared.preferencesWindowController?.showWindow(self)
if justCreated {
App.shared.preferencesWindowController?.positionWindowInTopRightCorner()
}
App.shared.preferencesWindowController?.window?.orderFrontRegardless()
NSApp.activate(ignoringOtherApps: true)
}
// MARK: - Tabs
struct PrefTabView {
let viewController: GenericPreferenceVC
let label: String
let icon: String
}
public lazy var tabVCs: [PrefTabView] = {
return [
PrefTabView(
viewController: GeneralPreferencesVC.fromStoryboard(),
label: "prefs.tabs.general".localized,
icon: "gearshape"
),
PrefTabView(
viewController: AppearancePreferencesVC.fromStoryboard(),
label: "prefs.tabs.appearance".localized,
icon: "paintbrush"
),
PrefTabView(
viewController: MenuStructurePreferencesVC.fromStoryboard(),
label: "prefs.tabs.visibility".localized,
icon: "eye"
),
PrefTabView(
viewController: NotificationPreferencesVC.fromStoryboard(),
label: "prefs.tabs.notifications".localized,
icon: "bell.badge"
)
]
}()
}