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 clear();
|
||||||
|
|
||||||
|
void addRoom(const QSharedPointer<RoomSettings> &settings,
|
||||||
|
const RoomState &state,
|
||||||
|
const QString &room_id);
|
||||||
void removeRoom(const QString &room_id, bool reset);
|
void removeRoom(const QString &room_id, bool reset);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
@ -567,6 +567,8 @@ ChatPage::joinedRoom(const QString &room_id)
|
|||||||
settingsManager_.insert(room_id,
|
settingsManager_.insert(room_id,
|
||||||
QSharedPointer<RoomSettings>(new RoomSettings(room_id)));
|
QSharedPointer<RoomSettings>(new RoomSettings(room_id)));
|
||||||
|
|
||||||
|
room_list_->addRoom(settingsManager_[room_id], state_manager_[room_id], room_id);
|
||||||
|
|
||||||
this->changeTopRoomInfo(room_id);
|
this->changeTopRoomInfo(room_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,28 +59,24 @@ RoomList::RoomList(QSharedPointer<MatrixClient> client, QWidget *parent)
|
|||||||
joinRoomButton_ = new QPushButton("Join room", this);
|
joinRoomButton_ = new QPushButton("Join room", this);
|
||||||
topLayout_->addWidget(joinRoomButton_);
|
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(),
|
connect(client_.data(),
|
||||||
SIGNAL(roomAvatarRetrieved(const QString &, const QPixmap &)),
|
SIGNAL(roomAvatarRetrieved(const QString &, const QPixmap &)),
|
||||||
this,
|
this,
|
||||||
SLOT(updateRoomAvatar(const QString &, const QPixmap &)));
|
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() {}
|
RoomList::~RoomList() {}
|
||||||
@ -91,6 +87,26 @@ RoomList::clear()
|
|||||||
rooms_.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
|
void
|
||||||
RoomList::removeRoom(const QString &room_id, bool reset)
|
RoomList::removeRoom(const QString &room_id, bool reset)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user