Fix filtering users in the member list
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
bool UserFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
|
bool UserFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
|
||||||
{
|
{
|
||||||
Q_UNUSED(sourceParent);
|
Q_UNUSED(sourceParent);
|
||||||
if (m_filterText.length() < 1) {
|
if (!m_allowEmpty && m_filterText.length() < 1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return sourceModel()->data(sourceModel()->index(sourceRow, 0), UserListModel::DisplayNameRole).toString().contains(m_filterText, Qt::CaseInsensitive)
|
return sourceModel()->data(sourceModel()->index(sourceRow, 0), UserListModel::DisplayNameRole).toString().contains(m_filterText, Qt::CaseInsensitive)
|
||||||
@@ -27,4 +27,15 @@ void UserFilterModel::setFilterText(const QString &filterText)
|
|||||||
invalidateFilter();
|
invalidateFilter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool UserFilterModel::allowEmpty() const
|
||||||
|
{
|
||||||
|
return m_allowEmpty;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UserFilterModel::setAllowEmpty(bool allowEmpty)
|
||||||
|
{
|
||||||
|
m_allowEmpty = allowEmpty;
|
||||||
|
Q_EMIT allowEmptyChanged();
|
||||||
|
}
|
||||||
|
|
||||||
#include "moc_userfiltermodel.cpp"
|
#include "moc_userfiltermodel.cpp"
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ class UserFilterModel : public QSortFilterProxyModel
|
|||||||
* The text is either a desired display name or matrix id.
|
* The text is either a desired display name or matrix id.
|
||||||
*/
|
*/
|
||||||
Q_PROPERTY(QString filterText READ filterText WRITE setFilterText NOTIFY filterTextChanged)
|
Q_PROPERTY(QString filterText READ filterText WRITE setFilterText NOTIFY filterTextChanged)
|
||||||
|
Q_PROPERTY(bool allowEmpty READ allowEmpty WRITE setAllowEmpty NOTIFY allowEmptyChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
@@ -36,9 +37,14 @@ public:
|
|||||||
QString filterText() const;
|
QString filterText() const;
|
||||||
void setFilterText(const QString &filterText);
|
void setFilterText(const QString &filterText);
|
||||||
|
|
||||||
|
bool allowEmpty() const;
|
||||||
|
void setAllowEmpty(bool allowEmpty);
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void filterTextChanged();
|
void filterTextChanged();
|
||||||
|
void allowEmptyChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString m_filterText;
|
QString m_filterText;
|
||||||
|
bool m_allowEmpty = false;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
// SPDX-FileCopyrightText: 2023 James Graham <james.h.graham@protonmail.com>
|
// SPDX-FileCopyrightText: 2023 James Graham <james.h.graham@protonmail.com>
|
||||||
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||||
|
|
||||||
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls as QQC2
|
import QtQuick.Controls as QQC2
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
@@ -188,11 +190,17 @@ QQC2.ScrollView {
|
|||||||
|
|
||||||
focusSequence: "Ctrl+Shift+F"
|
focusSequence: "Ctrl+Shift+F"
|
||||||
|
|
||||||
onAccepted: sortedMessageEventModel.filterString = text
|
onAccepted: userFilterModel.filterText = text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
model: root.room.isDirectChat() ? 0 : RoomManager.userListModel
|
model: root.room.isDirectChat() ? 0 : userFilterModel
|
||||||
|
|
||||||
|
UserFilterModel {
|
||||||
|
id: userFilterModel
|
||||||
|
sourceModel: RoomManager.userListModel
|
||||||
|
allowEmpty: true
|
||||||
|
}
|
||||||
|
|
||||||
clip: true
|
clip: true
|
||||||
focus: true
|
focus: true
|
||||||
|
|||||||
Reference in New Issue
Block a user