mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 18:43:51 +00:00
Phase 2: move widget-stored state into TRadioController
NR/NB modes, SNB/ANF flags, and drive % were stored only in the widgets themselves (Btn*.Tag, TrkDrive.Position) — the last hard blocker to a headless/daemon mode, since without those controls the state had nowhere to live and CAT/Web read them directly. - NR/NB: BtnNR.Tag/BtnNB.Tag -> FController.FNRMode/FNBMode (Integer). - SNB/ANF: BtnSNB.Tag/BtnANF.Tag (0/1) -> FController.FSNB/FANF (Boolean). - Drive %: TrkDrive.Position -> new FController.FDrivePercent; the slider is now pure input (TrkDriveChange pushes its value into the controller), while FDriveLevel stays the derived hardware byte. Buttons/sliders become pure view+input: click handlers and UpdateXButton read/write the controller field; CAT getters, the web snapshot, and GetSnapshot all source state from the controller, not the widgets. No behavioral change. Builds clean (cocoa). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
63eb2c701f
commit
2cf01036a3
+6
-5
@@ -142,7 +142,8 @@ type
|
||||
// ---- Аудио / TX ----
|
||||
FVolume: Integer;
|
||||
FMuted: Boolean;
|
||||
FDriveLevel: Byte;
|
||||
FDrivePercent: Integer; // драйв 0..100 % (UI-уровень, источник истины)
|
||||
FDriveLevel: Byte; // вычисляемый hardware-байт (CalcDriveByte)
|
||||
FAtten: Integer;
|
||||
FPAMaxPower: Double;
|
||||
FRunning: Boolean;
|
||||
@@ -287,7 +288,7 @@ begin
|
||||
FVfoA := 14200000; FVfoB := 7100000; FActiveVfo := 0;
|
||||
FMode := 1; FFilter := 5; FFilterBW := 2700;
|
||||
FAGCMode := 1; FAGCTop := 90;
|
||||
FVolume := 70; FDriveLevel := 0; FAtten := 0;
|
||||
FVolume := 70; FDrivePercent := 50; FDriveLevel := 0; FAtten := 0;
|
||||
FCenterFreq := FVfoA; FSpanHz := 192000; FSampleRate := 192000;
|
||||
FCurrentBand := 5; FCurrentXvtr := -1;
|
||||
FPAMaxPower := 100.0;
|
||||
@@ -322,7 +323,7 @@ begin
|
||||
Result.SampleRate := FSampleRate; Result.ActiveVfo := FActiveVfo;
|
||||
Result.Mode := FMode; Result.Filter := FFilter; Result.FilterBW := FFilterBW;
|
||||
Result.AGCMode := FAGCMode; Result.AGCTop := FAGCTop;
|
||||
Result.Volume := FVolume; Result.Drive := FDriveLevel; Result.Atten := FAtten;
|
||||
Result.Volume := FVolume; Result.Drive := FDrivePercent; Result.Atten := FAtten;
|
||||
Result.Band := FCurrentBand; Result.Xvtr := FCurrentXvtr;
|
||||
Result.Muted := FMuted; Result.CTun := FCTun; Result.Duplex := FDisplayDuplex;
|
||||
Result.Running := FRunning; Result.Connected := FDevConnected;
|
||||
@@ -402,10 +403,10 @@ procedure TRadioController.ToggleMute;
|
||||
begin SetMute(not FMuted); end;
|
||||
|
||||
procedure TRadioController.SetDrive(V: Integer);
|
||||
begin FDriveLevel := Byte(V); Changed(rfDrive); { TODO wiring } end;
|
||||
begin FDrivePercent := V; Changed(rfDrive); { TODO wiring: CalcDriveByte + WDSP } end;
|
||||
|
||||
procedure TRadioController.DriveBy(Delta: Integer);
|
||||
begin SetDrive(FDriveLevel + Delta); end;
|
||||
begin SetDrive(FDrivePercent + Delta); end;
|
||||
|
||||
procedure TRadioController.SetAtten(Idx: Integer);
|
||||
begin FAtten := Idx; Changed(rfAtten); { TODO wiring } end;
|
||||
|
||||
Reference in New Issue
Block a user