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') - } -}