This commit is contained in:
anlicheng 2026-01-19 14:51:34 +08:00
parent 5ec207e1fa
commit f9b1c03b85
2 changed files with 13 additions and 14 deletions

View File

@ -20,22 +20,12 @@ class SettingsState {
var name: String var name: String
} }
enum MenuItem: String, CaseIterable {
case accout = "账号"
case network = "网络"
case device = "设备"
case system = "软件"
case about = "关于"
}
var networks: [Network] var networks: [Network]
var selectedNetwork: Network var selectedNetwork: Network
var exitNodes: [ExitNode] var exitNodes: [ExitNode]
var selectedExitNode: ExitNode var selectedExitNode: ExitNode
var currentMeun: MenuItem = .accout
init() { init() {
let networks: [Network] = [ let networks: [Network] = [
.init(id: 1, name: "测试网络12"), .init(id: 1, name: "测试网络12"),

View File

@ -10,14 +10,23 @@ import SwiftUI
struct SettingsView: View { struct SettingsView: View {
@State private var state = SettingsState() @State private var state = SettingsState()
@State private var hovering = false @State private var hovering = false
@State private var selectedMenu: MenuItem = .accout
enum MenuItem: String, CaseIterable {
case accout = "账号"
case network = "网络"
case device = "设备"
case system = "软件"
case about = "关于"
}
var body: some View { var body: some View {
NavigationSplitView { NavigationSplitView {
List(SettingsState.MenuItem.allCases, id: \.self) { menu in List(MenuItem.allCases, id: \.self) { menu in
HStack(alignment: .center) { HStack(alignment: .center) {
Rectangle() Rectangle()
.frame(width: 3, height: 25) .frame(width: 3, height: 25)
.foregroundColor(self.state.currentMeun == menu ? .black : .clear) .foregroundColor(self.selectedMenu == menu ? .black : .clear)
Text(menu.rawValue) Text(menu.rawValue)
@ -25,7 +34,7 @@ struct SettingsView: View {
} }
.contentShape(Rectangle()) .contentShape(Rectangle())
.onTapGesture { .onTapGesture {
self.state.currentMeun = menu self.selectedMenu = menu
} }
.onHover { inside in .onHover { inside in
hovering = inside hovering = inside
@ -41,7 +50,7 @@ struct SettingsView: View {
} detail: { } detail: {
VStack(alignment: .leading, spacing: 0) { VStack(alignment: .leading, spacing: 0) {
switch self.state.currentMeun { switch self.selectedMenu {
case .accout: case .accout:
SettingsAccountView(state: self.state) SettingsAccountView(state: self.state)
case .network: case .network: