From 5973790c8b7144c9faf0111af8d33b3ce55dbe90 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Fri, 22 Jul 2022 13:31:19 -0400
Subject: [PATCH] swarmdetailspanel: add conversation details to the context
 menu

and add the identifier to check the swarm id (for future public
groups, it will be important)

Change-Id: I5ebc16cdc280567447abd14a05c4a62263609f25
---
 src/app/constant/JamiStrings.qml              |  2 +-
 src/app/currentconversation.cpp               |  6 +++
 src/app/currentconversation.h                 |  5 +++
 .../mainview/components/ChatViewHeader.qml    |  1 +
 .../components/ConversationListView.qml       |  8 ++++
 .../ConversationSmartListContextMenu.qml      | 12 ++++--
 .../mainview/components/SwarmDetailsPanel.qml | 38 ++++++++++++++++++-
 7 files changed, 66 insertions(+), 6 deletions(-)

diff --git a/src/app/constant/JamiStrings.qml b/src/app/constant/JamiStrings.qml
index 3cb0057e1..b70042960 100644
--- a/src/app/constant/JamiStrings.qml
+++ b/src/app/constant/JamiStrings.qml
@@ -254,7 +254,7 @@ Item {
     property string removeContact: qsTr("Remove contact")
     property string blockContact: qsTr("Block contact")
     property string blockSwarm: qsTr("Block swarm")
-    property string contactDetails: qsTr("Contact details")
+    property string convDetails: qsTr("Conversation details")
 
     // CallViewContextMenu
     property string hold: qsTr("Hold")
diff --git a/src/app/currentconversation.cpp b/src/app/currentconversation.cpp
index f54858502..b27f97970 100644
--- a/src/app/currentconversation.cpp
+++ b/src/app/currentconversation.cpp
@@ -144,3 +144,9 @@ CurrentConversation::connectModel()
             &CurrentConversation::onProfileUpdated,
             Qt::UniqueConnection);
 }
+
+void
+CurrentConversation::showSwarmDetails() const
+{
+    Q_EMIT showDetails();
+}
diff --git a/src/app/currentconversation.h b/src/app/currentconversation.h
index 7483c107c..997317959 100644
--- a/src/app/currentconversation.h
+++ b/src/app/currentconversation.h
@@ -54,6 +54,11 @@ public:
     explicit CurrentConversation(LRCInstance* lrcInstance, QObject* parent = nullptr);
     ~CurrentConversation() = default;
 
+    Q_INVOKABLE void showSwarmDetails() const;
+
+Q_SIGNALS:
+    void showDetails() const;
+
 private Q_SLOTS:
     void updateData();
     void onConversationUpdated(const QString& convId);
diff --git a/src/app/mainview/components/ChatViewHeader.qml b/src/app/mainview/components/ChatViewHeader.qml
index 502d5b6b7..c63d39bb2 100644
--- a/src/app/mainview/components/ChatViewHeader.qml
+++ b/src/app/mainview/components/ChatViewHeader.qml
@@ -40,6 +40,7 @@ Rectangle {
         enabled: true
         function onTitleChanged() { title.eText = CurrentConversation.title }
         function onDescriptionChanged() { description.eText = CurrentConversation.description }
+        function onShowDetails() { root.showDetailsClicked() }
     }
 
     property bool interactionButtonsVisibility: {
diff --git a/src/app/mainview/components/ConversationListView.qml b/src/app/mainview/components/ConversationListView.qml
index 931205b27..b2eeac5c9 100644
--- a/src/app/mainview/components/ConversationListView.qml
+++ b/src/app/mainview/components/ConversationListView.qml
@@ -113,6 +113,8 @@ JamiListView {
     ConversationSmartListContextMenu {
         id: contextMenu
 
+        property var index: -1
+
         function openMenuAt(x, y) {
             contextMenu.x = x
             contextMenu.y = y
@@ -122,6 +124,7 @@ JamiListView {
             // - userProfile dialog should use a loader/popup
 
             var row = root.indexAt(x, y + root.contentY)
+            index = row
             var item = {
                 "convId": model.dataForRow(row, ConversationList.UID),
                 "displayId": model.dataForRow(row, ConversationList.BestId),
@@ -151,6 +154,11 @@ JamiListView {
 
             openMenu()
         }
+
+        onShowSwarmDetails: {
+            model.select(index)
+            CurrentConversation.showSwarmDetails()
+        }
     }
 
     Shortcut {
diff --git a/src/app/mainview/components/ConversationSmartListContextMenu.qml b/src/app/mainview/components/ConversationSmartListContextMenu.qml
index 2e9173204..d73b3fe6b 100644
--- a/src/app/mainview/components/ConversationSmartListContextMenu.qml
+++ b/src/app/mainview/components/ConversationSmartListContextMenu.qml
@@ -28,6 +28,8 @@ import "../../commoncomponents/contextmenu"
 ContextMenuAutoLoader {
     id: root
 
+    signal showSwarmDetails
+
     ConfirmDialog {
         id: rmDialog
 
@@ -164,10 +166,14 @@ ContextMenuAutoLoader {
             id: contactDetails
 
             canTrigger: contactType !== Profile.Type.SIP
-                        && !(mode && mode !== Conversation.Mode.ONE_TO_ONE && mode !== Conversation.Mode.NON_SWARM)
-            itemName: JamiStrings.contactDetails
+            itemName: JamiStrings.convDetails
             iconSource: JamiResources.person_24dp_svg
-            onClicked: userProfile.open()
+            onClicked: {
+                if (!(mode && mode !== Conversation.Mode.ONE_TO_ONE && mode !== Conversation.Mode.NON_SWARM))
+                    userProfile.open()
+                else
+                    root.showSwarmDetails()
+            }
         }
     ]
 
diff --git a/src/app/mainview/components/SwarmDetailsPanel.qml b/src/app/mainview/components/SwarmDetailsPanel.qml
index a74879d97..314758ca2 100644
--- a/src/app/mainview/components/SwarmDetailsPanel.qml
+++ b/src/app/mainview/components/SwarmDetailsPanel.qml
@@ -325,9 +325,9 @@ Rectangle {
                     }
                 }
 
-
                 RowLayout {
                     Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.preferredHeight: JamiTheme.settingsFontSize + 2 * JamiTheme.preferredMarginSize + 4
 
                     Text {
                         Layout.fillWidth: true
@@ -349,11 +349,45 @@ Rectangle {
 
                         Layout.alignment: Qt.AlignRight
 
-                        color: JamiTheme.buttonTintedBlack
+                        color: JamiTheme.textColor
 
                         text: CurrentConversation.modeString
                     }
                 }
+
+                RowLayout {
+                    Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.preferredHeight: JamiTheme.settingsFontSize + 2 * JamiTheme.preferredMarginSize + 4
+                    Layout.maximumWidth: parent.width
+
+                    Text {
+                        id: idLabel
+                        Layout.preferredHeight: 30
+                        Layout.rightMargin: JamiTheme.preferredMarginSize
+                        Layout.maximumWidth: parent.width / 2
+
+                        text: JamiStrings.identifier
+                        font.pointSize: JamiTheme.settingsFontSize
+                        font.kerning: true
+                        elide: Text.ElideRight
+                        horizontalAlignment: Text.AlignLeft
+                        verticalAlignment: Text.AlignVCenter
+
+                        color: JamiTheme.textColor
+                    }
+
+                    Text {
+                        Layout.alignment: Qt.AlignRight
+                        Layout.maximumWidth: parent.width / 2
+
+                        color: JamiTheme.textColor
+
+
+                        text: CurrentConversation.id
+                        elide: Text.ElideRight
+
+                    }
+                }
             }
 
             JamiListView {
-- 
GitLab