punchnet-macos/punchnet/Views/MenuBar/MainMenuBar.swift
2026-03-24 23:43:27 +08:00

64 lines
1.5 KiB
Swift

//
// MainMenuBar.swift
// punchnet
//
// Created by on 2026/3/24.
//
import SwiftUI
struct MainMenuBar: View {
@State private var vpnManager = VPNManager.shared
@Environment(AppContext.self) private var appContext: AppContext
@Environment(\.openWindow) private var openWindow
var body: some View {
VStack {
switch self.vpnManager.vpnStatus {
case .connected:
Button(action: {
Task { @MainActor in
try await vpnManager.disableVpn()
}
}, label: {
Text("停止")
})
case .disconnected:
Button(action: {
Task { @MainActor in
await self.startVPN()
}
}, label: {
Text("启动")
})
}
Divider()
Button("打开控制面板") {
openWindow(id: "main")
}
SettingsLink {
Text("设置")
}
.buttonStyle(.plain)
Divider()
Button(action: {
NSApplication.shared.terminate(nil)
}, label: {
Text("退出应用")
})
}
}
private func startVPN() async {
if let options = appContext.vpnOptions {
try? await vpnManager.enableVpn(options: options)
}
}
}