Files

85 lines
2.9 KiB
Swift

//
// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
import SwiftUI
import NearbyConnections
struct ContentView: View {
@EnvironmentObject private var model: Model
let strategies: [Strategy: String] = [
.cluster: "Cluster",
.pointToPoint: "Point to Point",
.star: "Star"
]
var body: some View {
NavigationSplitView {
Form {
TextField("Endpoint Name", text: $model.endpointName)
Picker("Strategy", selection: $model.strategy) {
ForEach(Array(strategies), id: \.key) { key, value in
Text(value).tag(key)
}
}
Toggle("Advertising", isOn: $model.isAdvertisingEnabled)
Toggle("Discovery", isOn: $model.isDiscoveryEnabled)
if !model.requests.isEmpty {
Section(header: Text("Pending Connections")) {
ForEach(model.requests) { request in
NavigationLink(value: request.endpointID) {
Text(request.endpointName)
}
}
}
}
if !model.connections.isEmpty {
Section(header: Text("Connections")) {
ForEach(model.connections) { connection in
NavigationLink(value: connection.endpointID) {
Text(connection.endpointName)
}
}
}
}
if !model.endpoints.isEmpty {
Section(header: Text("Endpoints")) {
ForEach(model.endpoints) { endpoint in
NavigationLink(value: endpoint.endpointID) {
Text(endpoint.endpointName)
}
}
}
}
}
.navigationDestination(for: String.self) { endpointID in
EndpointDetail(endpointID: endpointID)
}
.navigationTitle("Hello Connections")
} detail: {
Text("No Endpoints Selected")
.font(.headline)
.foregroundColor(.secondary)
}
}
}