Continue implementing room joining
and fix an occasional segfault
This commit is contained in:
parent
6b87574e45
commit
9a11b73c3c
@ -44,6 +44,9 @@ public:
|
||||
|
||||
void clear();
|
||||
|
||||
void addRoom(const QSharedPointer<RoomSettings> &settings,
|
||||
const RoomState &state,
|
||||
const QString &room_id);
|
||||
void removeRoom(const QString &room_id, bool reset);
|
||||
|
||||
signals:
|
||||
|
@ -567,6 +567,8 @@ ChatPage::joinedRoom(const QString &room_id)
|
||||
settingsManager_.insert(room_id,
|
||||
QSharedPointer<RoomSettings>(new RoomSettings(room_id)));
|
||||
|
||||
room_list_->addRoom(settingsManager_[room_id], state_manager_[room_id], room_id);
|
||||
|
||||
this->changeTopRoomInfo(room_id);
|
||||
}
|
||||
|
||||
|
@ -59,28 +59,24 @@ RoomList::RoomList(QSharedPointer<MatrixClient> client, QWidget *parent)
|
||||
joinRoomButton_ = new QPushButton("Join room", this);
|
||||
topLayout_->addWidget(joinRoomButton_);
|
||||
|
||||
connect(joinRoomButton_, &QPushButton::clicked, this, [=]() {
|
||||
if (joinRoomDialog_ == nullptr) {
|
||||
joinRoomDialog_ = new JoinRoomDialog(this);
|
||||
connect(joinRoomDialog_,
|
||||
SIGNAL(closing(bool, QString)),
|
||||
this,
|
||||
SLOT(closeJoinRoomDialog(bool, QString)));
|
||||
}
|
||||
|
||||
if (joinRoomModal_ == nullptr) {
|
||||
joinRoomModal_ = new OverlayModal(MainWindow::instance(), joinRoomDialog_);
|
||||
joinRoomModal_->setDuration(100);
|
||||
joinRoomModal_->setColor(QColor(55, 55, 55, 170));
|
||||
}
|
||||
|
||||
joinRoomModal_->fadeIn();
|
||||
});
|
||||
|
||||
connect(client_.data(),
|
||||
SIGNAL(roomAvatarRetrieved(const QString &, const QPixmap &)),
|
||||
this,
|
||||
SLOT(updateRoomAvatar(const QString &, const QPixmap &)));
|
||||
|
||||
connect(joinRoomButton_, &QPushButton::clicked, this, [=]() {
|
||||
joinRoomDialog_ = new JoinRoomDialog(this);
|
||||
connect(joinRoomDialog_,
|
||||
SIGNAL(closing(bool, QString)),
|
||||
this,
|
||||
SLOT(closeJoinRoomDialog(bool, QString)));
|
||||
|
||||
joinRoomModal_ = new OverlayModal(MainWindow::instance(), joinRoomDialog_);
|
||||
joinRoomModal_->setDuration(100);
|
||||
joinRoomModal_->setColor(QColor(55, 55, 55, 170));
|
||||
|
||||
joinRoomModal_->fadeIn();
|
||||
});
|
||||
}
|
||||
|
||||
RoomList::~RoomList() {}
|
||||
@ -91,6 +87,26 @@ RoomList::clear()
|
||||
rooms_.clear();
|
||||
}
|
||||
|
||||
void
|
||||
RoomList::addRoom(const QSharedPointer<RoomSettings> &settings,
|
||||
const RoomState &state,
|
||||
const QString &room_id)
|
||||
{
|
||||
RoomInfoListItem *room_item =
|
||||
new RoomInfoListItem(settings, state, room_id, scrollArea_);
|
||||
connect(
|
||||
room_item, &RoomInfoListItem::clicked,
|
||||
this, &RoomList::highlightSelectedRoom);
|
||||
connect(
|
||||
room_item, &RoomInfoListItem::leaveRoom,
|
||||
client_.data(), &MatrixClient::leaveRoom);
|
||||
|
||||
rooms_.insert(room_id, QSharedPointer<RoomInfoListItem>(room_item));
|
||||
|
||||
int pos = contentsLayout_->count() - 1;
|
||||
contentsLayout_->insertWidget(pos, room_item);
|
||||
}
|
||||
|
||||
void
|
||||
RoomList::removeRoom(const QString &room_id, bool reset)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user