From 06682d113d992eb5d3d4e4d6e5e0a2783381a155 Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Fri, 16 Jan 2026 17:17:53 +0800 Subject: [PATCH] fix networkd --- .../Views/Network/NetworkConnctedView.swift | 154 +++++++++++++++ .../Network/NetworkDisconnctedView.swift | 37 ++++ punchnet/Views/Network/NetworkView.swift | 183 ------------------ .../Views/Network/NetworkWaitAuthView.swift | 18 ++ 4 files changed, 209 insertions(+), 183 deletions(-) create mode 100644 punchnet/Views/Network/NetworkConnctedView.swift create mode 100644 punchnet/Views/Network/NetworkDisconnctedView.swift create mode 100644 punchnet/Views/Network/NetworkWaitAuthView.swift diff --git a/punchnet/Views/Network/NetworkConnctedView.swift b/punchnet/Views/Network/NetworkConnctedView.swift new file mode 100644 index 0000000..a890220 --- /dev/null +++ b/punchnet/Views/Network/NetworkConnctedView.swift @@ -0,0 +1,154 @@ +// +// NetworkConnctedView.swift +// punchnet +// +// Created by 安礼成 on 2026/1/16. +// +import SwiftUI + +struct NetworkConnctedView: View { + @Bindable var state: NetworkState + + var body: some View { + Group { + switch state.showModel { + case .resource: + NetworkResourceGroupView(state: self.state) + case .device: + NetworkDeviceGroupView(state: self.state) + } + } + } +} + +// 显示资源信息 +struct NetworkResourceGroupView: View { + @Bindable var state: NetworkState + + var body: some View { + LazyVGrid(columns: Array(repeating: GridItem(.flexible()), count: 3), spacing: 8) { + ForEach(self.state.resources, id: \.id) { resource in + NetworkResourceView(resource: resource) + } + } + } +} + +struct NetworkResourceView: View { + var resource: NetworkState.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 state: NetworkState + @State private var selectedId: Int? + + var body: some View { + NavigationSplitView { + List(self.state.devices, id: \.id, selection: $selectedId) { device in + NetworkDeviceHeadView(device: device) + } + .listStyle(.sidebar) + .onChange(of: selectedId) { + self.state.changeSelectedDevice(deviceId: selectedId) + } + .onAppear { + if selectedId == nil { + selectedId = self.state.devices.first?.id + } + } + } detail: { + NetworkDeviceDetailView(device: $state.selectedDevice) + } + } + +} + +struct NetworkDeviceHeadView: View { + var device: NetworkState.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: NetworkState.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/NetworkDisconnctedView.swift b/punchnet/Views/Network/NetworkDisconnctedView.swift new file mode 100644 index 0000000..73b75de --- /dev/null +++ b/punchnet/Views/Network/NetworkDisconnctedView.swift @@ -0,0 +1,37 @@ +// +// NetworkDisconnctedView.swift +// punchnet +// +// Created by 安礼成 on 2026/1/16. +// + +import SwiftUI + +struct NetworkDisconnctedView: View { + @Bindable var state: NetworkState + + var body: some View { + ZStack { + Color.clear + + Button { + print("call me here") + } label: { + Text("连接") + .font(.system(size: 14, weight: .regular)) + .padding([.top, .bottom], 8) + .padding([.leading, .trailing], 30) + .foregroundColor(.white) + + } + .background(Color(red: 74/255, green: 207/255, blue: 154/255)) + .cornerRadius(5) + .frame(width: 120, height: 35) + } + + } +} + +//#Preview { +// NetworkDisconnctedView() +//} diff --git a/punchnet/Views/Network/NetworkView.swift b/punchnet/Views/Network/NetworkView.swift index efb4800..2b6cdd1 100644 --- a/punchnet/Views/Network/NetworkView.swift +++ b/punchnet/Views/Network/NetworkView.swift @@ -76,189 +76,6 @@ struct NetworkView: View { } } -struct NetworkWaitAuthView: View { - @Bindable var state: NetworkState - - var body: some View { - Color.clear - .overlay { - Text("等待确认中") - } - } -} - -struct NetworkDisconnctedView: View { - @Bindable var state: NetworkState - - var body: some View { - ZStack { - Color.clear - - Button { - print("call me here") - } label: { - Text("连接") - .font(.system(size: 14, weight: .regular)) - .padding([.top, .bottom], 8) - .padding([.leading, .trailing], 30) - .foregroundColor(.white) - - } - .background(Color(red: 74/255, green: 207/255, blue: 154/255)) - .cornerRadius(5) - .frame(width: 120, height: 35) - } - - } - -} - -struct NetworkConnctedView: View { - @Bindable var state: NetworkState - - var body: some View { - Group { - switch state.showModel { - case .resource: - NetworkResourceGroupView(state: self.state) - case .device: - NetworkDeviceGroupView(state: self.state) - } - } - } -} - -// 显示资源信息 -struct NetworkResourceGroupView: View { - @Bindable var state: NetworkState - - var body: some View { - LazyVGrid(columns: Array(repeating: GridItem(.flexible()), count: 3), spacing: 8) { - ForEach(self.state.resources, id: \.id) { resource in - NetworkResourceView(resource: resource) - } - } - } -} - -struct NetworkResourceView: View { - var resource: NetworkState.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 state: NetworkState - @State private var selectedId: Int? - - var body: some View { - NavigationSplitView { - List(self.state.devices, id: \.id, selection: $selectedId) { device in - NetworkDeviceHeadView(device: device) - } - .listStyle(.sidebar) - .onChange(of: selectedId) { - self.state.changeSelectedDevice(deviceId: selectedId) - } - .onAppear { - if selectedId == nil { - selectedId = self.state.devices.first?.id - } - } - } detail: { - NetworkDeviceDetailView(device: $state.selectedDevice) - } - } - -} - -struct NetworkDeviceHeadView: View { - var device: NetworkState.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: NetworkState.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() - } - } - } -} #Preview { NetworkView() diff --git a/punchnet/Views/Network/NetworkWaitAuthView.swift b/punchnet/Views/Network/NetworkWaitAuthView.swift new file mode 100644 index 0000000..e8b78f2 --- /dev/null +++ b/punchnet/Views/Network/NetworkWaitAuthView.swift @@ -0,0 +1,18 @@ +// +// NetworkWaitAuthView.swift +// punchnet +// +// Created by 安礼成 on 2026/1/16. +// +import SwiftUI + +struct NetworkWaitAuthView: View { + @Bindable var state: NetworkState + + var body: some View { + Color.clear + .overlay { + Text("等待确认中") + } + } +}