diff options
| author | Dustin Mierau <dustin@mierau.me> | 2023-12-06 13:52:20 -0800 |
|---|---|---|
| committer | Dustin Mierau <dustin@mierau.me> | 2023-12-06 13:52:20 -0800 |
| commit | c0068f11c51bb587c16dfacb73629b3c6fb67fc8 (patch) | |
| tree | 20753433f348b03bb590e0fe6a4cafbe56f4c859 /Hotline/Views/ServerView.swift | |
| parent | 06a2166415bca7e5fe32eac505859bdd690ab8e0 (diff) | |
Further work on UI organization
Diffstat (limited to 'Hotline/Views/ServerView.swift')
| -rw-r--r-- | Hotline/Views/ServerView.swift | 126 |
1 files changed, 34 insertions, 92 deletions
diff --git a/Hotline/Views/ServerView.swift b/Hotline/Views/ServerView.swift index ecb13a1..8e50d83 100644 --- a/Hotline/Views/ServerView.swift +++ b/Hotline/Views/ServerView.swift @@ -1,11 +1,8 @@ import SwiftUI struct ServerView: View { - @Environment(HotlineState.self) private var appState @Environment(HotlineClient.self) private var hotline - @Environment(HotlineTrackerClient.self) private var tracker - - let server: HotlineServer + @Environment(\.colorScheme) var colorScheme func connectionStatusTitle(status: HotlineClientStatus) -> String { switch(status) { @@ -26,102 +23,47 @@ struct ServerView: View { return Double(status.rawValue) / Double(HotlineClientStatus.loggedIn.rawValue) } + enum Tab { + case chat, users, news, messageBoard, files + } + var body: some View { - @Bindable var config = appState - - NavigationStack { - if hotline.connectionStatus != .loggedIn { - VStack { - Spacer() - VStack(alignment: .center) { - Text("🌎").font(.largeTitle) - Text(server.name!).font(.title3).fontWeight(.medium) - Text(server.description!).opacity(0.6).font(.title3) - Text(server.address).opacity(0.6).font(.title3) - } - Spacer() - HStack(alignment: .center) { - if hotline.connectionStatus == .disconnected { - ProgressView(connectionStatusTitle(status: hotline.connectionStatus), value: connectionProgress(status: hotline.connectionStatus)) - Button("Connect") { - hotline.connect(to: server) - // config.dismissTracker() - } - .bold() - .padding(EdgeInsets(top: 16, leading: 24, bottom: 16, trailing: 24)) - .frame(maxWidth: .infinity) - .foregroundColor(.black) - .background(LinearGradient(gradient: Gradient(colors: [Color(white: 0.95), Color(white: 0.91)]), startPoint: .top, endPoint: .bottom)) - .overlay( - RoundedRectangle(cornerRadius: 10.0).stroke(.black, lineWidth: 3).opacity(0.4) - ) - .cornerRadius(10.0) - } - else { - ProgressView("", value: Double(hotline.connectionStatus.rawValue / HotlineClientStatus.loggedIn.rawValue)) - } - } + TabView { + ChatView() + .tabItem { + Image(systemName: "message") } - .padding() - } - else { - TabView { - ChatView() - .navigationTitle(hotline.server?.name ?? "Hotline") - .navigationBarTitleDisplayMode(.inline) - .navigationBarItems( - leading: Button(action: { - appState.presentTracker() - }) { - Image(systemName: "globe.americas.fill") // Hamburger icon or similar - .imageScale(.large) - } - ) - // .toolbarBackground(.visible, for: .navigationBar) - // .toolbarBackground(.red, for: .navigationBar) - .tabItem { - Image(systemName: "message") - } - - UserListView() - .navigationTitle("User List") - .navigationBarTitleDisplayMode(.inline) - .tabItem { - Image(systemName: "person.fill") - } - - Text("News") - .tabItem { - Image(systemName: "newspaper") - } - - MessageBoardView() - .navigationTitle("Message Board") - .navigationBarTitleDisplayMode(.inline) - .tabItem { - Image(systemName: "pin") - } - - FilesView() - .navigationTitle("Files") - .navigationBarTitleDisplayMode(.inline) - .tabItem { - Image(systemName: "folder").tint(.black) - } + .tag(Tab.chat) + + UserListView() + .tabItem { + Image(systemName: "person.fill") } - .accentColor(.black) - } + .tag(Tab.users) - // .sheet(isPresented: Binding(get: { hotline.connectionStatus != .loggedIn }, set: { _ in })) { - // TrackerView() - // } + NewsView() + .tabItem { + Image(systemName: "newspaper") + } + .tag(Tab.news) + + MessageBoardView() + .tabItem { + Image(systemName: "pin") + } + .tag(Tab.messageBoard) + + FilesView() + .tabItem { + Image(systemName: "folder").tint(.black) + } + .tag(Tab.files) } + .accentColor(colorScheme == .dark ? .white : .black) } } #Preview { - ServerView(server: HotlineServer(address: "192.168.1.1", port: 5050, users: 5, name: "Ye Olde Server", description: "This is a server")) + ServerView() .environment(HotlineClient()) - .environment(HotlineTrackerClient(tracker: HotlineTracker("hltracker.com"))) - .environment(HotlineState()) } |