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