This commit is contained in:
anlicheng 2026-01-19 14:48:35 +08:00
parent efa14a3071
commit 5ec207e1fa
2 changed files with 29 additions and 38 deletions

View File

@ -20,12 +20,12 @@ class SettingsState {
var name: String var name: String
} }
enum MenuItem { enum MenuItem: String, CaseIterable {
case accout case accout = "账号"
case network case network = "网络"
case device case device = "设备"
case system case system = "软件"
case about case about = "关于"
} }
var networks: [Network] var networks: [Network]

View File

@ -9,15 +9,32 @@ import SwiftUI
struct SettingsView: View { struct SettingsView: View {
@State private var state = SettingsState() @State private var state = SettingsState()
@State private var hovering = false
var body: some View { var body: some View {
NavigationSplitView { NavigationSplitView {
List { List(SettingsState.MenuItem.allCases, id: \.self) { menu in
SettingsMenuItemView(title: "账号", .accout, state: state) HStack(alignment: .center) {
SettingsMenuItemView(title: "网络", .network, state: state) Rectangle()
SettingsMenuItemView(title: "设备", .device, state: state) .frame(width: 3, height: 25)
SettingsMenuItemView(title: "软件", .system, state: state) .foregroundColor(self.state.currentMeun == menu ? .black : .clear)
SettingsMenuItemView(title: "关于", .about, state: state)
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) .listStyle(.sidebar)
.border(Color.red) .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 { #Preview {
SettingsView() SettingsView()
} }