From b17002929c2e968835b510bd47c02d9df2461bc3 Mon Sep 17 00:00:00 2001
From: Loren Burkholder <computersemiexpert@outlook.com>
Date: Wed, 21 Jul 2021 10:08:04 -0400
Subject: [PATCH] Open room members when member info label clicked

---
 resources/qml/RoomSettings.qml | 12 +++++++++++-
 src/MemberList.cpp             |  2 +-
 src/MemberList.h               |  2 +-
 src/timeline/TimelineModel.cpp |  4 ++--
 src/timeline/TimelineModel.h   |  2 +-
 5 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/resources/qml/RoomSettings.qml b/resources/qml/RoomSettings.qml
index 2701edf9f..8746d4d3a 100644
--- a/resources/qml/RoomSettings.qml
+++ b/resources/qml/RoomSettings.qml
@@ -4,7 +4,7 @@
 
 import "./ui"
 import Qt.labs.platform 1.1 as Platform
-import QtQuick 2.9
+import QtQuick 2.15
 import QtQuick.Controls 2.3
 import QtQuick.Layouts 1.2
 import QtQuick.Window 2.3
@@ -105,6 +105,16 @@ ApplicationWindow {
             MatrixText {
                 text: qsTr("%1 member(s)").arg(roomSettings.memberCount)
                 Layout.alignment: Qt.AlignHCenter
+
+                TapHandler {
+                    onTapped: Rooms.currentRoom.openRoomMembers(roomSettings.roomId)
+                }
+
+                CursorShape {
+                    cursorShape: Qt.PointingHandCursor
+                    anchors.fill: parent
+                }
+
             }
 
         }
diff --git a/src/MemberList.cpp b/src/MemberList.cpp
index 415e3b57b..0ef3b6967 100644
--- a/src/MemberList.cpp
+++ b/src/MemberList.cpp
@@ -22,7 +22,7 @@
 #include "timeline/TimelineViewManager.h"
 #include "ui/Avatar.h"
 
-MemberList::MemberList(const QString &room_id, QWidget *parent)
+MemberList::MemberList(const QString &room_id, QObject *parent)
   : QAbstractListModel{parent}
   , room_id_{room_id}
 {
diff --git a/src/MemberList.h b/src/MemberList.h
index 070666a29..9932f6a43 100644
--- a/src/MemberList.h
+++ b/src/MemberList.h
@@ -25,7 +25,7 @@ public:
                 DisplayName,
                 AvatarUrl,
         };
-        MemberList(const QString &room_id, QWidget *parent = nullptr);
+        MemberList(const QString &room_id, QObject *parent = nullptr);
 
         QHash<int, QByteArray> roleNames() const override;
         int rowCount(const QModelIndex &parent = QModelIndex()) const override
diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index 66d931fde..e9fa4a052 100644
--- a/src/timeline/TimelineModel.cpp
+++ b/src/timeline/TimelineModel.cpp
@@ -1067,9 +1067,9 @@ TimelineModel::openUserProfile(QString userid)
 }
 
 void
-TimelineModel::openRoomMembers()
+TimelineModel::openRoomMembers(QString room_id)
 {
-        MemberList *memberList = new MemberList(roomId());
+        MemberList *memberList = new MemberList(room_id == QString() ? roomId() : room_id, this);
         emit openRoomMembersDialog(memberList);
 }
 
diff --git a/src/timeline/TimelineModel.h b/src/timeline/TimelineModel.h
index 0d1eb1f9b..077245cbc 100644
--- a/src/timeline/TimelineModel.h
+++ b/src/timeline/TimelineModel.h
@@ -239,7 +239,7 @@ public:
         Q_INVOKABLE void forwardMessage(QString eventId, QString roomId);
         Q_INVOKABLE void viewDecryptedRawMessage(QString id) const;
         Q_INVOKABLE void openUserProfile(QString userid);
-        Q_INVOKABLE void openRoomMembers();
+        Q_INVOKABLE void openRoomMembers(QString room_id = QString());
         Q_INVOKABLE void openRoomSettings(QString room_id = QString());
         Q_INVOKABLE void openInviteUsers(QString roomId = QString());
         Q_INVOKABLE void editAction(QString id);
-- 
GitLab