From 3582871957e31e0babdae99b4973bf154bf37129 Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Tue, 30 May 2017 14:40:12 +0200 Subject: [PATCH] feat(ui/modules/Linphone/Chat/Message): supports copy of messages --- linphone-desktop/CMakeLists.txt | 2 + linphone-desktop/assets/languages/en.ts | 14 +++++ linphone-desktop/assets/languages/fr.ts | 14 +++++ linphone-desktop/resources.qrc | 5 ++ linphone-desktop/src/Utils.hpp | 1 - linphone-desktop/src/app/App.cpp | 4 +- .../src/app/clipboard/Clipboard.cpp | 25 ++++++++ .../src/app/clipboard/Clipboard.hpp | 36 ++++++++++++ linphone-desktop/src/app/paths/Paths.cpp | 4 +- .../src/app/providers/AvatarProvider.cpp | 2 +- .../src/app/providers/ThumbnailProvider.cpp | 2 +- .../src/components/Components.hpp | 1 + .../src/components/call/CallModel.cpp | 4 +- .../src/components/clipboard/Clipboard.cpp | 49 ++++++++++++++++ .../src/components/clipboard/Clipboard.hpp | 57 +++++++++++++++++++ .../ui/modules/Common/Menus/Menu.qml | 21 +++++++ .../ui/modules/Common/Menus/MenuItem.qml | 34 +++++++++++ .../Common/Styles/Menus/MenuItemStyle.qml | 26 +++++++++ .../modules/Common/Styles/Menus/MenuStyle.qml | 11 ++++ .../ui/modules/Common/Styles/qmldir | 2 + linphone-desktop/ui/modules/Common/qmldir | 2 + .../ui/modules/Linphone/Chat/Message.qml | 16 +++++- .../ui/modules/Linphone/Chat/MessageMenu.qml | 10 ++++ .../views/App/Calls/Dialogs/CallTransfer.qml | 12 ++-- 24 files changed, 337 insertions(+), 17 deletions(-) create mode 100644 linphone-desktop/src/app/clipboard/Clipboard.cpp create mode 100644 linphone-desktop/src/app/clipboard/Clipboard.hpp create mode 100644 linphone-desktop/src/components/clipboard/Clipboard.cpp create mode 100644 linphone-desktop/src/components/clipboard/Clipboard.hpp create mode 100644 linphone-desktop/ui/modules/Common/Menus/Menu.qml create mode 100644 linphone-desktop/ui/modules/Common/Menus/MenuItem.qml create mode 100644 linphone-desktop/ui/modules/Common/Styles/Menus/MenuItemStyle.qml create mode 100644 linphone-desktop/ui/modules/Common/Styles/Menus/MenuStyle.qml create mode 100644 linphone-desktop/ui/modules/Linphone/Chat/MessageMenu.qml diff --git a/linphone-desktop/CMakeLists.txt b/linphone-desktop/CMakeLists.txt index 7d211e44a..b6f1015b6 100644 --- a/linphone-desktop/CMakeLists.txt +++ b/linphone-desktop/CMakeLists.txt @@ -105,6 +105,7 @@ set(SOURCES src/components/camera/MSFunctions.cpp src/components/chat/ChatModel.cpp src/components/chat/ChatProxyModel.cpp + src/components/clipboard/Clipboard.cpp src/components/codecs/AbstractCodecsModel.cpp src/components/codecs/AudioCodecsModel.cpp src/components/codecs/VideoCodecsModel.cpp @@ -149,6 +150,7 @@ set(HEADERS src/components/camera/MSFunctions.hpp src/components/chat/ChatModel.hpp src/components/chat/ChatProxyModel.hpp + src/components/clipboard/Clipboard.cpp src/components/codecs/AbstractCodecsModel.hpp src/components/codecs/AudioCodecsModel.hpp src/components/codecs/VideoCodecsModel.hpp diff --git a/linphone-desktop/assets/languages/en.ts b/linphone-desktop/assets/languages/en.ts index 3faad01b3..11bc0c18d 100644 --- a/linphone-desktop/assets/languages/en.ts +++ b/linphone-desktop/assets/languages/en.ts @@ -822,6 +822,20 @@ your friend's SIP address or username. Select you active account + + Message + + menuCopy + Copy + + + + MessageMenu + + copy + + + OutgoingMessage diff --git a/linphone-desktop/assets/languages/fr.ts b/linphone-desktop/assets/languages/fr.ts index ad8905d6d..b3c684d47 100644 --- a/linphone-desktop/assets/languages/fr.ts +++ b/linphone-desktop/assets/languages/fr.ts @@ -821,6 +821,20 @@ un chat ou ajouter un contact. Sélectionner votre compte principal + + Message + + menuCopy + Copier + + + + MessageMenu + + copy + + + OutgoingMessage diff --git a/linphone-desktop/resources.qrc b/linphone-desktop/resources.qrc index 3ac829775..d48131293 100644 --- a/linphone-desktop/resources.qrc +++ b/linphone-desktop/resources.qrc @@ -243,6 +243,8 @@ ui/modules/Common/Menus/DropDownDynamicMenu.qml ui/modules/Common/Menus/DropDownStaticMenuEntry.qml ui/modules/Common/Menus/DropDownStaticMenu.qml + ui/modules/Common/Menus/MenuItem.qml + ui/modules/Common/Menus/Menu.qml ui/modules/Common/Misc/Borders.qml ui/modules/Common/Misc/Collapse.qml ui/modules/Common/Misc/ForceScrollBar.qml @@ -281,6 +283,8 @@ ui/modules/Common/Styles/Indicators/VuMeterStyle.qml ui/modules/Common/Styles/Menus/ApplicationMenuStyle.qml ui/modules/Common/Styles/Menus/DropDownStaticMenuStyle.qml + ui/modules/Common/Styles/Menus/MenuItemStyle.qml + ui/modules/Common/Styles/Menus/MenuStyle.qml ui/modules/Common/Styles/Misc/CollapseStyle.qml ui/modules/Common/Styles/Misc/ForceScrollBarStyle.qml ui/modules/Common/Styles/Misc/PanedStyle.qml @@ -310,6 +314,7 @@ 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/Utils.hpp b/linphone-desktop/src/Utils.hpp index d8ab74b37..ca058fa52 100644 --- a/linphone-desktop/src/Utils.hpp +++ b/linphone-desktop/src/Utils.hpp @@ -23,7 +23,6 @@ #ifndef UTILS_H_ #define UTILS_H_ -#include #include // ============================================================================= diff --git a/linphone-desktop/src/app/App.cpp b/linphone-desktop/src/app/App.cpp index ab4c200cc..f0a9e8f07 100644 --- a/linphone-desktop/src/app/App.cpp +++ b/linphone-desktop/src/app/App.cpp @@ -151,8 +151,9 @@ void App::initContentApp () { ); } - // Init core. + // Init core and clipboard. CoreManager::init(this, mParser.value("config")); + Clipboard::init(this); // Init engine content. mEngine = new QQmlApplicationEngine(); @@ -373,6 +374,7 @@ void App::registerSharedTypes () { qInfo() << QStringLiteral("Registering shared types..."); registerSharedSingletonType(App, "App", App::getInstance); + registerSharedSingletonType(Clipboard, "Clipboard", Clipboard::getInstance); registerSharedSingletonType(CoreManager, "CoreManager", CoreManager::getInstance); registerSharedSingletonType(SettingsModel, "SettingsModel", CoreManager::getInstance()->getSettingsModel); registerSharedSingletonType(AccountSettingsModel, "AccountSettingsModel", CoreManager::getInstance()->getAccountSettingsModel); diff --git a/linphone-desktop/src/app/clipboard/Clipboard.cpp b/linphone-desktop/src/app/clipboard/Clipboard.cpp new file mode 100644 index 000000000..34dec3ff0 --- /dev/null +++ b/linphone-desktop/src/app/clipboard/Clipboard.cpp @@ -0,0 +1,25 @@ +/* + * Clipboard.cpp + * Copyright (C) 2017 Belledonne Communications, Grenoble, France + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Created on: May 30, 2017 + * Author: Ronan Abhamon + */ + +#include "Clipboard.hpp" + +// ============================================================================= diff --git a/linphone-desktop/src/app/clipboard/Clipboard.hpp b/linphone-desktop/src/app/clipboard/Clipboard.hpp new file mode 100644 index 000000000..4400199ff --- /dev/null +++ b/linphone-desktop/src/app/clipboard/Clipboard.hpp @@ -0,0 +1,36 @@ +/* + * Clipboard.hpp + * Copyright (C) 2017 Belledonne Communications, Grenoble, France + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Created on: May 30, 2017 + * Author: Ronan Abhamon + */ + +#ifndef CLIPBOARD_H_ +#define CLIPBOARD_H_ + +#include + +// ============================================================================= + +class Clipboard : public QObject { + Q_OBJECT; + + Q_PRO +}; + +#endif // ifndef CLIPBOARD_H_ diff --git a/linphone-desktop/src/app/paths/Paths.cpp b/linphone-desktop/src/app/paths/Paths.cpp index 5c0378587..e0d1544d2 100644 --- a/linphone-desktop/src/app/paths/Paths.cpp +++ b/linphone-desktop/src/app/paths/Paths.cpp @@ -80,7 +80,7 @@ inline void ensureFilePathExists (const QString &path) { } inline string getReadableDirPath (const QString &dirname) { - return Utils::appStringToCoreString(QDir::toNativeSeparators(dirname)); + return ::Utils::appStringToCoreString(QDir::toNativeSeparators(dirname)); } inline string getWritableDirPath (const QString &dirname) { @@ -89,7 +89,7 @@ inline string getWritableDirPath (const QString &dirname) { } inline string getReadableFilePath (const QString &filename) { - return Utils::appStringToCoreString(QDir::toNativeSeparators(filename)); + return ::Utils::appStringToCoreString(QDir::toNativeSeparators(filename)); } inline string getWritableFilePath (const QString &filename) { diff --git a/linphone-desktop/src/app/providers/AvatarProvider.cpp b/linphone-desktop/src/app/providers/AvatarProvider.cpp index 67bf221d6..e7a448d9a 100644 --- a/linphone-desktop/src/app/providers/AvatarProvider.cpp +++ b/linphone-desktop/src/app/providers/AvatarProvider.cpp @@ -33,7 +33,7 @@ AvatarProvider::AvatarProvider () : QQuickImageProvider( QQmlImageProviderBase::Image, QQmlImageProviderBase::ForceAsynchronousImageLoading ) { - mAvatarsPath = Utils::coreStringToAppString(Paths::getAvatarsDirPath()); + mAvatarsPath = ::Utils::coreStringToAppString(Paths::getAvatarsDirPath()); } QImage AvatarProvider::requestImage (const QString &id, QSize *, const QSize &) { diff --git a/linphone-desktop/src/app/providers/ThumbnailProvider.cpp b/linphone-desktop/src/app/providers/ThumbnailProvider.cpp index d346cf1b6..74232e42f 100644 --- a/linphone-desktop/src/app/providers/ThumbnailProvider.cpp +++ b/linphone-desktop/src/app/providers/ThumbnailProvider.cpp @@ -33,7 +33,7 @@ ThumbnailProvider::ThumbnailProvider () : QQuickImageProvider( QQmlImageProviderBase::Image, QQmlImageProviderBase::ForceAsynchronousImageLoading ) { - mThumbnailsPath = Utils::coreStringToAppString(Paths::getThumbnailsDirPath()); + mThumbnailsPath = ::Utils::coreStringToAppString(Paths::getThumbnailsDirPath()); } QImage ThumbnailProvider::requestImage (const QString &id, QSize *, const QSize &) { diff --git a/linphone-desktop/src/components/Components.hpp b/linphone-desktop/src/components/Components.hpp index 99610535f..5d5c3438c 100644 --- a/linphone-desktop/src/components/Components.hpp +++ b/linphone-desktop/src/components/Components.hpp @@ -30,6 +30,7 @@ #include "camera/Camera.hpp" #include "camera/CameraPreview.hpp" #include "chat/ChatProxyModel.hpp" +#include "clipboard/Clipboard.hpp" #include "codecs/AudioCodecsModel.hpp" #include "codecs/VideoCodecsModel.hpp" #include "conference/ConferenceAddModel.hpp" diff --git a/linphone-desktop/src/components/call/CallModel.cpp b/linphone-desktop/src/components/call/CallModel.cpp index 9dcf31452..7ab80bf1c 100644 --- a/linphone-desktop/src/components/call/CallModel.cpp +++ b/linphone-desktop/src/components/call/CallModel.cpp @@ -606,7 +606,7 @@ void CallModel::updateStats (const shared_ptr &callSt statsList << createStat(tr("callStatsJitterBuffer"), QString("%1 ms").arg(callStats->getJitterBufferSizeMs())); break; case linphone::StreamTypeVideo: { - QString sentVideoDefinitionName = Utils::coreStringToAppString(params->getSentVideoDefinition()->getName()); + QString sentVideoDefinitionName = ::Utils::coreStringToAppString(params->getSentVideoDefinition()->getName()); QString sentVideoDefinition = QString("%1x%2") .arg(params->getSentVideoDefinition()->getWidth()) .arg(params->getSentVideoDefinition()->getHeight()); @@ -615,7 +615,7 @@ void CallModel::updateStats (const shared_ptr &callSt ? sentVideoDefinition : QString("%1 (%2)").arg(sentVideoDefinition).arg(sentVideoDefinitionName)); - QString receivedVideoDefinitionName = Utils::coreStringToAppString(params->getReceivedVideoDefinition()->getName()); + QString receivedVideoDefinitionName = ::Utils::coreStringToAppString(params->getReceivedVideoDefinition()->getName()); QString receivedVideoDefinition = QString("%1x%2") .arg(params->getReceivedVideoDefinition()->getWidth()) .arg(params->getReceivedVideoDefinition()->getHeight()); diff --git a/linphone-desktop/src/components/clipboard/Clipboard.cpp b/linphone-desktop/src/components/clipboard/Clipboard.cpp new file mode 100644 index 000000000..928aa0339 --- /dev/null +++ b/linphone-desktop/src/components/clipboard/Clipboard.cpp @@ -0,0 +1,49 @@ +/* + * Clipboard.cpp + * Copyright (C) 2017 Belledonne Communications, Grenoble, France + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Created on: May 30, 2017 + * Author: Ronan Abhamon + */ + +#include +#include + +#include "Clipboard.hpp" + +// ============================================================================= + +Clipboard *Clipboard::mInstance = nullptr; + +Clipboard::Clipboard (QObject *parent) : QObject(parent) { + connect(QGuiApplication::clipboard(), &QClipboard::dataChanged, this, &Clipboard::textChanged); +} + +// ----------------------------------------------------------------------------- + +void Clipboard::init (QObject *parent) { + if (!mInstance) + mInstance = new Clipboard(parent); +} + +QString Clipboard::getText () const { + return QGuiApplication::clipboard()->text(QClipboard::Clipboard); +} + +void Clipboard::setText (const QString &text) { + QGuiApplication::clipboard()->setText(text, QClipboard::Clipboard); +} diff --git a/linphone-desktop/src/components/clipboard/Clipboard.hpp b/linphone-desktop/src/components/clipboard/Clipboard.hpp new file mode 100644 index 000000000..bc9fdf699 --- /dev/null +++ b/linphone-desktop/src/components/clipboard/Clipboard.hpp @@ -0,0 +1,57 @@ +/* + * Clipboard.hpp + * Copyright (C) 2017 Belledonne Communications, Grenoble, France + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Created on: May 30, 2017 + * Author: Ronan Abhamon + */ + +#ifndef CLIPBOARD_H_ +#define CLIPBOARD_H_ + +#include + +// ============================================================================= + +class Clipboard : public QObject { + Q_OBJECT; + + Q_PROPERTY(QString text READ getText WRITE setText NOTIFY textChanged); + +public: + ~Clipboard () = default; + + static void init (QObject *parent); + + static Clipboard *getInstance () { + Q_ASSERT(mInstance != nullptr); + return mInstance; + } + +signals: + void textChanged (); + +private: + Clipboard (QObject *parent); + + QString getText () const; + void setText (const QString &text); + + static Clipboard *mInstance; +}; + +#endif // ifndef CLIPBOARD_H_ diff --git a/linphone-desktop/ui/modules/Common/Menus/Menu.qml b/linphone-desktop/ui/modules/Common/Menus/Menu.qml new file mode 100644 index 000000000..d4227b999 --- /dev/null +++ b/linphone-desktop/ui/modules/Common/Menus/Menu.qml @@ -0,0 +1,21 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.1 as Controls + +import Common 1.0 +import Common.Styles 1.0 + +// ============================================================================= + +Controls.Menu { + id: menu + + background: Rectangle { + implicitWidth: MenuStyle.width + color: MenuStyle.color + + layer { + enabled: true + effect: PopupShadow {} + } + } +} diff --git a/linphone-desktop/ui/modules/Common/Menus/MenuItem.qml b/linphone-desktop/ui/modules/Common/Menus/MenuItem.qml new file mode 100644 index 000000000..17693d0bf --- /dev/null +++ b/linphone-desktop/ui/modules/Common/Menus/MenuItem.qml @@ -0,0 +1,34 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.1 + +import Common.Styles 1.0 + +// ============================================================================= + +MenuItem { + id: button + + background: Rectangle { + color: button.down + ? MenuItemStyle.background.color.pressed + : ( + button.hovered + ? MenuItemStyle.background.color.hovered + : MenuItemStyle.background.color.normal + ) + implicitHeight: MenuItemStyle.background.height + } + contentItem: Text { + color: MenuItemStyle.text.color + elide: Text.ElideRight + font.bold: true + font.pointSize: MenuItemStyle.text.fontSize + text: button.text + + leftPadding: MenuItemStyle.leftPadding + rightPadding: MenuItemStyle.rightPadding + + verticalAlignment: Text.AlignVCenter + } + hoverEnabled: true +} diff --git a/linphone-desktop/ui/modules/Common/Styles/Menus/MenuItemStyle.qml b/linphone-desktop/ui/modules/Common/Styles/Menus/MenuItemStyle.qml new file mode 100644 index 000000000..ac648703a --- /dev/null +++ b/linphone-desktop/ui/modules/Common/Styles/Menus/MenuItemStyle.qml @@ -0,0 +1,26 @@ +pragma Singleton +import QtQuick 2.7 + +import Common 1.0 + +// ============================================================================= + +QtObject { + property int leftPadding: 5 + property int rightPadding: 5 + + property QtObject background: QtObject { + property int height: 30 + + property QtObject color: QtObject { + property color hovered: Colors.y + property color normal: Colors.k + property color pressed: Colors.y + } + } + + property QtObject text: QtObject { + property color color: Colors.j + property int fontSize: 10 + } +} diff --git a/linphone-desktop/ui/modules/Common/Styles/Menus/MenuStyle.qml b/linphone-desktop/ui/modules/Common/Styles/Menus/MenuStyle.qml new file mode 100644 index 000000000..f075ce594 --- /dev/null +++ b/linphone-desktop/ui/modules/Common/Styles/Menus/MenuStyle.qml @@ -0,0 +1,11 @@ +pragma Singleton +import QtQuick 2.7 + +import Common 1.0 + +// ============================================================================= + +QtObject { + property color color: Colors.k + property int width: 130 +} diff --git a/linphone-desktop/ui/modules/Common/Styles/qmldir b/linphone-desktop/ui/modules/Common/Styles/qmldir index 1ba369921..cb0349684 100644 --- a/linphone-desktop/ui/modules/Common/Styles/qmldir +++ b/linphone-desktop/ui/modules/Common/Styles/qmldir @@ -42,6 +42,8 @@ singleton VuMeterStyle 1.0 Indicators/VuMeterStyle.qml singleton ApplicationMenuStyle 1.0 Menus/ApplicationMenuStyle.qml singleton DropDownStaticMenuStyle 1.0 Menus/DropDownStaticMenuStyle.qml +singleton MenuItemStyle 1.0 Menus/MenuItemStyle.qml +singleton MenuStyle 1.0 Menus/MenuStyle.qml singleton CollapseStyle 1.0 Misc/CollapseStyle.qml singleton ForceScrollBarStyle 1.0 Misc/ForceScrollBarStyle.qml diff --git a/linphone-desktop/ui/modules/Common/qmldir b/linphone-desktop/ui/modules/Common/qmldir index c7f27be94..c1d696efc 100644 --- a/linphone-desktop/ui/modules/Common/qmldir +++ b/linphone-desktop/ui/modules/Common/qmldir @@ -65,6 +65,8 @@ ApplicationMenu 1.0 Menus/ApplicationMenu.qml DropDownDynamicMenu 1.0 Menus/DropDownDynamicMenu.qml DropDownStaticMenu 1.0 Menus/DropDownStaticMenu.qml DropDownStaticMenuEntry 1.0 Menus/DropDownStaticMenuEntry.qml +Menu 1.0 Menus/Menu.qml +MenuItem 1.0 Menus/MenuItem.qml Borders 1.0 Misc/Borders.qml Collapse 1.0 Misc/Collapse.qml diff --git a/linphone-desktop/ui/modules/Linphone/Chat/Message.qml b/linphone-desktop/ui/modules/Linphone/Chat/Message.qml index 64a138649..552fddeba 100644 --- a/linphone-desktop/ui/modules/Linphone/Chat/Message.qml +++ b/linphone-desktop/ui/modules/Linphone/Chat/Message.qml @@ -1,6 +1,7 @@ import QtQuick 2.7 import Common 1.0 +import Linphone 1.0 import Linphone.Styles 1.0 import Utils 1.0 @@ -66,15 +67,24 @@ Item { onActiveFocusChanged: deselect() + Menu { + id: messageMenu + + MenuItem { + text: qsTr('menuCopy') + onTriggered: Clipboard.text = $chatEntry.content + } + } + // Handle hovered link. MouseArea { - id: mouseArea - anchors.fill: parent - acceptedButtons: Qt.NoButton + acceptedButtons: Qt.RightButton cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.IBeamCursor + + onClicked: mouse.button === Qt.RightButton && messageMenu.open() } } diff --git a/linphone-desktop/ui/modules/Linphone/Chat/MessageMenu.qml b/linphone-desktop/ui/modules/Linphone/Chat/MessageMenu.qml new file mode 100644 index 000000000..fefd16e2c --- /dev/null +++ b/linphone-desktop/ui/modules/Linphone/Chat/MessageMenu.qml @@ -0,0 +1,10 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.1 + +// ============================================================================= + +Menu { + MenuItem { + text: qsTr('copy') + } +} diff --git a/linphone-desktop/ui/views/App/Calls/Dialogs/CallTransfer.qml b/linphone-desktop/ui/views/App/Calls/Dialogs/CallTransfer.qml index 70c43ace2..82f2c3e12 100644 --- a/linphone-desktop/ui/views/App/Calls/Dialogs/CallTransfer.qml +++ b/linphone-desktop/ui/views/App/Calls/Dialogs/CallTransfer.qml @@ -9,13 +9,13 @@ import App.Styles 1.0 // ============================================================================= DialogPlus { - id: callTransfer + id: callTransfer - // --------------------------------------------------------------------------- + // --------------------------------------------------------------------------- - property var call + property var call - // --------------------------------------------------------------------------- + // --------------------------------------------------------------------------- buttons: [ TextButtonA { @@ -31,7 +31,7 @@ DialogPlus { height: CallTransferStyle.height width: CallTransferStyle.width - onCallChanged: !call && exit(0) + onCallChanged: !call && exit(0) // --------------------------------------------------------------------------- @@ -87,7 +87,7 @@ DialogPlus { icon: 'transfer', handler: function (entry) { callTransfer.call.transferTo(entry.sipAddress) - exit(1) + exit(1) } }]