From 5ec207e1fa060cfb96defd9840f4bad6a6548e6c Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Mon, 19 Jan 2026 14:48:35 +0800 Subject: [PATCH] fix --- punchnet/Views/Settings/SettingsState.swift | 12 ++--- punchnet/Views/Settings/SettingsView.swift | 55 +++++++++------------ 2 files changed, 29 insertions(+), 38 deletions(-) diff --git a/punchnet/Views/Settings/SettingsState.swift b/punchnet/Views/Settings/SettingsState.swift index e591027..9593651 100644 --- a/punchnet/Views/Settings/SettingsState.swift +++ b/punchnet/Views/Settings/SettingsState.swift @@ -20,12 +20,12 @@ class SettingsState { var name: String } - enum MenuItem { - case accout - case network - case device - case system - case about + enum MenuItem: String, CaseIterable { + case accout = "账号" + case network = "网络" + case device = "设备" + case system = "软件" + case about = "关于" } var networks: [Network] diff --git a/punchnet/Views/Settings/SettingsView.swift b/punchnet/Views/Settings/SettingsView.swift index 8d7433f..6759865 100644 --- a/punchnet/Views/Settings/SettingsView.swift +++ b/punchnet/Views/Settings/SettingsView.swift @@ -9,15 +9,32 @@ import SwiftUI struct SettingsView: View { @State private var state = SettingsState() + @State private var hovering = false var body: some View { NavigationSplitView { - List { - SettingsMenuItemView(title: "账号", .accout, state: state) - SettingsMenuItemView(title: "网络", .network, state: state) - SettingsMenuItemView(title: "设备", .device, state: state) - SettingsMenuItemView(title: "软件", .system, state: state) - SettingsMenuItemView(title: "关于", .about, state: state) + List(SettingsState.MenuItem.allCases, id: \.self) { menu in + HStack(alignment: .center) { + Rectangle() + .frame(width: 3, height: 25) + .foregroundColor(self.state.currentMeun == menu ? .black : .clear) + + Text(menu.rawValue) + + Spacer() + } + .contentShape(Rectangle()) + .onTapGesture { + self.state.currentMeun = menu + } + .onHover { inside in + hovering = inside + if inside { + NSCursor.pointingHand.push() + } else { + NSCursor.pop() + } + } } .listStyle(.sidebar) .border(Color.red) @@ -45,32 +62,6 @@ struct SettingsView: View { } -struct SettingsMenuItemView: View { - var title: String - var role: SettingsState.MenuItem - @Bindable var state: SettingsState - - init(title: String, _ role: SettingsState.MenuItem, state: SettingsState) { - self.title = title - self.role = role - self.state = state - } - - var body: some View { - HStack(alignment: .center) { - Rectangle() - .frame(width: 3, height: 25) - .foregroundColor(self.state.currentMeun == role ? .black : .clear) - - Text(title) - .onTapGesture { - self.state.currentMeun = self.role - } - } - } -} - - #Preview { SettingsView() }