From 7a288cc2cb6e9272232e4c35c312f705c0b162e8 Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Tue, 25 Sep 2018 15:43:48 +0300 Subject: [PATCH] Add infinite scroll in member list fixes #446 --- src/dialogs/MemberList.cpp | 32 +++++--------------------------- src/dialogs/MemberList.h | 3 --- 2 files changed, 5 insertions(+), 30 deletions(-) diff --git a/src/dialogs/MemberList.cpp b/src/dialogs/MemberList.cpp index df539666..dae4fc86 100644 --- a/src/dialogs/MemberList.cpp +++ b/src/dialogs/MemberList.cpp @@ -1,6 +1,8 @@ +#include #include #include #include +#include #include #include #include @@ -108,17 +110,10 @@ MemberList::MemberList(const QString &room_id, QWidget *parent) list_->clear(); - // Add button at the bottom. - moreBtn_ = new QPushButton(tr("Show more"), this); - moreBtn_->setFlat(true); - 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(list_->verticalScrollBar(), &QAbstractSlider::valueChanged, this, [this](int pos) { + if (pos != list_->verticalScrollBar()->maximum()) + return; - connect(moreBtn_, &QPushButton::clicked, this, [this]() { const size_t numMembers = list_->count() - 1; if (numMembers > 0) @@ -136,26 +131,9 @@ MemberList::MemberList(const QString &room_id, QWidget *parent) 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 MemberList::addUsers(const std::vector &members) { - if (members.size() == 0) { - moreBtn_->hide(); - } else { - moreBtn_->show(); - } - for (const auto &member : members) { auto user = new MemberItem(member, this); auto item = new QListWidgetItem; diff --git a/src/dialogs/MemberList.h b/src/dialogs/MemberList.h index 468172f0..c01b6829 100644 --- a/src/dialogs/MemberList.h +++ b/src/dialogs/MemberList.h @@ -46,11 +46,8 @@ public slots: void addUsers(const std::vector &users); private: - void moveButtonToBottom(); - QString room_id_; QLabel *topLabel_; QListWidget *list_; - QPushButton *moreBtn_; }; } // dialogs