2021-08-20 07:56:05 -07:00
|
|
|
/*
|
2023-03-03 20:08:04 -08:00
|
|
|
Copyright (c) Garth Vander Houwen 2021
|
|
|
|
|
*/
|
2021-08-20 07:56:05 -07:00
|
|
|
|
|
|
|
|
import SwiftUI
|
|
|
|
|
|
2024-05-06 23:03:51 -07:00
|
|
|
@available(iOS 17.0, *)
|
2021-08-20 07:56:05 -07:00
|
|
|
struct ContentView: View {
|
2024-05-06 23:03:51 -07:00
|
|
|
|
2023-08-21 10:24:17 -05:00
|
|
|
@StateObject var appState = AppState.shared
|
2023-03-03 20:08:04 -08:00
|
|
|
var body: some View {
|
2023-08-21 10:24:17 -05:00
|
|
|
TabView(selection: $appState.tabSelection) {
|
2024-05-14 22:39:07 -07:00
|
|
|
Messages()
|
2022-01-01 08:03:46 -08:00
|
|
|
.tabItem {
|
2022-12-12 21:51:43 -08:00
|
|
|
Label("messages", systemImage: "message")
|
2022-01-01 08:03:46 -08:00
|
|
|
}
|
|
|
|
|
.tag(Tab.contacts)
|
2023-09-03 09:04:07 -07:00
|
|
|
.badge(appState.unreadDirectMessages + appState.unreadChannelMessages)
|
2021-10-17 01:05:44 -07:00
|
|
|
Connect()
|
|
|
|
|
.tabItem {
|
2022-12-12 21:51:43 -08:00
|
|
|
Label("bluetooth", systemImage: "antenna.radiowaves.left.and.right")
|
2021-10-17 01:05:44 -07:00
|
|
|
}
|
|
|
|
|
.tag(Tab.ble)
|
2024-05-14 22:39:07 -07:00
|
|
|
NodeList()
|
2022-10-14 22:18:28 -07:00
|
|
|
.tabItem {
|
2022-12-12 21:51:43 -08:00
|
|
|
Label("nodes", systemImage: "flipphone")
|
2022-10-14 22:18:28 -07:00
|
|
|
}
|
|
|
|
|
.tag(Tab.nodes)
|
2023-11-07 21:20:11 -08:00
|
|
|
if #available(iOS 17.0, macOS 14.0, *) {
|
2023-11-11 09:58:54 -08:00
|
|
|
if UserDefaults.mapUseLegacy {
|
|
|
|
|
NodeMap()
|
|
|
|
|
.tabItem {
|
|
|
|
|
Label("map", systemImage: "map")
|
|
|
|
|
}
|
|
|
|
|
.tag(Tab.map)
|
|
|
|
|
} else {
|
|
|
|
|
MeshMap()
|
|
|
|
|
.tabItem {
|
|
|
|
|
Label("map", systemImage: "map")
|
|
|
|
|
}
|
|
|
|
|
.tag(Tab.map)
|
|
|
|
|
}
|
2023-11-07 21:20:11 -08:00
|
|
|
} else {
|
|
|
|
|
NodeMap()
|
|
|
|
|
.tabItem {
|
|
|
|
|
Label("map", systemImage: "map")
|
|
|
|
|
}
|
|
|
|
|
.tag(Tab.map)
|
|
|
|
|
}
|
2022-10-14 22:18:28 -07:00
|
|
|
Settings()
|
|
|
|
|
.tabItem {
|
2022-12-12 21:51:43 -08:00
|
|
|
Label("settings", systemImage: "gear")
|
2023-08-26 20:45:15 -07:00
|
|
|
.font(.title)
|
2022-10-14 22:18:28 -07:00
|
|
|
}
|
|
|
|
|
.tag(Tab.settings)
|
2023-03-03 20:08:04 -08:00
|
|
|
}
|
|
|
|
|
}
|
2021-08-20 07:56:05 -07:00
|
|
|
}
|
2024-05-29 16:40:07 -05:00
|
|
|
// #Preview {
|
2024-05-06 23:03:51 -07:00
|
|
|
// if #available(iOS 17.0, *) {
|
|
|
|
|
// // ContentView(deepLinkManager: .init())
|
|
|
|
|
// } else {
|
|
|
|
|
// // Fallback on earlier versions
|
|
|
|
|
// }
|
2024-05-29 16:40:07 -05:00
|
|
|
// }
|
2021-08-20 07:56:05 -07:00
|
|
|
|
2024-05-29 16:40:07 -05:00
|
|
|
// struct ContentView_Previews: PreviewProvider {
|
2024-05-06 23:03:51 -07:00
|
|
|
// static var previews: some View {
|
|
|
|
|
// ContentView()
|
|
|
|
|
// }
|
2024-05-29 16:40:07 -05:00
|
|
|
// }
|
2023-08-21 10:24:17 -05:00
|
|
|
|
2024-05-06 23:03:51 -07:00
|
|
|
enum Tab: Hashable {
|
2023-08-21 10:24:17 -05:00
|
|
|
case contacts
|
|
|
|
|
case messages
|
|
|
|
|
case map
|
|
|
|
|
case ble
|
|
|
|
|
case nodes
|
|
|
|
|
case settings
|
|
|
|
|
}
|