Reenable top bar room settings menus on avatar or title clicks

Also fixes a bug with an empty room settings window introduced in the
port.
This commit is contained in:
Nicolas Werner 2020-09-03 19:34:17 +02:00
parent 640b0ee405
commit 77e241b9e5
6 changed files with 29 additions and 15 deletions

View File

@ -126,6 +126,11 @@ Page {
color: colors.base
MouseArea {
anchors.fill: parent
onClicked: timelineManager.openRoomSettings();
}
GridLayout {
id: topLayout
@ -164,6 +169,11 @@ Page {
height: avatarSize
url: chat.model.roomAvatarUrl.replace("mxc://", "image://MxcImage/")
displayName: chat.model.roomName
MouseArea {
anchors.fill: parent
onClicked: timelineManager.openRoomSettings();
}
}
Label {
@ -173,6 +183,11 @@ Page {
font.pointSize: fontMetrics.font.pointSize * 1.1
text: chat.model.roomName
MouseArea {
anchors.fill: parent
onClicked: timelineManager.openRoomSettings();
}
}
MatrixText {
Layout.fillWidth: true

View File

@ -225,6 +225,9 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent)
}
});
connect(room_list_, &RoomList::roomChanged, this, [this](QString room_id) {
this->current_room_ = room_id;
});
connect(room_list_, &RoomList::roomChanged, text_input_, &TextInputWidget::stopTyping);
connect(room_list_, &RoomList::roomChanged, splitter, &Splitter::showChatView);
connect(room_list_, &RoomList::roomChanged, text_input_, &TextInputWidget::focusLineEdit);

View File

@ -340,9 +340,7 @@ MainWindow::openUserProfile(const QString &user_id, const QString &room_id)
void
MainWindow::openRoomSettings(const QString &room_id)
{
const auto roomToSearch = room_id.isEmpty() ? chat_page_->currentRoom() : "";
auto dialog = new dialogs::RoomSettings(roomToSearch, this);
auto dialog = new dialogs::RoomSettings(room_id, this);
showDialog(dialog);
}
@ -350,8 +348,7 @@ MainWindow::openRoomSettings(const QString &room_id)
void
MainWindow::openMemberListDialog(const QString &room_id)
{
const auto roomToSearch = room_id.isEmpty() ? chat_page_->currentRoom() : "";
auto dialog = new dialogs::MemberList(roomToSearch, this);
auto dialog = new dialogs::MemberList(room_id, this);
showDialog(dialog);
}
@ -359,11 +356,9 @@ MainWindow::openMemberListDialog(const QString &room_id)
void
MainWindow::openLeaveRoomDialog(const QString &room_id)
{
auto roomToLeave = room_id.isEmpty() ? chat_page_->currentRoom() : room_id;
auto dialog = new dialogs::LeaveRoom(this);
connect(dialog, &dialogs::LeaveRoom::leaving, this, [this, roomToLeave]() {
chat_page_->leaveRoom(roomToLeave);
connect(dialog, &dialogs::LeaveRoom::leaving, this, [this, room_id]() {
chat_page_->leaveRoom(room_id);
});
showDialog(dialog);

View File

@ -68,14 +68,14 @@ public:
static MainWindow *instance() { return instance_; };
void saveCurrentWindowSize();
void openLeaveRoomDialog(const QString &room_id = "");
void openLeaveRoomDialog(const QString &room_id);
void openInviteUsersDialog(std::function<void(const QStringList &invitees)> callback);
void openCreateRoomDialog(
std::function<void(const mtx::requests::CreateRoom &request)> callback);
void openJoinRoomDialog(std::function<void(const QString &room_id)> callback);
void openLogoutDialog();
void openRoomSettings(const QString &room_id = "");
void openMemberListDialog(const QString &room_id = "");
void openRoomSettings(const QString &room_id);
void openMemberListDialog(const QString &room_id);
void openUserProfile(const QString &user_id, const QString &room_id);
void openReadReceiptsDialog(const QString &event_id);

View File

@ -260,6 +260,7 @@ public slots:
QString roomName() const;
QString roomTopic() const;
QString roomAvatarUrl() const;
QString roomId() const { return room_id_; }
private slots:
void addPendingMessage(mtx::events::collections::TimelineEvents event);

View File

@ -253,17 +253,17 @@ TimelineViewManager::openInviteUsersDialog()
void
TimelineViewManager::openMemberListDialog() const
{
MainWindow::instance()->openMemberListDialog();
MainWindow::instance()->openMemberListDialog(timeline_->roomId());
}
void
TimelineViewManager::openLeaveRoomDialog() const
{
MainWindow::instance()->openLeaveRoomDialog();
MainWindow::instance()->openLeaveRoomDialog(timeline_->roomId());
}
void
TimelineViewManager::openRoomSettings() const
{
MainWindow::instance()->openRoomSettings();
MainWindow::instance()->openRoomSettings(timeline_->roomId());
}
void