From ef776637ad6f2f8315d311136f0fc466da4bd03b Mon Sep 17 00:00:00 2001
From: ababi <albert.babi@savoirfairelinux.com>
Date: Thu, 24 Sep 2020 14:15:33 +0200
Subject: [PATCH] callview: add hangup to context menu and icon change

- during a call context menu shows "hangup" and hides "clear", "remove", "block" and "start call"
- change start call and record call (context menu) icons

Gitlab: #104

Change-Id: I6c213b525fa6cd9d8063aae0065614c94d9e2209
---
 images/icons/keyboard_voice-24px.svg          |  1 +
 resources.qrc                                 |  4 +-
 .../components/CallViewContextMenu.qml        |  2 +-
 .../ConversationSmartListContextMenu.qml      | 89 +++++++++++--------
 .../components/MessageWebViewHeader.qml       |  2 +-
 5 files changed, 58 insertions(+), 40 deletions(-)
 create mode 100644 images/icons/keyboard_voice-24px.svg

diff --git a/images/icons/keyboard_voice-24px.svg b/images/icons/keyboard_voice-24px.svg
new file mode 100644
index 000000000..28f520385
--- /dev/null
+++ b/images/icons/keyboard_voice-24px.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M12 15c1.66 0 2.99-1.34 2.99-3L15 6c0-1.66-1.34-3-3-3S9 4.34 9 6v6c0 1.66 1.34 3 3 3zm6.08-3c-.42 0-.77.3-.83.71-.37 2.61-2.72 4.39-5.25 4.39s-4.88-1.77-5.25-4.39c-.06-.41-.42-.71-.83-.71-.52 0-.92.46-.85.97.46 2.97 2.96 5.3 5.93 5.75V21c0 .55.45 1 1 1s1-.45 1-1v-2.28c2.96-.43 5.47-2.78 5.93-5.75.07-.51-.33-.97-.85-.97z"/></svg>
\ No newline at end of file
diff --git a/resources.qrc b/resources.qrc
index 0ea0cf0b8..07c63cf87 100644
--- a/resources.qrc
+++ b/resources.qrc
@@ -119,6 +119,8 @@
         <file>images/icons/person_add-24px.svg</file>
         <file>images/icons/router-24px.svg</file>
         <file>images/icons/insert_drive_file-24dp.svg</file>
-	<file>images/icons/arrow_back-white-24dp.svg</file>
+        <file>images/icons/arrow_back-white-24dp.svg</file>
+        <file>images/icons/keyboard_voice-24px.svg</file>
+        <file>images/icons/videocam-24px.svg</file>
     </qresource>
 </RCC>
diff --git a/src/mainview/components/CallViewContextMenu.qml b/src/mainview/components/CallViewContextMenu.qml
index 9cb217c1e..bdd619226 100644
--- a/src/mainview/components/CallViewContextMenu.qml
+++ b/src/mainview/components/CallViewContextMenu.qml
@@ -67,7 +67,7 @@ Item {
         if (!isAudioOnly && !isPaused) {
             ContextMenuGenerator.addMenuItem(isRecording ? JamiStrings.stopRec :
                                                            JamiStrings.startRec,
-                                             "qrc:/images/icons/ic_video_call_24px.svg",
+                                             "qrc:/images/icons/keyboard_voice-24px.svg",
                                              function (){
                                                   CallAdapter.recordThisCallToggle()
                                              })
diff --git a/src/mainview/components/ConversationSmartListContextMenu.qml b/src/mainview/components/ConversationSmartListContextMenu.qml
index 1b26cf1bd..b9b8def96 100644
--- a/src/mainview/components/ConversationSmartListContextMenu.qml
+++ b/src/mainview/components/ConversationSmartListContextMenu.qml
@@ -33,43 +33,57 @@ Item {
     property string responsibleConvUid: ""
     property int contactType: Profile.Type.INVALID
 
-    function openMenu(){
-        ContextMenuGenerator.addMenuItem(qsTr("Start video call"),
-                                         "qrc:/images/icons/ic_video_call_24px.svg",
-                                         function (){
-                                             ConversationsAdapter.selectConversation(
-                                                         responsibleAccountId,
-                                                         responsibleConvUid, false)
-                                             CallAdapter.placeCall()
-                                         })
-        ContextMenuGenerator.addMenuItem(qsTr("Start audio call"),
-                                         "qrc:/images/icons/ic_phone_24px.svg",
-                                         function (){
-                                             ConversationsAdapter.selectConversation(
-                                                         responsibleAccountId,
-                                                         responsibleConvUid, false)
-                                             CallAdapter.placeAudioOnlyCall()
-                                         })
-        ContextMenuGenerator.addMenuItem(qsTr("Clear conversation"),
-                                         "qrc:/images/icons/ic_clear_24px.svg",
-                                         function (){
-                                             UtilsAdapter.clearConversationHistory(
-                                                         responsibleAccountId,
-                                                         responsibleConvUid)
-                                         })
+    function openMenu() {
+        var hasCall = UtilsAdapter.getCallId(responsibleAccountId, responsibleConvUid) !== ""
+        if (!hasCall) {
+            ContextMenuGenerator.addMenuItem(qsTr("Start video call"),
+                                             "qrc:/images/icons/videocam-24px.svg",
+                                             function (){
+                                                 ConversationsAdapter.selectConversation(
+                                                             responsibleAccountId,
+                                                             responsibleConvUid, false)
+                                                 CallAdapter.placeCall()
+                                             })
+            ContextMenuGenerator.addMenuItem(qsTr("Start audio call"),
+                                             "qrc:/images/icons/ic_phone_24px.svg",
+                                             function (){
+                                                 ConversationsAdapter.selectConversation(
+                                                             responsibleAccountId,
+                                                             responsibleConvUid, false)
+                                                 CallAdapter.placeAudioOnlyCall()
+                                             })
 
-        if (contactType === Profile.Type.RING || contactType === Profile.Type.SIP) {
-            ContextMenuGenerator.addMenuItem(qsTr("Remove contact"),
-                                             "qrc:/images/icons/round-remove_circle-24px.svg",
+            ContextMenuGenerator.addMenuItem(qsTr("Clear conversation"),
+                                             "qrc:/images/icons/ic_clear_24px.svg",
                                              function (){
-                                                 UtilsAdapter.removeConversation(
+                                                 UtilsAdapter.clearConversationHistory(
                                                              responsibleAccountId,
                                                              responsibleConvUid)
                                              })
+
+            if (contactType === Profile.Type.RING || contactType === Profile.Type.SIP)  {
+                ContextMenuGenerator.addMenuItem(qsTr("Remove contact"),
+                                                 "qrc:/images/icons/round-remove_circle-24px.svg",
+                                                 function (){
+                                                     UtilsAdapter.removeConversation(
+                                                                 responsibleAccountId,
+                                                                 responsibleConvUid)
+                                                 })
+            }
+
+        } else {
+            ContextMenuGenerator.addMenuItem(qsTr("Hang up call"),
+                                             "qrc:/images/icons/ic_call_end_white_24px.svg",
+                                             function (){
+                                                 CallAdapter.hangUpACall(responsibleAccountId,
+                                                                         responsibleConvUid)
+                                             })
         }
 
-        if (contactType === Profile.Type.RING || contactType === Profile.Type.PENDING) {
-            ContextMenuGenerator.addMenuSeparator()
+        if ((contactType === Profile.Type.RING || contactType === Profile.Type.PENDING)) {
+            if (contactType === Profile.Type.PENDING || !hasCall) {
+                ContextMenuGenerator.addMenuSeparator()
+            }
 
             if (contactType === Profile.Type.PENDING) {
                 ContextMenuGenerator.addMenuItem(JamiStrings.acceptContactRequest,
@@ -85,13 +99,14 @@ Item {
                                                                  responsibleConvUid)
                                                  })
             }
-            ContextMenuGenerator.addMenuItem(qsTr("Block contact"),
-                                             "qrc:/images/icons/ic_block_24px.svg",
-                                             function (){
-                                                 MessagesAdapter.blockConversation(
-                                                             responsibleConvUid)
-                                             })
-
+            if (!hasCall) {
+                ContextMenuGenerator.addMenuItem(qsTr("Block contact"),
+                                                 "qrc:/images/icons/ic_block_24px.svg",
+                                                 function (){
+                                                     MessagesAdapter.blockConversation(
+                                                                 responsibleConvUid)
+                                                 })
+            }
             ContextMenuGenerator.addMenuSeparator()
             ContextMenuGenerator.addMenuItem(qsTr("Profile"),
                                              "qrc:/images/icons/person-24px.svg",
diff --git a/src/mainview/components/MessageWebViewHeader.qml b/src/mainview/components/MessageWebViewHeader.qml
index a54f10c9a..9f19a369e 100644
--- a/src/mainview/components/MessageWebViewHeader.qml
+++ b/src/mainview/components/MessageWebViewHeader.qml
@@ -165,7 +165,7 @@ Rectangle {
                 width: buttonPreferredSize
 
                 radius: 30
-                source: "qrc:/images/icons/ic_video_call_24px.svg"
+                source: "qrc:/images/icons/videocam-24px.svg"
                 backgroundColor: "white"
                 onExitColor: "white"
 
-- 
GitLab