keyPressEvent()/keyReleaseEvent() lives in MainWindow_Shortcuts.cpp (#3351 Phase 1c).
| 3142 | |
| 3143 | // keyPressEvent()/keyReleaseEvent() lives in MainWindow_Shortcuts.cpp (#3351 Phase 1c). |
| 3144 | void MainWindow::cancelTransmitFromIndicator() |
| 3145 | { |
| 3146 | if (!m_radioModel.isConnected()) { |
| 3147 | statusBar()->showMessage("TX cancel ignored: not connected", 2000); |
| 3148 | return; |
| 3149 | } |
| 3150 | |
| 3151 | const quint32 owner = m_radioModel.txClientHandle(); |
| 3152 | const quint32 ours = m_radioModel.ourClientHandle(); |
| 3153 | if (owner != 0 && ours != 0 && owner != ours |
| 3154 | && !m_radioModel.transmitModel().isTransmitting()) { |
| 3155 | statusBar()->showMessage("TX is owned by another station", 2500); |
| 3156 | return; |
| 3157 | } |
| 3158 | |
| 3159 | m_pttHoldActive = false; |
| 3160 | m_cwStraightKeyActive = false; |
| 3161 | m_cwLeftPaddleActive = false; |
| 3162 | m_cwRightPaddleActive = false; |
| 3163 | m_lastCwPaddleTraceId.store(0, std::memory_order_relaxed); |
| 3164 | m_lastCwPaddleSourceMs.store(0, std::memory_order_relaxed); |
| 3165 | |
| 3166 | if (m_iambicKeyer && m_iambicKeyer->isRunning()) { |
| 3167 | m_iambicKeyer->setPaddleState(false, false); |
| 3168 | m_iambicKeyer->reset(); |
| 3169 | } |
| 3170 | if (m_audio) |
| 3171 | m_audio->setCwKeyDown(false); // clear audible + recorder sidetone |
| 3172 | |
| 3173 | const quint64 sourceMs = cwTraceNowMs(); |
| 3174 | const quint64 traceId = nextCwTraceId(); |
| 3175 | const QString source = QStringLiteral("tx-indicator:cancel"); |
| 3176 | m_radioModel.sendCwKey(false, source, traceId, sourceMs); |
| 3177 | m_radioModel.sendCwPtt(false, source, traceId, sourceMs); |
| 3178 | m_radioModel.transmitModel().stopTune(); |
| 3179 | m_radioModel.setTransmit(false); |
| 3180 | |
| 3181 | statusBar()->showMessage("TX cancel requested", 2000); |
| 3182 | } |
| 3183 | |
| 3184 | void MainWindow::setCwStraightKeyState(bool down, const QString& source, |
| 3185 | quint64 traceId, quint64 sourceMs) |
nothing calls this directly
no test coverage detected