Only run spinner while loading members

pull/595/head
Loren Burkholder 4 years ago
parent a7bdbc2af2
commit 21eb312f69
  1. 2
      resources/qml/RoomMembers.qml
  2. 6
      src/MemberList.cpp
  3. 4
      src/MemberList.h

@ -116,7 +116,7 @@ ApplicationWindow {
} }
footer: Spinner { footer: Spinner {
visible: members.numUsersLoaded < members.memberCount visible: members.numUsersLoaded < members.memberCount && members.loadingMoreMembers
// use the default height if it's visible, otherwise no height at all // use the default height if it's visible, otherwise no height at all
height: visible ? undefined : 0 height: visible ? undefined : 0
anchors.centerIn: parent anchors.centerIn: parent

@ -98,8 +98,14 @@ MemberList::canFetchMore(const QModelIndex &) const
void void
MemberList::fetchMore(const QModelIndex &) MemberList::fetchMore(const QModelIndex &)
{ {
loadingMoreMembers_ = true;
emit loadingMoreMembersChanged();
auto members = cache::getMembers(room_id_.toStdString(), rowCount()); auto members = cache::getMembers(room_id_.toStdString(), rowCount());
addUsers(members); addUsers(members);
numUsersLoaded_ += members.size(); numUsersLoaded_ += members.size();
emit numUsersLoadedChanged(); emit numUsersLoadedChanged();
loadingMoreMembers_ = false;
emit loadingMoreMembersChanged();
} }

@ -16,6 +16,7 @@ class MemberList : public QAbstractListModel
Q_PROPERTY(QString avatarUrl READ avatarUrl NOTIFY avatarUrlChanged) Q_PROPERTY(QString avatarUrl READ avatarUrl NOTIFY avatarUrlChanged)
Q_PROPERTY(QString roomId READ roomId NOTIFY roomIdChanged) Q_PROPERTY(QString roomId READ roomId NOTIFY roomIdChanged)
Q_PROPERTY(int numUsersLoaded READ numUsersLoaded NOTIFY numUsersLoadedChanged) Q_PROPERTY(int numUsersLoaded READ numUsersLoaded NOTIFY numUsersLoadedChanged)
Q_PROPERTY(bool loadingMoreMembers READ loadingMoreMembers NOTIFY loadingMoreMembersChanged)
public: public:
enum Roles enum Roles
@ -39,6 +40,7 @@ public:
QString avatarUrl() const { return QString::fromStdString(info_.avatar_url); } QString avatarUrl() const { return QString::fromStdString(info_.avatar_url); }
QString roomId() const { return room_id_; } QString roomId() const { return room_id_; }
int numUsersLoaded() const { return numUsersLoaded_; } int numUsersLoaded() const { return numUsersLoaded_; }
bool loadingMoreMembers() const { return loadingMoreMembers_; }
signals: signals:
void roomNameChanged(); void roomNameChanged();
@ -46,6 +48,7 @@ signals:
void avatarUrlChanged(); void avatarUrlChanged();
void roomIdChanged(); void roomIdChanged();
void numUsersLoadedChanged(); void numUsersLoadedChanged();
void loadingMoreMembersChanged();
public slots: public slots:
void addUsers(const std::vector<RoomMember> &users); void addUsers(const std::vector<RoomMember> &users);
@ -59,4 +62,5 @@ private:
QString room_id_; QString room_id_;
RoomInfo info_; RoomInfo info_;
int numUsersLoaded_{0}; int numUsersLoaded_{0};
bool loadingMoreMembers_{false};
}; };

Loading…
Cancel
Save