mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-18 00:23:25 -06:00
f0b7542a22
* feat(mac): add gateway menu surfaces * docs(mac): document gateway menu surfaces * test(mac): make dashboard frame assertions display-independent
35 lines
1.3 KiB
Swift
35 lines
1.3 KiB
Swift
import SwiftUI
|
|
|
|
@MainActor
|
|
struct DashboardGatewayCommands: Commands {
|
|
@Bindable private var dashboardManager: DashboardManager
|
|
|
|
init(dashboardManager: DashboardManager) {
|
|
self._dashboardManager = Bindable(wrappedValue: dashboardManager)
|
|
}
|
|
|
|
var body: some Commands {
|
|
let items = DashboardGatewayMenuModel.items(from: self.dashboardManager.gatewayEntries)
|
|
if !items.isEmpty {
|
|
CommandMenu("Gateways") {
|
|
ForEach(items) { item in
|
|
if let shortcutNumber = item.shortcutNumber {
|
|
Toggle(item.name, isOn: self.selectionBinding(for: item.target))
|
|
.keyboardShortcut(
|
|
KeyEquivalent(Character(String(shortcutNumber))),
|
|
modifiers: .command)
|
|
} else {
|
|
Toggle(item.name, isOn: self.selectionBinding(for: item.target))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private func selectionBinding(for target: DashboardGatewayTarget) -> Binding<Bool> {
|
|
Binding(
|
|
get: { self.dashboardManager.frontmostDashboardTarget == target },
|
|
set: { _ in self.dashboardManager.switchFrontmostDashboard(to: target) })
|
|
}
|
|
}
|