diff --git a/linphone-desktop/CMakeLists.txt b/linphone-desktop/CMakeLists.txt
index b6f1015b6..c784d818e 100644
--- a/linphone-desktop/CMakeLists.txt
+++ b/linphone-desktop/CMakeLists.txt
@@ -74,7 +74,7 @@ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG -DQT_QML_DEBUG -DQT_
# Define packages, libs, sources, headers, resources and languages.
# ------------------------------------------------------------------------------
-set(QT5_PACKAGES Core Gui Quick Widgets QuickControls2 Svg LinguistTools Concurrent Network)
+set(QT5_PACKAGES Core Gui Quick Widgets QuickControls2 Svg LinguistTools Concurrent Network TextToSpeech)
if(LINPHONE_BUILDER_GROUP_EXTERNAL_SOURCE_PATH_BUILDERS)
include("${EP_linphone_CONFIG_DIR}/LinphoneConfig.cmake")
diff --git a/linphone-desktop/assets/languages/en.ts b/linphone-desktop/assets/languages/en.ts
index 7b713b97d..9bc31b279 100644
--- a/linphone-desktop/assets/languages/en.ts
+++ b/linphone-desktop/assets/languages/en.ts
@@ -828,12 +828,9 @@ your friend's SIP address or username.
menuCopy
Copy
-
-
- MessageMenu
- copy
- Copy
+ menuPlayMe
+ Play me!
diff --git a/linphone-desktop/assets/languages/fr.ts b/linphone-desktop/assets/languages/fr.ts
index b0f293d2d..9c9c97c2b 100644
--- a/linphone-desktop/assets/languages/fr.ts
+++ b/linphone-desktop/assets/languages/fr.ts
@@ -827,12 +827,9 @@ un chat ou ajouter un contact.
menuCopy
Copier
-
-
- MessageMenu
- copy
-
+ menuPlayMe
+ Joue-moi !
diff --git a/linphone-desktop/resources.qrc b/linphone-desktop/resources.qrc
index d48131293..eb981d6a8 100644
--- a/linphone-desktop/resources.qrc
+++ b/linphone-desktop/resources.qrc
@@ -314,7 +314,6 @@
ui/modules/Linphone/Chat/FileMessage.qml
ui/modules/Linphone/Chat/IncomingMessage.qml
ui/modules/Linphone/Chat/Message.js
- ui/modules/Linphone/Chat/MessageMenu.qml
ui/modules/Linphone/Chat/Message.qml
ui/modules/Linphone/Chat/OutgoingMessage.qml
ui/modules/Linphone/Codecs/CodecAttribute.qml
diff --git a/linphone-desktop/src/app/App.cpp b/linphone-desktop/src/app/App.cpp
index f0a9e8f07..c9cb0c74e 100644
--- a/linphone-desktop/src/app/App.cpp
+++ b/linphone-desktop/src/app/App.cpp
@@ -171,6 +171,9 @@ void App::initContentApp () {
mEngine->addImageProvider(AvatarProvider::PROVIDER_ID, new AvatarProvider());
mEngine->addImageProvider(ThumbnailProvider::PROVIDER_ID, new ThumbnailProvider());
+ mTextToSpeech = new QTextToSpeech(this);
+ QQmlEngine::setObjectOwnership(mTextToSpeech, QQmlEngine::CppOwnership);
+
registerTypes();
registerSharedTypes();
diff --git a/linphone-desktop/src/app/App.hpp b/linphone-desktop/src/app/App.hpp
index f712e6faf..881a29793 100644
--- a/linphone-desktop/src/app/App.hpp
+++ b/linphone-desktop/src/app/App.hpp
@@ -26,6 +26,7 @@
#include
#include
#include
+#include
#include "../components/notifier/Notifier.hpp"
#include "../externals/single-application/SingleApplication.hpp"
@@ -44,6 +45,8 @@ class App : public SingleApplication {
Q_PROPERTY(QVariantList availableLocales READ getAvailableLocales CONSTANT);
Q_PROPERTY(QString qtVersion READ getQtVersion CONSTANT);
+ Q_PROPERTY(QTextToSpeech * textToSpeech READ getTextToSpeech CONSTANT);
+
public:
App (int &argc, char *argv[]);
~App ();
@@ -86,6 +89,10 @@ signals:
void configLocaleChanged (const QString &locale);
private:
+ QTextToSpeech *getTextToSpeech () const {
+ return mTextToSpeech;
+ }
+
void registerTypes ();
void registerSharedTypes ();
void setTrayIcon ();
@@ -111,6 +118,8 @@ private:
QVariantList mAvailableLocales;
QString mLocale;
+ QTextToSpeech *mTextToSpeech = nullptr;
+
QQmlApplicationEngine *mEngine = nullptr;
DefaultTranslator *mTranslator = nullptr;
@@ -120,4 +129,6 @@ private:
QQuickWindow *mSettingsWindow = nullptr;
};
+Q_DECLARE_METATYPE(QTextToSpeech *);
+
#endif // APP_H_
diff --git a/linphone-desktop/ui/modules/Linphone/Chat/Message.qml b/linphone-desktop/ui/modules/Linphone/Chat/Message.qml
index 552fddeba..b69a06e09 100644
--- a/linphone-desktop/ui/modules/Linphone/Chat/Message.qml
+++ b/linphone-desktop/ui/modules/Linphone/Chat/Message.qml
@@ -74,6 +74,11 @@ Item {
text: qsTr('menuCopy')
onTriggered: Clipboard.text = $chatEntry.content
}
+
+ MenuItem {
+ text: qsTr('menuPlayMe')
+ onTriggered: App.textToSpeech.say($chatEntry.content)
+ }
}
// Handle hovered link.
diff --git a/linphone-desktop/ui/modules/Linphone/Chat/MessageMenu.qml b/linphone-desktop/ui/modules/Linphone/Chat/MessageMenu.qml
deleted file mode 100644
index fefd16e2c..000000000
--- a/linphone-desktop/ui/modules/Linphone/Chat/MessageMenu.qml
+++ /dev/null
@@ -1,10 +0,0 @@
-import QtQuick 2.7
-import QtQuick.Controls 2.1
-
-// =============================================================================
-
-Menu {
- MenuItem {
- text: qsTr('copy')
- }
-}