From 6ab97d2dfe563c2c43c2519b2e6f22494572045c Mon Sep 17 00:00:00 2001 From: Arturs Artamonovs Date: Fri, 19 Jul 2024 10:50:06 +0100 Subject: Add network configuration windows in LearnMapKit --- ADSBDecoder.xcodeproj/project.pbxproj | 4 ++ ADSBStats/main.swift | 14 ++++-- LearnMapKit/ContentView.swift | 86 +++++------------------------------ LearnMapKit/LearnMapKitApp.swift | 9 ++++ LearnMapKit/NetConfigView.swift | 45 ++++++++++++++++++ Net1090/main.swift | 9 +++- 6 files changed, 88 insertions(+), 79 deletions(-) create mode 100644 LearnMapKit/NetConfigView.swift diff --git a/ADSBDecoder.xcodeproj/project.pbxproj b/ADSBDecoder.xcodeproj/project.pbxproj index 010ce91..f8a27db 100644 --- a/ADSBDecoder.xcodeproj/project.pbxproj +++ b/ADSBDecoder.xcodeproj/project.pbxproj @@ -30,6 +30,7 @@ 8D93B6942C4598E300C91865 /* AirplaneTracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DB347C42C242BAC00F3C020 /* AirplaneTracker.swift */; }; 8D93B6962C45992F00C91865 /* ArgumentParser in Frameworks */ = {isa = PBXBuildFile; productRef = 8D93B6952C45992F00C91865 /* ArgumentParser */; }; 8D93B6982C45993600C91865 /* Collections in Frameworks */ = {isa = PBXBuildFile; productRef = 8D93B6972C45993600C91865 /* Collections */; }; + 8D93B69A2C4A665B00C91865 /* NetConfigView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D93B6992C4A665B00C91865 /* NetConfigView.swift */; }; 8DB347BF2C1C501200F3C020 /* PositionDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DB347BE2C1C501200F3C020 /* PositionDecoder.swift */; }; 8DB347C32C1C53ED00F3C020 /* Collections in Frameworks */ = {isa = PBXBuildFile; productRef = 8DB347C22C1C53ED00F3C020 /* Collections */; }; 8DB347C52C242BAC00F3C020 /* AirplaneTracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DB347C42C242BAC00F3C020 /* AirplaneTracker.swift */; }; @@ -115,6 +116,7 @@ 8D93B6782C3FE6F400C91865 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; 8D93B6872C45986700C91865 /* ADSBStats */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ADSBStats; sourceTree = BUILT_PRODUCTS_DIR; }; 8D93B6892C45986700C91865 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; + 8D93B6992C4A665B00C91865 /* NetConfigView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetConfigView.swift; sourceTree = ""; }; 8DB347BE2C1C501200F3C020 /* PositionDecoder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PositionDecoder.swift; sourceTree = ""; }; 8DB347C42C242BAC00F3C020 /* AirplaneTracker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AirplaneTracker.swift; sourceTree = ""; }; 8DEC6F2D2C2E9C3000AC6209 /* ADSBRunner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ADSBRunner.swift; sourceTree = ""; }; @@ -286,6 +288,7 @@ children = ( 8DEC6F2D2C2E9C3000AC6209 /* ADSBRunner.swift */, 8DF756862C10556A008E8DFF /* ContentView.swift */, + 8D93B6992C4A665B00C91865 /* NetConfigView.swift */, 8DF756842C10556A008E8DFF /* LearnMapKitApp.swift */, 8DEC6F312C31530C00AC6209 /* FlighState.swift */, 8DF756882C10556C008E8DFF /* Assets.xcassets */, @@ -612,6 +615,7 @@ 8DEC6F322C31530C00AC6209 /* FlighState.swift in Sources */, 8DF756852C10556A008E8DFF /* LearnMapKitApp.swift in Sources */, 8D93B6542C32095800C91865 /* ADSBRegEx.swift in Sources */, + 8D93B69A2C4A665B00C91865 /* NetConfigView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/ADSBStats/main.swift b/ADSBStats/main.swift index 20ea285..d431e1f 100644 --- a/ADSBStats/main.swift +++ b/ADSBStats/main.swift @@ -8,7 +8,8 @@ import Foundation import ArgumentParser import RegexBuilder -//import SQLite3 +import SQLite3 +import SwiftData decoder_debug_mode = false @@ -16,7 +17,8 @@ struct CommandLineArgs: ParsableCommand { @Option(name: .shortAndLong) var inputfile: String @Flag(name: .shortAndLong) var debug:Bool = false @Flag(name: .shortAndLong) var version:Bool = false - @Flag(name: .shortAndLong) var show_stats:Bool = false + @Flag(name: .shortAndLong) var showstats:Bool = false + @Flag(name: .shortAndLong) var dbadd:Bool = false } let args = CommandLineArgs.parseOrExit() @@ -105,7 +107,7 @@ for line in adsb_source.components(separatedBy: .newlines) { } -if args.show_stats { +if args.showstats { print("----STAT----") //q_df.showStat() print(q_df) @@ -116,3 +118,9 @@ if args.show_stats { print("Total message:\(count_messages)") } + +//Add new plane names to database +if args.dbadd { + print("Adding to database") + +} diff --git a/LearnMapKit/ContentView.swift b/LearnMapKit/ContentView.swift index 13ef64f..9f7fd29 100644 --- a/LearnMapKit/ContentView.swift +++ b/LearnMapKit/ContentView.swift @@ -9,6 +9,8 @@ import SwiftUI import MapKit import Collections + + struct FlightView: View { var evilClass: FlightState @@ -41,6 +43,7 @@ struct ContentView: View { @Binding var pos_queue: Deque @EnvironmentObject var evilClass: FlightState + @Environment(\.openWindow) private var openWindow let initialPosition: MapCameraPosition = { @@ -87,73 +90,6 @@ struct ContentView: View { //.padding() Map(initialPosition: initialPosition) { - /*Annotation("plane1", coordinate: position1) { - ZStack { - RoundedRectangle(cornerRadius: 10) - .fill(.background) - RoundedRectangle(cornerRadius: 10) - .stroke(.secondary,lineWidth: 5) - Image(systemName:"airplane.circle.fill") - .resizable() - .frame(width:20,height: 20) - } - }.annotationTitles(.hidden) - Annotation("plane2", coordinate: position2) { - ZStack { - RoundedRectangle(cornerRadius: 10) - .fill(.background) - RoundedRectangle(cornerRadius: 10) - .stroke(.secondary,lineWidth: 5) - Image(systemName:"airplane.circle.fill") - .resizable() - .frame(width:20,height: 20) - } - }.annotationTitles(.hidden) - Annotation("plane3", coordinate: position3) { - ZStack { - RoundedRectangle(cornerRadius: 10) - .fill(.background) - RoundedRectangle(cornerRadius: 10) - .stroke(.secondary,lineWidth: 5) - Image(systemName:"airplane.circle.fill") - .resizable() - .frame(width:20,height: 20) - } - }.annotationTitles(.hidden) - Annotation("plane4", coordinate: position4) { - ZStack { - RoundedRectangle(cornerRadius: 10) - .fill(.background) - RoundedRectangle(cornerRadius: 10) - .stroke(.secondary,lineWidth: 5) - Image(systemName:"airplane.circle.fill") - .resizable() - .frame(width:20,height: 20) - } - }.annotationTitles(.hidden)*//* - ForEach(0.. some View { - let c = self.evilClass.flight.count - ForEach(0.. = [] @StateObject private var flightState = FlightState() @@ -27,6 +32,10 @@ struct LearnMapKitApp: App { WindowGroup { ContentView(pos_queue: $queue) }.environmentObject(flightState) + + WindowGroup("Network", id: "net-config") { + NetConfigView() + } } } diff --git a/LearnMapKit/NetConfigView.swift b/LearnMapKit/NetConfigView.swift new file mode 100644 index 0000000..06fc5c2 --- /dev/null +++ b/LearnMapKit/NetConfigView.swift @@ -0,0 +1,45 @@ +// +// NetConfigView.swift +// LearnMapKit +// +// Created by Jacky Jack on 19/07/2024. +// + +import SwiftUI + +struct NetConfigView: View { + @State private var server_name: String = "" + @State private var server_port: String = "" + @Environment(\.dismissWindow) private var dismissWindow + + var body: some View { + VStack { + HStack { + Text("Server") + TextField("Server", text: $server_name) + } + HStack { + Text("Port") + TextField("Port", text: $server_port) + } + HStack { + Button(action:{ + print("Cancel") + dismissWindow(id:"net-config") + }) { + Text("Cancel") + } + Button(action: { + print("Save config") + dismissWindow(id:"net-config") + }) { + Text("Save") + } + } + } + } +} + +#Preview { + NetConfigView() +} diff --git a/Net1090/main.swift b/Net1090/main.swift index 93ff716..04d0384 100644 --- a/Net1090/main.swift +++ b/Net1090/main.swift @@ -9,6 +9,7 @@ import Foundation import Network import NIO + class ADSBHandlder: ChannelInboundHandler { typealias InboundIn = ByteBuffer typealias OutboundOut = ByteBuffer @@ -58,7 +59,13 @@ class TCPClient { } func stop() { - + do { + try group.syncShutdownGracefully() + } catch let error { + print("Error shutting down \(error.localizedDescription)") + exit(0) + } + print("Connection closed") } } -- cgit v1.2.3