diff --git a/src/Audio/AudioOutput.cc b/src/Audio/AudioOutput.cc index cb04eb60876d8aa289fe7b43fa1324179075b996..88a3d4e79afe77419af56cbd104b143cafd84fe0 100644 --- a/src/Audio/AudioOutput.cc +++ b/src/Audio/AudioOutput.cc @@ -73,6 +73,7 @@ QString AudioOutput::fixTextMessageForAudio(const QString& string) { QString match; QString newNumber; QString result = string; + //-- Look for codified terms if(result.contains("ERR ", Qt::CaseInsensitive)) { result.replace("ERR ", "error ", Qt::CaseInsensitive); @@ -118,6 +119,9 @@ QString AudioOutput::fixTextMessageForAudio(const QString& string) { if(result.contains(" ADSB ", Qt::CaseInsensitive)) { result.replace(" ADSB ", " Hey Dee Ess Bee ", Qt::CaseInsensitive); } + if(result.contains(" EKF ", Qt::CaseInsensitive)) { + result.replace(" EKF ", " Eee Kay Eff ", Qt::CaseInsensitive); + } // Convert negative numbers QRegularExpression re(QStringLiteral("(-)[0-9]*\\.?[0-9]")); @@ -125,9 +129,18 @@ QString AudioOutput::fixTextMessageForAudio(const QString& string) { while (reMatch.hasMatch()) { if (!reMatch.captured(1).isNull()) { // There is a negative prefix - qDebug() << "negative" << reMatch.captured(1) << reMatch.capturedStart(1) << reMatch.capturedEnd(1); result.replace(reMatch.capturedStart(1), reMatch.capturedEnd(1) - reMatch.capturedStart(1), tr(" negative ")); - qDebug() << result; + } + reMatch = re.match(result); + } + + // Convert real number with decimal point + re.setPattern(QStringLiteral("([0-9]+)(\\.)([0-9]+)")); + reMatch = re.match(result); + while (reMatch.hasMatch()) { + if (!reMatch.captured(2).isNull()) { + // There is a decimal point + result.replace(reMatch.capturedStart(2), reMatch.capturedEnd(2) - reMatch.capturedStart(2), tr(" point ")); } reMatch = re.match(result); } @@ -138,9 +151,7 @@ QString AudioOutput::fixTextMessageForAudio(const QString& string) { while (reMatch.hasMatch()) { if (!reMatch.captured(1).isNull()) { // There is a meter postfix - qDebug() << "meters" << reMatch.captured(1) << reMatch.capturedStart(1) << reMatch.capturedEnd(1); result.replace(reMatch.capturedStart(1), reMatch.capturedEnd(1) - reMatch.capturedStart(1), tr(" meters")); - qDebug() << result; } reMatch = re.match(result); } diff --git a/src/Audio/AudioOutputTest.cc b/src/Audio/AudioOutputTest.cc index 3395b8934d28f804a8f1a87df8863e1fb92b9b5a..6cdb6e4b29918ea96250ab94b272b84ea6473d5e 100644 --- a/src/Audio/AudioOutputTest.cc +++ b/src/Audio/AudioOutputTest.cc @@ -18,7 +18,7 @@ AudioOutputTest::AudioOutputTest(void) void AudioOutputTest::_testSpokenReplacements(void) { QString result = AudioOutput::fixTextMessageForAudio(QStringLiteral("-10.5m, -10.5m. -10.5 m")); - QCOMPARE(result, QStringLiteral(" negative 10.5 meters, negative 10.5 meters. negative 10.5 meters")); + QCOMPARE(result, QStringLiteral(" negative 10 point 5 meters, negative 10 point 5 meters. negative 10 point 5 meters")); result = AudioOutput::fixTextMessageForAudio(QStringLiteral("-10m -10 m")); QCOMPARE(result, QStringLiteral(" negative 10 meters negative 10 meters")); result = AudioOutput::fixTextMessageForAudio(QStringLiteral("foo -10m -10 m bar"));