From d057fa1ba8acd477fc8b91a74e8e82517147e12d Mon Sep 17 00:00:00 2001 From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com> Date: Wed, 23 Sep 2020 10:40:52 -0400 Subject: [PATCH] call: show context menu when right clicking the call page Gitlab: #80 Change-Id: Ic2c2563e05a11f33230518ee93ef4a1d9dd80d50 --- src/mainview/components/AudioCallPage.qml | 10 ++++++++ src/mainview/components/CallOverlay.qml | 9 ++++++- .../components/CallOverlayButtonGroup.qml | 5 ++-- src/mainview/components/VideoCallPage.qml | 25 ++++++++----------- 4 files changed, 31 insertions(+), 18 deletions(-) diff --git a/src/mainview/components/AudioCallPage.qml b/src/mainview/components/AudioCallPage.qml index 1994e895b..f751333fa 100644 --- a/src/mainview/components/AudioCallPage.qml +++ b/src/mainview/components/AudioCallPage.qml @@ -231,5 +231,15 @@ Rectangle { } } + MouseArea { + anchors.fill: parent + + acceptedButtons: Qt.RightButton + + onClicked: { + audioCallOverlay.openCallViewContextMenuInPos(mouse.x, mouse.y) + } + } + color: "black" } diff --git a/src/mainview/components/CallOverlay.qml b/src/mainview/components/CallOverlay.qml index 2ac3d3ad6..ac529f0c8 100644 --- a/src/mainview/components/CallOverlay.qml +++ b/src/mainview/components/CallOverlay.qml @@ -114,6 +114,14 @@ Rectangle { } } + // x, y position does not need to be translated + // since they all fill the call page + function openCallViewContextMenuInPos(x, y) { + callViewContextMenu.x = x + callViewContextMenu.y = y + callViewContextMenu.openMenu() + } + anchors.fill: parent SipInputPanel { @@ -344,7 +352,6 @@ Rectangle { } } - // MouseAreas to make sure that overlay states are correctly set. MouseArea { id: callOverlayButtonGroupLeftSideMouseArea diff --git a/src/mainview/components/CallOverlayButtonGroup.qml b/src/mainview/components/CallOverlayButtonGroup.qml index 323340130..8efcb55df 100644 --- a/src/mainview/components/CallOverlayButtonGroup.qml +++ b/src/mainview/components/CallOverlayButtonGroup.qml @@ -228,9 +228,10 @@ Rectangle { onClicked: { var rectPos = mapToItem(callStackViewWindow, optionsButton.x, optionsButton.y) - callViewContextMenu.openMenu() - callViewContextMenu.x = rectPos.x + optionsButton.width/2 - callViewContextMenu.width/2 + callViewContextMenu.x = rectPos.x + optionsButton.width / 2 + - callViewContextMenu.width / 2 callViewContextMenu.y = rectPos.y - 12 - callViewContextMenu.height + callViewContextMenu.openMenu() } } diff --git a/src/mainview/components/VideoCallPage.qml b/src/mainview/components/VideoCallPage.qml index 316c893ce..41e7042f5 100644 --- a/src/mainview/components/VideoCallPage.qml +++ b/src/mainview/components/VideoCallPage.qml @@ -87,8 +87,6 @@ Rectangle { } function previewMagneticSnap() { - - // Calculate the position where the previewRenderer should attach to. var previewRendererCenter = Qt.point( previewRenderer.x + previewRenderer.width / 2, @@ -99,8 +97,6 @@ Rectangle { if (previewRendererCenter.x >= distantRendererCenter.x) { if (previewRendererCenter.y >= distantRendererCenter.y) { - - // Bottom right. previewToX = Qt.binding(function () { return videoCallPageMainRect.width - previewRenderer.width - previewMargin @@ -109,8 +105,6 @@ Rectangle { return videoCallPageMainRect.height - previewRenderer.height - previewMarginY }) } else { - - // Top right. previewToX = Qt.binding(function () { return videoCallPageMainRect.width - previewRenderer.width - previewMargin @@ -119,16 +113,12 @@ Rectangle { } } else { if (previewRendererCenter.y >= distantRendererCenter.y) { - - // Bottom left. previewToX = previewMargin previewToY = Qt.binding(function () { return videoCallPageMainRect.height - previewRenderer.height - previewMarginY }) } else { - - // Top left. previewToX = previewMargin previewToY = previewMarginY @@ -152,7 +142,6 @@ Rectangle { color: SplitHandle.pressed ? JamiTheme.pressColor : (SplitHandle.hovered ? JamiTheme.hoverColor : JamiTheme.tabbarBorderColor) } - Rectangle { id: videoCallPageMainRect SplitView.preferredHeight: (videoCallPageRect.height / 3) * 2 @@ -236,7 +225,6 @@ Rectangle { VideoCallPreviewRenderer { id: previewRenderer - // Property is used in the {} expression for height (extra dependency), // it will not affect the true height expression, since expression // at last will be taken only, but it will force the height to update @@ -298,8 +286,6 @@ Rectangle { } onPositionChanged: { - - // Calculate mouse position relative change. var delta = Qt.point(mouse.x - clickPos.x, mouse.y - clickPos.y) @@ -327,7 +313,6 @@ Rectangle { color: "transparent" } - StackView { id: inVideoCallMessageWebViewStack @@ -340,6 +325,16 @@ Rectangle { } } + MouseArea { + anchors.fill: parent + + acceptedButtons: Qt.RightButton + + onClicked: { + videoCallOverlay.openCallViewContextMenuInPos(mouse.x, mouse.y) + } + } + onBestNameChanged: { ContactAdapter.setCalleeDisplayName(bestName) } -- GitLab