feat(overlay): clickable TX badge with slice-select groundwork

TX-индикатор теперь кликабельный (хит HIT_TX → колбэк OnTxSelect) — задел
под выбор TX-слайса в мультислайсах. Три состояния цвета:
- передача идёт → красный;
- слайс выбран для TX → янтарный (CLR_TX_SEL);
- не выбран → нейтральный.

Новое состояние FTxSel прокидывается через SetExtState (пока True — один
слайс всегда TX-слайс). MainForm.OnVfoOverlayTxSelect — заглушка с TODO под
мультислайсы.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-01 17:10:34 +03:00
co-authored by Claude Opus 4.8
parent 6ad5f29657
commit 08c71c47ad
2 changed files with 31 additions and 10 deletions
+11 -1
View File
@@ -523,6 +523,7 @@ type
procedure OnVfoOverlayMute(Sender: TObject);
procedure OnVfoOverlayAudioDevice(DevIndex: Integer; const DevName: string);
procedure OnVfoOverlaySplit(Sender: TObject);
procedure OnVfoOverlayTxSelect(Sender: TObject);
procedure PushVfoOverlayExtState;
procedure PushVfoOverlayAudioDevices;
procedure OnVfoOverlayInvalidate(Sender: TObject);
@@ -966,6 +967,7 @@ begin
FVfoOverlay.OnMute := OnVfoOverlayMute;
FVfoOverlay.OnAudioDevice := OnVfoOverlayAudioDevice;
FVfoOverlay.OnSplit := OnVfoOverlaySplit;
FVfoOverlay.OnTxSelect := OnVfoOverlayTxSelect;
FVfoOverlay.OnInvalidate := OnVfoOverlayInvalidate;
FVfoOverlay.Visible := False;
FPanelHidden := False;
@@ -5144,6 +5146,13 @@ begin
PushVfoOverlayExtState;
end;
procedure TMainForm.OnVfoOverlayTxSelect(Sender: TObject);
begin
// TODO(слайсы): выбрать этот слайс как TX-слайс. Пока один слайс —
// он всегда TX-слайс, поэтому клик ничего не меняет (хук под мультислайсы).
PushVfoOverlayExtState;
end;
procedure TMainForm.OnVfoOverlayAudioDevice(DevIndex: Integer; const DevName: string);
begin
ApplyAudioDevice(DevIndex, DevName);
@@ -5153,8 +5162,9 @@ end;
procedure TMainForm.PushVfoOverlayExtState;
begin
if not (Assigned(FVfoOverlay) and FVfoOverlay.Visible) then Exit;
// TxSel: этот слайс выбран для передачи. Пока слайс один → всегда True.
FVfoOverlay.SetExtState(FController.FVolume, FController.FMuted,
FController.FSplitTxB, FController.FTransmitting);
FController.FSplitTxB, FController.FTransmitting, True);
end;
procedure TMainForm.PushVfoOverlayAudioDevices;