diff --git a/src/app/constant/JamiStrings.qml b/src/app/constant/JamiStrings.qml index 3cb0057e1be4b2c956f1ab48c4ecc0581abba77c..b700429604e97295969c2267354cf89f1b25dbe7 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 f5485850229f62ad557b364bdd30d79f207fdbb2..b27f9797054d8fddbb3286d9ff55ba2c6103cacd 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 7483c107c08bc4ea9748f95503712caae0aba15e..997317959cab1dc3b718b95ed623df1ef36c9c83 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 502d5b6b785e2266d74411960da5036746fb9de6..c63d39bb26f8eeca0d6f83422f3ee961021486a0 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 931205b27c838f63e5dd66125ca1a52837899886..b2eeac5c9a16d3bfa3ca447b61b4481a64814ba9 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 2e9173204afea79023cb266cd9151b98e633d761..d73b3fe6b715c4f40ac3492e0e273e0b083a7047 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 a74879d97a8300fc372b393e1e1c162feaa379c8..314758ca2bacafccc37f87096750cbe9fc6261b1 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 {