This commit is contained in:
anlicheng 2025-05-19 12:46:38 +08:00
parent 0cf5f40fae
commit 213addcc4a

View File

@ -36,23 +36,42 @@ struct punchnetApp: App {
var body: some Scene { var body: some Scene {
WindowGroup(id: "mainWindow") { WindowGroup(id: "mainWindow") {
ContentView() ContentView()
.frame(minWidth: 300, maxWidth: 300, minHeight: 500, maxHeight: 500)
.onAppear {
//
guard let screenFrame = NSScreen.main?.frame else { return }
//
NSApplication.shared.windows.forEach { window in
//
let windowWidth = window.frame.width
let windowHeight = window.frame.height
let centerX = (screenFrame.width - windowWidth) / 2
let centerY = (screenFrame.height - windowHeight) / 2
//
window.setFrameOrigin(NSPoint(x: centerX, y: centerY))
}
}
} }
.commands { .commands {
CommandGroup(replacing: .appInfo) { CommandGroup(replacing: .appInfo) {
Button { Button {
openWindow(id: "abortSDLAN") openWindow(id: "abortPunchnet")
} label: { } label: {
Text("About sdlan") Text("About Punchnet")
} }
} }
} }
.windowResizability(.contentSize)
Window("", id: "abortSDLAN") {
Window("", id: "abortPunchnet") {
AbortView() AbortView()
.frame(minWidth: 300, maxWidth: 300, minHeight: 500, maxHeight: 500)
} }
//.modelContainer(sharedModelContainer) MenuBarExtra("punchnet", image: "logo_32") {
MenuBarExtra("sdlanApp", systemImage: "hammer") {
VStack { VStack {
Button(action: { Button(action: {
self.menuClick() self.menuClick()
@ -74,17 +93,12 @@ struct punchnetApp: App {
private func menuClick() { private func menuClick() {
switch self.vpnManager.vpnStatus { switch self.vpnManager.vpnStatus {
case .disconnected: case .disconnected:
if token.isEmpty {
let windows = NSApplication.shared.windows
if let window = windows.first(where: {$0.title == "sdlan"}) {
window.level = .floating
} else {
self.openWindow(id: "mainWindow")
}
} else {
Task { Task {
try await vpnManager.enableVpn(options: ["token": token as NSObject]) try await vpnManager.enableVpn(options: [
} "version:": SystemConfig.version as NSObject,
"installed_channel": SystemConfig.installedChannel as NSObject,
"token": token as NSObject
])
} }
case .connected: case .connected:
Task { Task {