12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import SwiftUI
- struct ConnectionSettingsView: View {
- @ObservedObject var networkService: NetworkService
- @Binding var customHost: String
- @Binding var customPort: String
- @Environment(\.dismiss) private var dismiss
- var body: some View {
- NavigationView {
- Form {
- Section(header: Text("Raspberry Pi Connection")) {
- HStack {
- Text("IP Address:")
- Spacer()
- TextField("192.168.1.100", text: $customHost)
- .textFieldStyle(RoundedBorderTextFieldStyle())
- .keyboardType(.decimalPad)
- }
- HStack {
- Text("Port:")
- Spacer()
- TextField("8080", text: $customPort)
- .textFieldStyle(RoundedBorderTextFieldStyle())
- .keyboardType(.numberPad)
- }
- }
- Section(header: Text("Connection Info")) {
- HStack {
- Text("Status:")
- Spacer()
- Text(networkService.connectionStatus)
- .foregroundColor(networkService.isConnected ? .green : .red)
- }
- }
- Section(header: Text("Quick Actions")) {
- Button("Test Connection") {
- testConnection()
- }
- .disabled(customHost.isEmpty)
- Button("Send Status Request") {
- networkService.sendCommand(.status())
- }
- .disabled(!networkService.isConnected)
- }
- }
- .navigationTitle("Connection Settings")
- .navigationBarTitleDisplayMode(.inline)
- .toolbar {
- ToolbarItem(placement: .navigationBarLeading) {
- Button("Cancel") { dismiss() }
- }
- ToolbarItem(placement: .navigationBarTrailing) {
- Button("Done") { dismiss() }
- }
- }
- }
- }
- private func testConnection() {
- let host = customHost.isEmpty ? "192.168.1.100" : customHost
- let port = UInt16(customPort) ?? 8080
- networkService.connect(host: host, port: port)
- }
- }
- struct ConnectionSettingsView_Previews: PreviewProvider {
- static var previews: some View {
- ConnectionSettingsView(
- networkService: NetworkService(),
- customHost: .constant("192.168.1.100"),
- customPort: .constant("8080")
- )
- }
- }
|