diff --git a/src/Nonemm.App/AppSession.cs b/src/Nonemm.App/AppSession.cs index 6aca402..9b584ab 100644 --- a/src/Nonemm.App/AppSession.cs +++ b/src/Nonemm.App/AppSession.cs @@ -122,6 +122,14 @@ public sealed class AppSession : IDisposable public CheckWindowSources? Check { get; private set; } + /// Where a line of received text goes while the QTC window is taking + /// traffic down on RTTY. The other station sends the header and the whole + /// series in one transmission, and the operator clicks each line in the + /// digital window rather than typing it, which is how N1MM works. The QTC + /// window sets this while it is open and returns whether the line went + /// into it. + public Func? QtcLines { get; set; } + /// What is spotted and not worked yet. public AvailableStations? Available { get; private set; } diff --git a/src/Nonemm.App/Configuration/Settings.cs b/src/Nonemm.App/Configuration/Settings.cs index 335f900..02593e2 100644 --- a/src/Nonemm.App/Configuration/Settings.cs +++ b/src/Nonemm.App/Configuration/Settings.cs @@ -208,6 +208,25 @@ public sealed record Settings public string QtcRttySendAllEnding { get; init; } = QtcMessages.DefaultSendAllEnding; + /// What goes out when the station reading traffic out closes the window, + /// which is N1MM's `WAESSaveQTCText`. + public string QtcRttySendSave { get; init; } = QtcMessages.DefaultRttySendSave; + + /// What the station reading traffic out asks before it starts, N1MM's + /// `WAERUQRVText`. + public string QtcRttyAreYouReady { get; init; } = QtcMessages.DefaultRttyAreYouReady; + + /// The four messages of the station taking traffic down, N1MM's + /// `WAERXReadyText`, `WAEAllAgnText`, `WAEAGNText` and `WAESaveQTCText`. + /// `$` in the line message stands for the line being asked for. + public string QtcRttyReady { get; init; } = QtcMessages.DefaultRttyReady; + + public string QtcRttyAllAgain { get; init; } = QtcMessages.DefaultRttyAllAgain; + + public string QtcRttyLineAgain { get; init; } = QtcMessages.DefaultRttyLineAgain; + + public string QtcRttySave { get; init; } = QtcMessages.DefaultRttySave; + /// The log window's columns, as `QsoField` names left to right. Empty means /// the set the contest opens with. public IReadOnlyList LogColumns { get; init; } = []; diff --git a/src/Nonemm.App/Dialogs/QtcSetupDialog.axaml b/src/Nonemm.App/Dialogs/QtcSetupDialog.axaml index f83abf7..3301d2f 100644 --- a/src/Nonemm.App/Dialogs/QtcSetupDialog.axaml +++ b/src/Nonemm.App/Dialogs/QtcSetupDialog.axaml @@ -33,19 +33,36 @@ - - - - + + + + + + + + - + + + + + + + + + + + + + Text="N1MM's SSB recordings are left out: playing those needs a voice keyer, and this program has none." />