From edeff74c52e059a45a1122e9589dfa7041ffaf4a Mon Sep 17 00:00:00 2001
From: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
Date: Fri, 24 Feb 2023 15:01:36 -0300
Subject: [PATCH] callview: move swarm details access to the actionbar

Change-Id: I0a450ab0a82943bd5e929ccd281784867edebd30
GitLab: #998
---
 src/app/mainview/components/CallActionBar.qml | 19 +++++++++++++++++++
 src/app/mainview/components/CallOverlay.qml   |  2 ++
 src/app/mainview/components/ChatView.qml      | 19 +++++++++++++++++++
 .../mainview/components/ChatViewHeader.qml    |  8 +++++---
 .../mainview/components/OngoingCallPage.qml   | 17 ++++++++++++++---
 5 files changed, 59 insertions(+), 6 deletions(-)

diff --git a/src/app/mainview/components/CallActionBar.qml b/src/app/mainview/components/CallActionBar.qml
index 2d6fb8060..2de25165b 100644
--- a/src/app/mainview/components/CallActionBar.qml
+++ b/src/app/mainview/components/CallActionBar.qml
@@ -55,6 +55,7 @@ Control {
     signal pluginsClicked
     signal recordCallClicked
     signal fullScreenClicked
+    signal swarmDetailsClicked
 
     Component {
         id: buttonDelegate
@@ -407,6 +408,22 @@ Control {
             text: JamiStrings.viewPlugin
             enabled: PluginAdapter.isEnabled
                      && PluginAdapter.callMediaHandlersListCount
+        },
+        Action {
+            id: swarmDetailsAction
+            onTriggered: root.swarmDetailsClicked()
+            icon.source: JamiResources.swarm_details_panel_svg
+            icon.color: "white"
+            text: JamiStrings.details
+            enabled: {
+                if (LRCInstance.currentAccountType === Profile.Type.SIP)
+                    return true
+                if (!CurrentConversation.isTemporary && !CurrentConversation.isSwarm)
+                    return false
+                if (CurrentConversation.isRequest || CurrentConversation.needsSyncing)
+                    return false
+                return true
+            }
         }
     ]
 
@@ -460,6 +477,8 @@ Control {
         CallOverlayModel.addSecondaryControl(recordAction)
         if (pluginsAction.enabled)
             CallOverlayModel.addSecondaryControl(pluginsAction)
+        if (swarmDetailsAction.enabled)
+            CallOverlayModel.addSecondaryControl(swarmDetailsAction)
         overflowItemCount = CallOverlayModel.secondaryModel().rowCount()
     }
 
diff --git a/src/app/mainview/components/CallOverlay.qml b/src/app/mainview/components/CallOverlay.qml
index 5a108d992..67473c22d 100644
--- a/src/app/mainview/components/CallOverlay.qml
+++ b/src/app/mainview/components/CallOverlay.qml
@@ -40,6 +40,7 @@ Item {
     signal chatButtonClicked
     signal fullScreenClicked
     signal closeClicked
+    signal swarmDetailsClicked
 
     function closeContextMenuAndRelatedWindows() {
         sipInputPanel.close()
@@ -172,6 +173,7 @@ Item {
             function onShareFileClicked() { openShareFileDialog() }
             function onPluginsClicked() { openPluginsMenu() }
             function onFullScreenClicked() { root.fullScreenClicked() }
+            function onSwarmDetailsClicked() { root.swarmDetailsClicked() }
         }
     }
 
diff --git a/src/app/mainview/components/ChatView.qml b/src/app/mainview/components/ChatView.qml
index 38faae52b..8b968c544 100644
--- a/src/app/mainview/components/ChatView.qml
+++ b/src/app/mainview/components/ChatView.qml
@@ -50,9 +50,11 @@ Rectangle {
     }
 
     function resetPanels() {
+        chatViewHeader.showSearch = true
         swarmDetailsPanel.visible = false
         addMemberPanel.visible = false
         chatContents.visible = true
+        messagesResearchPanel.visible = false
     }
 
     function instanceMapObject() {
@@ -81,6 +83,21 @@ Rectangle {
         }
     }
 
+    onVisibleChanged: {
+        if (visible){
+            chatViewHeader.showSearch = !root.parent.showDetails
+            addMemberPanel.visible = false
+            messagesResearchPanel.visible = false
+            if (root.parent.showDetails) {
+                chatContents.visible = false
+                swarmDetailsPanel.visible = true
+            } else {
+                chatContents.visible = true
+                swarmDetailsPanel.visible = false
+            }
+        }
+    }
+
     ColumnLayout {
         anchors.fill: root
 
@@ -134,6 +151,8 @@ Rectangle {
             }
 
             onWidthChanged: {
+                if (inCallView)
+                    return
                 const isExpanding = previousWidth < width
 
                 if (!swarmDetailsPanel.visible && !addMemberPanel.visible && !messagesResearchPanel.visible)
diff --git a/src/app/mainview/components/ChatViewHeader.qml b/src/app/mainview/components/ChatViewHeader.qml
index d17c87af8..ba3847f1b 100644
--- a/src/app/mainview/components/ChatViewHeader.qml
+++ b/src/app/mainview/components/ChatViewHeader.qml
@@ -31,6 +31,8 @@ import "../../commoncomponents"
 Rectangle {
     id: root
 
+    property bool showSearch: true
+
     signal backClicked
     signal addToConversationClicked
     signal pluginSelector
@@ -156,7 +158,7 @@ Rectangle {
 
                 Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
                 spacing: headerButtons.spacing
-                visible: CurrentConversation.isSwarm
+                visible: root.showSearch && CurrentConversation.isSwarm
             }
 
             PushButton {
@@ -197,7 +199,7 @@ Rectangle {
                 normalColor: JamiTheme.chatviewBgColor
                 imageColor: JamiTheme.chatviewButtonColor
 
-                visible: CurrentConversationMembers.count < 8 && addMemberVisibility
+                visible: interactionButtonsVisibility && CurrentConversationMembers.count < 8 && addMemberVisibility
 
                 onClicked: addToConversationClicked()
             }
@@ -236,7 +238,7 @@ Rectangle {
             PushButton {
                 id: detailsButton
 
-                visible: swarmDetailsVisibility
+                visible: interactionButtonsVisibility && swarmDetailsVisibility
 
                 source: JamiResources.swarm_details_panel_svg
                 toolTipText: JamiStrings.details
diff --git a/src/app/mainview/components/OngoingCallPage.qml b/src/app/mainview/components/OngoingCallPage.qml
index bb71389e6..2e68c30f7 100644
--- a/src/app/mainview/components/OngoingCallPage.qml
+++ b/src/app/mainview/components/OngoingCallPage.qml
@@ -65,6 +65,7 @@ Rectangle {
 
     function openInCallConversation() {
         mainColumnLayout.isHorizontal = UtilsAdapter.getAppValue(Settings.Key.ShowChatviewHorizontally)
+        chatViewContainer.visible = false
         chatViewContainer.visible = true
     }
 
@@ -336,14 +337,23 @@ Rectangle {
                 }
 
                 onChatButtonClicked: {
-                    chatViewContainer.visible ?
-                                closeInCallConversation() :
-                                openInCallConversation()
+                    var detailsVisible = chatViewContainer.showDetails
+                    chatViewContainer.showDetails = false
+                    !chatViewContainer.visible || detailsVisible ?
+                                openInCallConversation() :
+                                closeInCallConversation()
                 }
 
                 onFullScreenClicked: {
                     callStackView.toggleFullScreen()
                 }
+
+                onSwarmDetailsClicked: {
+                    chatViewContainer.showDetails = !chatViewContainer.showDetails
+                    chatViewContainer.showDetails ?
+                                openInCallConversation() :
+                                closeInCallConversation()
+                }
             }
 
             ColumnLayout {
@@ -399,6 +409,7 @@ Rectangle {
             SplitView.minimumWidth: JamiTheme.chatViewHeaderMinimumWidth
             visible: false
             clip: true
+            property bool showDetails: false
 
             onVisibleChanged: {
                 if (visible && root.width < JamiTheme.chatViewHeaderMinimumWidth * 2) {
-- 
GitLab