Count down the band change timer in the status bar

SOBandChangeTimerDuration and MOBandChangeTimerDuration say how long a
station has to stay on a band it has just moved to. Both were read by
nothing: N1MM counts them down in its info window, which this program
does not have.

The countdown now stands in the entry window's status bar, next to the
contacts and multipliers, ticking with the clock that is already there.
BandChangeRules.StayLeft works it out from the log, starting the stay at
the minute after the contact that changed band, which is where N1MM
starts it.

Which contests show it is decided at runtime rather than by a list: the
rules come from the contest for the entry's own category, so a file that
asks for no stay, or asks for one only of single-op entries while the
station is entered multi-op, shows nothing at all.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RoGtneMQaz4M9w7Kk49AVD
This commit is contained in:
2026-08-31 13:51:17 +00:00
parent de010fb981
commit 2eeda451c3
6 changed files with 127 additions and 13 deletions

View File

@@ -323,6 +323,8 @@ Along the bottom of the entry window is N1MM's status bar, in three parts:
so IARU shows the ITU zone and CQ WW the CQ zone. When something has just
happened — a contact logged, a call stacked, a download finished — that stands
there instead until the next keystroke.
- Then the band change timer, for a contest that asks a station to stay on a
band for so long after moving to it.
- In the middle, the contacts and multipliers: `10/7/8` is ten contacts, seven
zones and eight countries, one number per multiplier the contest counts. It
reads `No Score` before the first contact, as N1MM's does.
@@ -445,8 +447,15 @@ The score summary shows the time on and the time off under the score. A break
counts as time off once it is as long as the contest's `MinimumOffTime`, which
is 30 minutes unless the file says otherwise. Next to them, for a contest that
limits band changes, are the changes made and the allowance —
`SingleOpCountableBandChange` and the rest of that family. N1MM's countdown for
the minutes you have to stay on a new band is not here.
`SingleOpCountableBandChange` and the rest of that family.
`SOBandChangeTimerDuration` and `MOBandChangeTimerDuration` say how long a
station has to stay on a band it has moved to, and the countdown stands in the
status bar while it runs, reading `band 04:12``band/mode 04:12` for a contest
that counts a change of mode as well. It is there only for a contest that asks
for a stay and for the category the contest counts band changes for, so most
contests show nothing. The stay starts at the minute after the contact that
changed band, which is where N1MM starts it.
### Radios