fix(ui): sync main slice controls with panel

This commit is contained in:
2026-07-14 20:28:10 +03:00
parent b7dd57c64f
commit 53aef502e9
2 changed files with 6 additions and 46 deletions
+4 -45
View File
@@ -5342,8 +5342,6 @@ begin
end; end;
procedure TMainForm.OnModeFilterSelect(Mode: Integer; FilterBW: Integer); procedure TMainForm.OnModeFilterSelect(Mode: Integer; FilterBW: Integer);
var
Idx: Integer;
begin begin
// Событие пришло от флага слайса (B+) — маршрутизируем в slice-API, главный не трогаем. // Событие пришло от флага слайса (B+) — маршрутизируем в slice-API, главный не трогаем.
if CurSliceId <> 0 then if CurSliceId <> 0 then
@@ -5353,51 +5351,12 @@ begin
LayoutFlagsAllPans; LayoutFlagsAllPans;
Exit; Exit;
end; end;
FController.FMode := Mode; // Main flag A and the left panel edit the same receiver. Use the public
FController.FFilterBW := FilterBW; // controller commands so rfMode/rfFilter repaint every duplicate control.
case Mode of if Mode <> FController.FMode then FController.SetMode(Mode);
MODE_FM: FController.SetFilterBW(FilterBW);
begin
FController.FFilter := FILT_FM_DEF;
for Idx := 0 to FILT_FM_COUNT - 1 do
if FILT_FM_BW[Idx] = FilterBW then
begin
FController.FFilter := Idx;
FController.FFMDeviation := FILT_FM_DEV[Idx];
Break;
end;
end;
MODE_WFM:
begin
FController.FFilter := FILT_WFM_DEF;
for Idx := 0 to FILT_WFM_COUNT - 1 do
if FILT_WFM_BW[Idx] = FilterBW then
begin
FController.FFilter := Idx;
Break;
end;
end;
MODE_DMR:
begin
FController.FFilter := 0;
FController.FFilterBW := FILT_DMR_BW;
FController.FFMDeviation := DMR_FM_DEV;
end;
end;
if FController.FWDSPReady then
begin
FController.FDSPEngine.SetMode(FController.FMode);
FController.ApplyModeFilter;
end;
SyncSpecViewFreq;
if Assigned(FVfoOverlay) and FVfoOverlay.Visible then
begin
FVfoOverlay.SetState(FController.FMode, FController.FFilterBW, FController.FVfoA, FController.FLastSMeter);
FVfoOverlay.SetDSPState(FController.FNRMode, FController.FNBMode, FController.FSNB, FController.FANF, FController.FAGCMode);
FVfoOverlay.SetSquelchState(FController.FFMSQOn, FController.FFMSQLevel);
FPan.LayoutFlags; // перепозиционируем при смене LSB↔USB FPan.LayoutFlags; // перепозиционируем при смене LSB↔USB
end; end;
end;
procedure TMainForm.OnVfoOverlayDSPChange(NRMode, NBMode: Integer; SNBOn, ANFOn: Boolean); procedure TMainForm.OnVfoOverlayDSPChange(NRMode, NBMode: Integer; SNBOn, ANFOn: Boolean);
begin begin
+1
View File
@@ -3184,6 +3184,7 @@ var
BW_arr: array[0..FILT_COUNT-1] of Integer; BW_arr: array[0..FILT_COUNT-1] of Integer;
best, dist, i: Integer; best, dist, i: Integer;
begin begin
if FMode = MODE_DMR then BWHz := FILT_DMR_BW;
FFilterBW := BWHz; FFilterBW := BWHz;
for i := 0 to FILT_COUNT-1 do BW_arr[i] := MaxInt; for i := 0 to FILT_COUNT-1 do BW_arr[i] := MaxInt;
case FMode of case FMode of