|
|
|
|
@ -153,6 +153,39 @@ int main(int argc, char** argv) {
|
|
|
|
|
engine->setHotkeyTalking(false); |
|
|
|
|
await([&]() { return !engine->isTransmitting(); }); |
|
|
|
|
REQUIRE(!selfSpeaking()); |
|
|
|
|
// Реальная последовательность double-click: первый click, второе нажатие DoubleClick, release.
|
|
|
|
|
auto latchPtt = [&]() { |
|
|
|
|
QTest::mouseClick(ptt, Qt::LeftButton); |
|
|
|
|
QTest::mouseDClick(ptt, Qt::LeftButton); |
|
|
|
|
QTest::mouseRelease(ptt, Qt::LeftButton); |
|
|
|
|
REQUIRE(engine->isTalking()); |
|
|
|
|
await([&]() { return engine->isTransmitting(); }); |
|
|
|
|
}; |
|
|
|
|
latchPtt(); |
|
|
|
|
engine->setHotkeyTalking(true); |
|
|
|
|
engine->setHotkeyTalking(false); |
|
|
|
|
REQUIRE(engine->isTalking()); // Отпускание хоткея не снимает фиксацию кнопки.
|
|
|
|
|
QTest::mousePress(ptt, Qt::LeftButton); |
|
|
|
|
REQUIRE(!engine->isTalking()); // Следующий click отпускает уже на нажатии.
|
|
|
|
|
QTest::mouseRelease(ptt, Qt::LeftButton); |
|
|
|
|
await([&]() { return !engine->isTransmitting(); }); |
|
|
|
|
latchPtt(); |
|
|
|
|
engine->setHotkeyTalking(true); |
|
|
|
|
QTest::mouseClick(ptt, Qt::LeftButton); |
|
|
|
|
REQUIRE(engine->isTalking()); // Снятие фиксации не отпускает зажатый хоткей.
|
|
|
|
|
engine->setHotkeyTalking(false); |
|
|
|
|
await([&]() { return !engine->isTransmitting(); }); |
|
|
|
|
latchPtt(); |
|
|
|
|
REQUIRE(engine->start(8) == 0); |
|
|
|
|
await([&]() { return engine->captureAvailable(); }); |
|
|
|
|
REQUIRE(!engine->isTalking() && !engine->isTransmitting()); |
|
|
|
|
REQUIRE(engine->start(7) == 0); |
|
|
|
|
await([&]() { return engine->captureAvailable(); }); |
|
|
|
|
QTest::mousePress(ptt, Qt::LeftButton); |
|
|
|
|
REQUIRE(engine->isTalking()); // После смены канала снова работает обычное удержание.
|
|
|
|
|
QTest::mouseRelease(ptt, Qt::LeftButton); |
|
|
|
|
REQUIRE(!engine->isTalking()); |
|
|
|
|
qInfo("radio panel: double-click latch, click release, independent hotkey and channel reset PASS"); |
|
|
|
|
REQUIRE(engine->applySettings({{"radio_vad_threshold", 65}, {"radio_vad_hangover_ms", 400}, |
|
|
|
|
{"radio_vad_compressor_max_gain_db", 30}, {"radio_compressor_max_gain_db", 6}})); |
|
|
|
|
await([&]() { return !engine->settingsBusy(); }); |
|
|
|
|
|