From d347538fbc5c9d6b3246712b22d92b871b1794e8 Mon Sep 17 00:00:00 2001 From: ericek111 Date: Fri, 28 Aug 2026 11:32:22 +0000 Subject: [PATCH] Lay the station form out the way N1MM lays it out The dialog now carries N1MM's fields in N1MM's order, with the labels to the left of the boxes and the tip text at the top right. New fields in StoredStation: the address, the licence class, the position, the radio, the antenna and the email address. The grid square and the position fill each other in, as they do in N1MM. Which box has focus decides the direction, because TextChanged arrives too late to tell a typed edit from a programmed one. The fields N1MM's form does not have are gone from it. Continent and the country prefix are looked up from the callsign after Ok; the rest keep the value they had. Co-Authored-By: Claude Opus 5 --- src/Nonemm.App/Configuration/Settings.cs | 34 ++++ src/Nonemm.App/Dialogs/StationDialog.axaml | 153 +++++++++++++----- src/Nonemm.App/Dialogs/StationDialog.axaml.cs | 117 +++++++++++--- src/Nonemm.App/Windows/EntryWindow.Menu.cs | 15 +- src/Nonemm.Core/GridSquare.cs | 18 +++ tests/Nonemm.Core.Tests/GridSquareTests.cs | 11 ++ 6 files changed, 283 insertions(+), 65 deletions(-) diff --git a/src/Nonemm.App/Configuration/Settings.cs b/src/Nonemm.App/Configuration/Settings.cs index 43c5f35..0072257 100644 --- a/src/Nonemm.App/Configuration/Settings.cs +++ b/src/Nonemm.App/Configuration/Settings.cs @@ -356,6 +356,38 @@ public sealed record StoredStation { public string Callsign { get; init; } = ""; + public string Address1 { get; init; } = ""; + + public string Address2 { get; init; } = ""; + + public string City { get; init; } = ""; + + public string Zip { get; init; } = ""; + + /// The country written out, as it goes on an award application. The prefix + /// the contest rules compare against is `CountryPrefix`. + public string Country { get; init; } = ""; + + public string License { get; init; } = ""; + + public double Latitude { get; init; } + + public double Longitude { get; init; } + + /// The radio, as N1MM's "Station" box asks for it. + public string Rig { get; init; } = ""; + + public string Antenna { get; init; } = ""; + + public string AntennaHeight { get; init; } = ""; + + /// Height above sea level. + public string AboveSeaLevel { get; init; } = ""; + + public string RoverQth { get; init; } = ""; + + public string Email { get; init; } = ""; + public int CqZone { get; init; } public int ItuZone { get; init; } @@ -401,5 +433,7 @@ public sealed record StoredStation Club = Club, Check = Check, Precedence = Precedence, + Latitude = Latitude, + Longitude = Longitude, }; } diff --git a/src/Nonemm.App/Dialogs/StationDialog.axaml b/src/Nonemm.App/Dialogs/StationDialog.axaml index ed5db46..bca2cb4 100644 --- a/src/Nonemm.App/Dialogs/StationDialog.axaml +++ b/src/Nonemm.App/Dialogs/StationDialog.axaml @@ -1,56 +1,123 @@ - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - -