parent
39b4c83bb0
commit
7a288cc2cb
@ -1,6 +1,8 @@
|
|||||||
|
#include <QAbstractSlider>
|
||||||
#include <QListWidgetItem>
|
#include <QListWidgetItem>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
#include <QScrollBar>
|
||||||
#include <QShortcut>
|
#include <QShortcut>
|
||||||
#include <QStyleOption>
|
#include <QStyleOption>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
@ -108,17 +110,10 @@ MemberList::MemberList(const QString &room_id, QWidget *parent)
|
|||||||
|
|
||||||
list_->clear();
|
list_->clear();
|
||||||
|
|
||||||
// Add button at the bottom.
|
connect(list_->verticalScrollBar(), &QAbstractSlider::valueChanged, this, [this](int pos) {
|
||||||
moreBtn_ = new QPushButton(tr("Show more"), this);
|
if (pos != list_->verticalScrollBar()->maximum())
|
||||||
moreBtn_->setFlat(true);
|
return;
|
||||||
auto item = new QListWidgetItem;
|
|
||||||
item->setSizeHint(moreBtn_->minimumSizeHint());
|
|
||||||
item->setFlags(Qt::NoItemFlags);
|
|
||||||
item->setTextAlignment(Qt::AlignCenter);
|
|
||||||
list_->insertItem(0, item);
|
|
||||||
list_->setItemWidget(item, moreBtn_);
|
|
||||||
|
|
||||||
connect(moreBtn_, &QPushButton::clicked, this, [this]() {
|
|
||||||
const size_t numMembers = list_->count() - 1;
|
const size_t numMembers = list_->count() - 1;
|
||||||
|
|
||||||
if (numMembers > 0)
|
if (numMembers > 0)
|
||||||
@ -136,26 +131,9 @@ MemberList::MemberList(const QString &room_id, QWidget *parent)
|
|||||||
connect(okBtn, &QPushButton::clicked, this, &MemberList::close);
|
connect(okBtn, &QPushButton::clicked, this, &MemberList::close);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
MemberList::moveButtonToBottom()
|
|
||||||
{
|
|
||||||
auto item = new QListWidgetItem(list_);
|
|
||||||
item->setSizeHint(moreBtn_->minimumSizeHint());
|
|
||||||
item->setFlags(Qt::NoItemFlags);
|
|
||||||
item->setTextAlignment(Qt::AlignCenter);
|
|
||||||
list_->setItemWidget(item, moreBtn_);
|
|
||||||
list_->addItem(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MemberList::addUsers(const std::vector<RoomMember> &members)
|
MemberList::addUsers(const std::vector<RoomMember> &members)
|
||||||
{
|
{
|
||||||
if (members.size() == 0) {
|
|
||||||
moreBtn_->hide();
|
|
||||||
} else {
|
|
||||||
moreBtn_->show();
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const auto &member : members) {
|
for (const auto &member : members) {
|
||||||
auto user = new MemberItem(member, this);
|
auto user = new MemberItem(member, this);
|
||||||
auto item = new QListWidgetItem;
|
auto item = new QListWidgetItem;
|
||||||
|
@ -46,11 +46,8 @@ public slots:
|
|||||||
void addUsers(const std::vector<RoomMember> &users);
|
void addUsers(const std::vector<RoomMember> &users);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void moveButtonToBottom();
|
|
||||||
|
|
||||||
QString room_id_;
|
QString room_id_;
|
||||||
QLabel *topLabel_;
|
QLabel *topLabel_;
|
||||||
QListWidget *list_;
|
QListWidget *list_;
|
||||||
QPushButton *moreBtn_;
|
|
||||||
};
|
};
|
||||||
} // dialogs
|
} // dialogs
|
||||||
|
Loading…
Reference in New Issue
Block a user