Browse Source

Made spoken time in milliseconds into something more normal like x minutes and y seconds.

QGC4.4
dogmaphobic 10 years ago
parent
commit
e860bdcfbf
  1. 41
      src/audio/QGCAudioWorker.cpp
  2. 3
      src/audio/QGCAudioWorker.h

41
src/audio/QGCAudioWorker.cpp

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
#include <QDebug>
#include <QCoreApplication>
#include <QFile>
#include <QRegularExpression>
#include "QGC.h"
#include "QGCAudioWorker.h"
@ -89,7 +90,7 @@ QGCAudioWorker::~QGCAudioWorker() @@ -89,7 +90,7 @@ QGCAudioWorker::~QGCAudioWorker()
#endif
}
void QGCAudioWorker::say(QString text, int severity)
void QGCAudioWorker::say(QString inText, int severity)
{
static bool threadInit = false;
if (!threadInit) {
@ -99,6 +100,7 @@ void QGCAudioWorker::say(QString text, int severity) @@ -99,6 +100,7 @@ void QGCAudioWorker::say(QString text, int severity)
if (!muted)
{
QString text = _fixMillisecondString(inText);
// Prepend high priority text with alert beep
if (severity < GAudioOutput::AUDIO_SEVERITY_CRITICAL) {
beep();
@ -170,3 +172,40 @@ bool QGCAudioWorker::isMuted() @@ -170,3 +172,40 @@ bool QGCAudioWorker::isMuted()
{
return this->muted;
}
bool QGCAudioWorker::_getMillisecondString(const QString& string, QString& match, int& number) {
QRegularExpression re("([0-9]*ms)");
QRegularExpressionMatchIterator i = re.globalMatch(string);
while (i.hasNext()) {
QRegularExpressionMatch qmatch = i.next();
if (qmatch.hasMatch()) {
match = qmatch.captured(0);
number = qmatch.captured(0).replace("ms", "").toInt();
return true;
}
}
return false;
}
QString QGCAudioWorker::_fixMillisecondString(const QString& string) {
QString match;
QString newNumber;
QString result = string;
int number;
if(_getMillisecondString(string, match, number) && number > 1000) {
if(number < 60000) {
int seconds = number / 1000;
newNumber = QString("%1 second%2").arg(seconds).arg(seconds > 1 ? "s" : "");
} else {
int minutes = number / 60000;
int seconds = (number - (minutes * 60000)) / 1000;
if (!seconds) {
newNumber = QString("%1 minute%2").arg(minutes).arg(minutes > 1 ? "s" : "");
} else {
newNumber = QString("%1 minute%2 and %3 second%4").arg(minutes).arg(minutes > 1 ? "s" : "").arg(seconds).arg(seconds > 1 ? "s" : "");
}
}
result.replace(match, newNumber);
}
return result;
}

3
src/audio/QGCAudioWorker.h

@ -50,6 +50,9 @@ protected: @@ -50,6 +50,9 @@ protected:
bool emergency; ///< Emergency status flag
QTimer *emergencyTimer;
bool muted;
private:
QString _fixMillisecondString(const QString& string);
bool _getMillisecondString(const QString& string, QString& match, int& number);
};
#endif // QGCAUDIOWORKER_H

Loading…
Cancel
Save