Improve the bandmap window

Remove the status bar and the band name, add the 75 and 150 kHz spans,
add buttons for the callsign size (saved in the settings), draw the scale
in the form's text colour so it shows in the dark theme, mark the carrier
on the VFO bar and place a sideband bar on its side of the carrier, and
show who spotted a station, when, and the comment when the pointer is on it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-24 01:21:45 +00:00
co-authored by Claude Sonnet 5.5
parent 7cf8cf29ec
commit c8bc141829
8 changed files with 170 additions and 56 deletions
@@ -82,14 +82,27 @@ public class BandmapLayoutTests
Assert.Equal(14_050_000, Scale().At(50).Hertz);
[Fact]
public void AReceiverBarIsAsWideAsTheModeItIsIn()
public void ACwReceiverBarIsCentredOnTheCarrier()
{
VfoMarker vfo = VfoMarker.Centred(
Frequency.FromKilohertz(14_025),
Frequency.FromHertz(500),
VfoRole.Receive);
VfoMarker vfo = VfoMarker.For(Frequency.FromKilohertz(14_025), Modes.Cw, VfoRole.Receive);
Assert.Equal(14_024_750, vfo.Low.Hertz);
Assert.Equal(14_025_250, vfo.High.Hertz);
Assert.Equal((14_024_750, 14_025_250), (vfo.Low.Hertz, vfo.High.Hertz));
Assert.Equal(14_025_000, vfo.Carrier.Hertz);
}
[Fact]
public void AnUpperSidebandBarStartsAtTheCarrier()
{
VfoMarker vfo = VfoMarker.For(Frequency.FromKilohertz(14_200), Modes.Usb, VfoRole.Receive);
Assert.Equal((14_200_000, 14_202_700), (vfo.Low.Hertz, vfo.High.Hertz));
}
[Fact]
public void ALowerSidebandBarEndsAtTheCarrier()
{
VfoMarker vfo = VfoMarker.For(Frequency.FromKilohertz(7_100), Modes.Lsb, VfoRole.Receive);
Assert.Equal((7_097_300, 7_100_000), (vfo.Low.Hertz, vfo.High.Hertz));
}
}