From 1d289809c92ef7b39615aed7e0fb86fe13ff00cd Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Mon, 28 Nov 2016 14:21:39 +0100 Subject: [PATCH] feat(app/DefaultTranslator): check linphone contexts --- tests/src/app/App.hpp | 1 + tests/src/app/DefaultTranslator.cpp | 20 +++++++++++++++++++ tests/src/app/DefaultTranslator.hpp | 8 ++++++++ .../src/components/timeline/TimelineModel.cpp | 7 ++++--- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/tests/src/app/App.hpp b/tests/src/app/App.hpp index 46972291b..1ca6aea01 100644 --- a/tests/src/app/App.hpp +++ b/tests/src/app/App.hpp @@ -38,6 +38,7 @@ public slots: private: App (int &argc, char **argv); + ~App () = default; void initContentApp (); diff --git a/tests/src/app/DefaultTranslator.cpp b/tests/src/app/DefaultTranslator.cpp index 099a711b3..5decff453 100644 --- a/tests/src/app/DefaultTranslator.cpp +++ b/tests/src/app/DefaultTranslator.cpp @@ -1,15 +1,35 @@ +#include #include #include "DefaultTranslator.hpp" // =================================================================== +DefaultTranslator::DefaultTranslator () { + QDirIterator it(":", QDirIterator::Subdirectories); + while (it.hasNext()) { + QFileInfo info(it.next()); + + if (info.suffix() == "qml") { + QString basename = info.baseName(); + + if (m_contexts.contains(basename)) + qWarning() << QStringLiteral("QML file `%1` already exists in context list.").arg(basename); + else + m_contexts << basename; + } + } +} + QString DefaultTranslator::translate ( const char *context, const char *source_text, const char *disambiguation, int n ) const { + if (!m_contexts.contains(context)) + return ""; + QString translation = QTranslator::translate(context, source_text, disambiguation, n); if (translation.length() == 0) diff --git a/tests/src/app/DefaultTranslator.hpp b/tests/src/app/DefaultTranslator.hpp index 55436b318..790e77c29 100644 --- a/tests/src/app/DefaultTranslator.hpp +++ b/tests/src/app/DefaultTranslator.hpp @@ -1,17 +1,25 @@ #ifndef DEFAULT_TRANSLATOR_H_ #define DEFAULT_TRANSLATOR_H_ +#include #include // =================================================================== class DefaultTranslator : public QTranslator { +public: + DefaultTranslator (); + ~DefaultTranslator () = default; + QString translate ( const char *context, const char *source_text, const char *disambiguation = Q_NULLPTR, int n = -1 ) const override; + +private: + QSet m_contexts; }; #endif diff --git a/tests/src/components/timeline/TimelineModel.cpp b/tests/src/components/timeline/TimelineModel.cpp index 6db0a4ab2..61b3f38dc 100644 --- a/tests/src/components/timeline/TimelineModel.cpp +++ b/tests/src/components/timeline/TimelineModel.cpp @@ -1,6 +1,7 @@ #include #include +#include #include #include "../../utils.hpp" @@ -89,17 +90,17 @@ void TimelineModel::init_entries () { } // Insert calls events. - QHash address_done; + QSet address_done; for (const auto &call_log : core->getCallLogs()) { // Get a sip uri to check. QString address = Utils::linphoneStringToQString( call_log->getRemoteAddress()->asString() ); - if (address_done.value(address)) + if (address_done.contains(address)) continue; // Already used. - address_done[address] = true; + address_done << address; // Make a new map. QVariantMap map;