MCPcopy Create free account
hub / github.com/aethersdr/AetherSDR / toggleAetherialStrip

Method toggleAetherialStrip

src/gui/MainWindow.cpp:7168–7296  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7166}
7167
7168void MainWindow::toggleAetherialStrip()
7169{
7170 if (!m_aetherialStrip) {
7171 m_aetherialStrip = new AetherialAudioStrip(m_audio, this);
7172 // Override the parent-window relationship so the strip behaves as
7173 // an independent window (own taskbar entry, raisable separately).
7174 m_aetherialStrip->setWindowFlag(Qt::Window, true);
7175 // Secondary window — must not gate quitOnLastWindowClosed on Windows.
7176 m_aetherialStrip->setAttribute(Qt::WA_QuitOnClose, false);
7177 // Seed the embedded EQ with the current TX filter cutoff values
7178 // so the dashed yellow guide lines render immediately rather than
7179 // waiting for the next txFilterCutoffChanged signal.
7180 const auto& tx = m_radioModel.transmitModel();
7181 m_aetherialStrip->setTxFilterCutoffs(tx.txFilterLow(), tx.txFilterHigh());
7182 // Drag-to-adjust on the strip's EQ cutoff lines → same handler
7183 // the floating ClientEqEditor uses, so dragging in the strip
7184 // writes the same TX filter command to the radio.
7185 connect(m_aetherialStrip, &AetherialAudioStrip::cutoffsDragRequested,
7186 this, &MainWindow::onEqCutoffsDragRequested);
7187 // Wire the strip's RX ADSP widget through the same parameter-
7188 // change handlers the Settings dialog and docked applet use.
7189 // Without this, NR2/NR4/DFNR/BNR/MNR controls in the strip
7190 // emit signals that nothing receives.
7191 if (auto* adsp = m_aetherialStrip->adspWidget())
7192 wireAetherDspWidget(adsp);
7193 // Stage bypass via the strip's chain tiles → same handler the
7194 // docked Chain applet's signal connects to, so both chain
7195 // widgets repaint and the matching applet refreshes.
7196 connect(m_aetherialStrip, &AetherialAudioStrip::stageEnabledChanged,
7197 this, &MainWindow::onTxChainStageEnabledChanged);
7198
7199 // RX chain wiring — sibling of the TX hookups above (#2425).
7200 // Stage bypass on an RX tile fans out to: docked chain applet
7201 // (so its painted tile repaints), and per-stage RX applets so
7202 // their Enable toggles stay aligned with the engine state.
7203 connect(m_aetherialStrip, &AetherialAudioStrip::rxStageEnabledChanged,
7204 this, [this](AudioEngine::RxChainStage stage, bool /*enabled*/) {
7205 if (auto* dockedChain = m_appletPanel
7206 ? m_appletPanel->clientChainApplet() : nullptr) {
7207 dockedChain->refreshFromEngine();
7208 }
7209 if (!m_appletPanel) return;
7210 switch (stage) {
7211 case AudioEngine::RxChainStage::Eq:
7212 if (m_appletPanel->clientEqRxApplet())
7213 m_appletPanel->clientEqRxApplet()->refreshEnableFromEngine();
7214 break;
7215 case AudioEngine::RxChainStage::Gate:
7216 if (m_appletPanel->clientGateRxApplet())
7217 m_appletPanel->clientGateRxApplet()->refreshEnableFromEngine();
7218 break;
7219 case AudioEngine::RxChainStage::Comp:
7220 if (m_appletPanel->clientCompRxApplet())
7221 m_appletPanel->clientCompRxApplet()->refreshEnableFromEngine();
7222 break;
7223 case AudioEngine::RxChainStage::Tube:
7224 if (m_appletPanel->clientTubeRxApplet())
7225 m_appletPanel->clientTubeRxApplet()->refreshEnableFromEngine();

Callers

nothing calls this directly

Calls 15

txFilterLowMethod · 0.80
txFilterHighMethod · 0.80
adspWidgetMethod · 0.80
clientChainAppletMethod · 0.80
clientEqRxAppletMethod · 0.80
clientGateRxAppletMethod · 0.80
clientCompRxAppletMethod · 0.80
clientTubeRxAppletMethod · 0.80
clientPuduRxAppletMethod · 0.80
hasRecordingMethod · 0.80
micSelectionMethod · 0.80
daxOnMethod · 0.80

Tested by

no test coverage detected