From a18d07924f0f0878b69705f244fdd4ca41f56261 Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Thu, 26 Feb 2026 14:15:47 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E5=8C=96network?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Views/Network/NetworkConnctedView.swift | 154 ---------------- punchnet/Views/Network/NetworkModel.swift | 7 +- punchnet/Views/Network/NetworkView.swift | 170 +++++++++++++++++- .../Views/Network/NetworkWaitAuthView.swift | 18 -- 4 files changed, 165 insertions(+), 184 deletions(-) delete mode 100644 punchnet/Views/Network/NetworkConnctedView.swift delete mode 100644 punchnet/Views/Network/NetworkWaitAuthView.swift diff --git a/punchnet/Views/Network/NetworkConnctedView.swift b/punchnet/Views/Network/NetworkConnctedView.swift deleted file mode 100644 index fd12a03..0000000 --- a/punchnet/Views/Network/NetworkConnctedView.swift +++ /dev/null @@ -1,154 +0,0 @@ -// -// NetworkConnctedView.swift -// punchnet -// -// Created by 安礼成 on 2026/1/16. -// -import SwiftUI - -struct NetworkConnctedView: View { - @Bindable var networkModel: NetworkModel - - var body: some View { - Group { - switch networkModel.showModel { - case .resource: - NetworkResourceGroupView(networkModel: self.networkModel) - case .device: - NetworkDeviceGroupView(networkModel: self.networkModel) - } - } - } -} - -// 显示资源信息 -struct NetworkResourceGroupView: View { - @Bindable var networkModel: NetworkModel - - var body: some View { - LazyVGrid(columns: Array(repeating: GridItem(.flexible()), count: 3), spacing: 8) { - ForEach(self.networkModel.resources, id: \.id) { resource in - NetworkResourceView(resource: resource) - } - } - } -} - -struct NetworkResourceView: View { - var resource: NetworkModel.Resource - - var body: some View { - VStack { - HStack { - Text(resource.status == 1 ? "yes" : "no") - - Text(resource.name) - .font(.system(size: 14, weight: .regular)) - } - - Text(resource.schema) - .font(.system(size: 14, weight: .regular)) - .padding(.leading, 30) - - } - } -} - -// 显示设备信息 -struct NetworkDeviceGroupView: View { - @Bindable var networkModel: NetworkModel - @State private var selectedId: Int? - - var body: some View { - NavigationSplitView { - List(self.networkModel.devices, id: \.id, selection: $selectedId) { device in - NetworkDeviceHeadView(device: device) - } - .listStyle(.sidebar) - .onChange(of: selectedId) { - self.networkModel.changeSelectedDevice(deviceId: selectedId) - } - .onAppear { - if selectedId == nil { - selectedId = self.networkModel.devices.first?.id - } - } - } detail: { - NetworkDeviceDetailView(device: $networkModel.selectedDevice) - } - } - -} - -struct NetworkDeviceHeadView: View { - var device: NetworkModel.Device - - var body: some View { - VStack { - HStack { - Text(device.status == 1 ? "yes" : "no") - - Text(device.name) - .font(.system(size: 14, weight: .regular)) - } - - Text(device.ipv4) - .font(.system(size: 14, weight: .regular)) - .padding(.leading, 30) - } - } -} - -struct NetworkDeviceDetailView: View { - @Binding var device: NetworkModel.Device? - - var body: some View { - Group { - if let device { - List { - Section { - HStack { - Text("连接状态") - - Text("\(device.status)") - - Spacer() - } - - HStack { - Text("虚拟IPv4") - - Text("\(device.ipv4)") - Spacer() - } - - HStack { - Text("虚拟IPv6") - - Text("\(device.ipv6)") - Spacer() - } - - HStack { - Text("操作系统") - - Text("\(device.system)") - Spacer() - } - } - - Section("服务列表") { - ForEach(device.resources, id: \.id) { resource in - HStack { - Text("\(resource.name)") - Text("\(resource.schema)") - } - } - } - } - } else { - EmptyView() - } - } - } -} diff --git a/punchnet/Views/Network/NetworkModel.swift b/punchnet/Views/Network/NetworkModel.swift index 39d0879..a1dc29a 100644 --- a/punchnet/Views/Network/NetworkModel.swift +++ b/punchnet/Views/Network/NetworkModel.swift @@ -56,9 +56,6 @@ class NetworkModel { var connectState: ConnectState = .disconnected var showModel: ShowMode = .device - // 登陆后的网络会话 - let networkSession: UserContext.NetworkSession - // 网络连接开关 var isOn: Bool = false { didSet { @@ -85,9 +82,7 @@ class NetworkModel { var devices: [Device] = [ ] - init(networkSession: UserContext.NetworkSession) { - self.networkSession = networkSession - + init() { self.devices = [ .init(id: 1, status: 1, name: "test1", ipv4: "192.168.1.1", ipv6: "fa9d.fa9d.fa9d.fa9d", system: "MacOS 12", resources: self.resources), .init(id: 2, status: 1, name: "test2", ipv4: "192.168.1.2", ipv6: "fa9d.fa9d.fa9d.fa9d", system: "MacOS 12", resources: self.resources), diff --git a/punchnet/Views/Network/NetworkView.swift b/punchnet/Views/Network/NetworkView.swift index 8b39ad0..4f3dfe0 100644 --- a/punchnet/Views/Network/NetworkView.swift +++ b/punchnet/Views/Network/NetworkView.swift @@ -9,11 +9,7 @@ import SwiftUI struct NetworkView: View { @Environment(UserContext.self) var userContext: UserContext - @State private var networkModel: NetworkModel - - init() { - self.networkModel = NetworkModel(networkSession: self.userContext.networkSession!) - } + @State private var networkModel = NetworkModel() var body: some View { VStack { @@ -21,7 +17,7 @@ struct NetworkView: View { VStack { HStack(alignment: .center) { - Text(networkModel.networkSession.networkName) + Text(userContext.networkSession?.networkName ?? "未知") Text(">") Spacer() } @@ -145,6 +141,168 @@ struct NetworkDisconnctedView: View { } +// 网络处于连接状态 + +struct NetworkConnctedView: View { + @Bindable var networkModel: NetworkModel + + var body: some View { + Group { + switch networkModel.showModel { + case .resource: + NetworkResourceGroupView(networkModel: self.networkModel) + case .device: + NetworkDeviceGroupView(networkModel: self.networkModel) + } + } + } +} + +extension NetworkConnctedView { + + // 显示资源信息 + struct NetworkResourceGroupView: View { + @Bindable var networkModel: NetworkModel + + var body: some View { + LazyVGrid(columns: Array(repeating: GridItem(.flexible()), count: 3), spacing: 8) { + ForEach(self.networkModel.resources, id: \.id) { resource in + NetworkResourceView(resource: resource) + } + } + } + } + + struct NetworkResourceView: View { + var resource: NetworkModel.Resource + + var body: some View { + VStack { + HStack { + Text(resource.status == 1 ? "yes" : "no") + + Text(resource.name) + .font(.system(size: 14, weight: .regular)) + } + + Text(resource.schema) + .font(.system(size: 14, weight: .regular)) + .padding(.leading, 30) + + } + } + } + + // 显示设备信息 + struct NetworkDeviceGroupView: View { + @Bindable var networkModel: NetworkModel + @State private var selectedId: Int? + + var body: some View { + NavigationSplitView { + List(self.networkModel.devices, id: \.id, selection: $selectedId) { device in + NetworkDeviceHeadView(device: device) + } + .listStyle(.sidebar) + .onChange(of: selectedId) { + self.networkModel.changeSelectedDevice(deviceId: selectedId) + } + .onAppear { + if selectedId == nil { + selectedId = self.networkModel.devices.first?.id + } + } + } detail: { + NetworkDeviceDetailView(device: $networkModel.selectedDevice) + } + } + + } + + struct NetworkDeviceHeadView: View { + var device: NetworkModel.Device + + var body: some View { + VStack { + HStack { + Text(device.status == 1 ? "yes" : "no") + + Text(device.name) + .font(.system(size: 14, weight: .regular)) + } + + Text(device.ipv4) + .font(.system(size: 14, weight: .regular)) + .padding(.leading, 30) + } + } + } + + struct NetworkDeviceDetailView: View { + @Binding var device: NetworkModel.Device? + + var body: some View { + Group { + if let device { + List { + Section { + HStack { + Text("连接状态") + + Text("\(device.status)") + + Spacer() + } + + HStack { + Text("虚拟IPv4") + + Text("\(device.ipv4)") + Spacer() + } + + HStack { + Text("虚拟IPv6") + + Text("\(device.ipv6)") + Spacer() + } + + HStack { + Text("操作系统") + + Text("\(device.system)") + Spacer() + } + } + + Section("服务列表") { + ForEach(device.resources, id: \.id) { resource in + HStack { + Text("\(resource.name)") + Text("\(resource.schema)") + } + } + } + } + } else { + EmptyView() + } + } + } + } +} + +struct NetworkWaitAuthView: View { + @Bindable var networkModel: NetworkModel + + var body: some View { + Color.clear + .overlay { + Text("等待确认中") + } + } +} #Preview { NetworkView() diff --git a/punchnet/Views/Network/NetworkWaitAuthView.swift b/punchnet/Views/Network/NetworkWaitAuthView.swift deleted file mode 100644 index f108187..0000000 --- a/punchnet/Views/Network/NetworkWaitAuthView.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// NetworkWaitAuthView.swift -// punchnet -// -// Created by 安礼成 on 2026/1/16. -// -import SwiftUI - -struct NetworkWaitAuthView: View { - @Bindable var networkModel: NetworkModel - - var body: some View { - Color.clear - .overlay { - Text("等待确认中") - } - } -}