Files
ClashX-Dashboard/ClashX Dashboard/Views/ContentView.swift
2023-05-16 15:24:56 +08:00

67 lines
1.4 KiB
Swift

//
// ContentView.swift
// ClashX Dashboard
//
//
import SwiftUI
class HideProxyNames: ObservableObject, Identifiable {
let id = UUID().uuidString
@Published var hide = false
}
struct ContentView: View {
private let runningState = NotificationCenter.default.publisher(for: .init("ClashRunningStateChanged"))
@State private var isRunning = false
@StateObject private var hideProxyNames = HideProxyNames()
var body: some View {
Group {
if !isRunning {
APISettingView()
// .presentedWindowToolbarStyle(.expanded)
} else {
NavigationView {
SidebarView()
EmptyView()
}
}
}
.environmentObject(hideProxyNames)
.toolbar {
ToolbarItem(placement: .navigation) {
Button {
NSApp.keyWindow?.firstResponder?.tryToPerform(#selector(NSSplitViewController.toggleSidebar(_:)), with: nil)
} label: {
Image(systemName: "sidebar.left")
}
.help("Toggle Sidebar")
.disabled(!isRunning)
}
ToolbarItem {
Button {
hideProxyNames.hide = !hideProxyNames.hide
} label: {
Image(systemName: hideProxyNames.hide ? "eyeglasses" : "wand.and.stars")
}
.disabled(!isRunning)
}
}
.onReceive(runningState) { _ in
isRunning = ConfigManager.shared.isRunning
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}