diff options
| author | Tomasz Sterna <tomek@xiaoka.com> | 2014-08-10 14:50:04 +0200 |
|---|---|---|
| committer | Tomasz Sterna <tomek@xiaoka.com> | 2014-08-10 14:50:04 +0200 |
| commit | ff2a3a520f6562bc127fdcbb9b68029783bc3dcc (patch) | |
| tree | 3b3c50c1f8861f5570175ee0bd32f6cfc2ddd067 /daemon/manager.cpp | |
| parent | 96ad10715d2f28913d102ed95bde44184cd512fd (diff) | |
| parent | 7c35daca74fb4a4f8ed7e2fadc22ec18e0295744 (diff) | |
Merge pull request #15 from custodian/transliteration
Transliterate messages before sending to Pebble
Diffstat (limited to 'daemon/manager.cpp')
| -rw-r--r-- | daemon/manager.cpp | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/daemon/manager.cpp b/daemon/manager.cpp index 3dd9108..fd31e3d 100644 --- a/daemon/manager.cpp +++ b/daemon/manager.cpp @@ -182,14 +182,18 @@ void Manager::onActiveVoiceCallStatusChanged() QString Manager::findPersonByNumber(QString number) { + QString person; numberFilter.setValue(number); const QList<QContact> &found = contacts->contacts(numberFilter); if (found.size() == 1) { - return found[0].detail(QContactDetail::TypeDisplayLabel).value(0).toString(); + person = found[0].detail(QContactDetail::TypeDisplayLabel).value(0).toString(); } - return QString(); + if (settings->property("transliterateMessage").toBool()) { + transliterateMessage(person); + } + return person; } void Manager::onVoiceError(const QString &message) @@ -205,23 +209,40 @@ void Manager::onNotifyError(const QString &message) void Manager::onSmsNotify(const QString &sender, const QString &data) { + if (settings->property("transliterateMessage").toBool()) { + transliterateMessage(sender); + transliterateMessage(data); + } watch->sendSMSNotification(sender, data); } void Manager::onTwitterNotify(const QString &sender, const QString &data) { + if (settings->property("transliterateMessage").toBool()) { + transliterateMessage(sender); + transliterateMessage(data); + } watch->sendTwitterNotification(sender, data); } void Manager::onFacebookNotify(const QString &sender, const QString &data) { + if (settings->property("transliterateMessage").toBool()) { + transliterateMessage(sender); + transliterateMessage(data); + } watch->sendFacebookNotification(sender, data); } void Manager::onEmailNotify(const QString &sender, const QString &data,const QString &subject) { + if (settings->property("transliterateMessage").toBool()) { + transliterateMessage(sender); + transliterateMessage(data); + transliterateMessage(subject); + } watch->sendEmailNotification(sender, data, subject); } @@ -324,3 +345,26 @@ void Manager::applyProfile() } } } + +void Manager::transliterateMessage(const QString &text) +{ + if (transliterator.isNull()) { + UErrorCode status = U_ZERO_ERROR; + transliterator.reset(icu::Transliterator::createInstance(icu::UnicodeString::fromUTF8("Any-Latin; Latin-ASCII"),UTRANS_FORWARD, status)); + if (U_FAILURE(status)) { + logger()->warn() << "Error creaing ICU Transliterator \"Any-Latin; Latin-ASCII\":" << u_errorName(status); + } + } + if (!transliterator.isNull()) { + logger()->debug() << "String before transliteration:" << text; + + icu::UnicodeString uword = icu::UnicodeString::fromUTF8(text.toStdString()); + transliterator->transliterate(uword); + + std::string translited; + uword.toUTF8String(translited); + + const_cast<QString&>(text) = QString::fromStdString(translited); + logger()->debug() << "String after transliteration:" << text; + } +} |
