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