Export SortFilterModel sort column to QML

Test Plan: Used in model

Reviewers: #plasma, broulik

Reviewed By: #plasma, broulik

Subscribers: broulik, kde-frameworks-devel

Tags: #frameworks

Differential Revision: https://phabricator.kde.org/D21419
This commit is contained in:
David Edmundson 2019-05-27 08:03:28 +01:00
parent e99f653113
commit 39d1db6e49
2 changed files with 22 additions and 2 deletions

View File

@ -179,7 +179,7 @@ void SortFilterModel::setSortRole(const QString &role)
sort(-1, Qt::AscendingOrder); sort(-1, Qt::AscendingOrder);
} else if (sourceModel()) { } else if (sourceModel()) {
QSortFilterProxyModel::setSortRole(roleNameToId(role)); QSortFilterProxyModel::setSortRole(roleNameToId(role));
sort(0, sortOrder()); sort(sortColumn(), sortOrder());
} }
} }
@ -190,7 +190,19 @@ QString SortFilterModel::sortRole() const
void SortFilterModel::setSortOrder(const Qt::SortOrder order) void SortFilterModel::setSortOrder(const Qt::SortOrder order)
{ {
sort(0, order); if (order == sortOrder()) {
return;
}
sort(sortColumn(), order);
}
void SortFilterModel::setSortColumn(int column)
{
if (column == sortColumn()) {
return;
}
sort(column, sortOrder());
emit sortColumnChanged();
} }
QVariantMap SortFilterModel::get(int row) const QVariantMap SortFilterModel::get(int row) const

View File

@ -82,6 +82,11 @@ class SortFilterModel : public QSortFilterProxyModel
*/ */
Q_PROPERTY(Qt::SortOrder sortOrder READ sortOrder WRITE setSortOrder) Q_PROPERTY(Qt::SortOrder sortOrder READ sortOrder WRITE setSortOrder)
/**
* Specify which column shoud be used for sorting
*/
Q_PROPERTY(int sortColumn READ sortColumn WRITE setSortColumn NOTIFY sortColumnChanged)
/** /**
* How many items are in this model * How many items are in this model
*/ */
@ -112,6 +117,8 @@ public:
void setSortOrder(const Qt::SortOrder order); void setSortOrder(const Qt::SortOrder order);
void setSortColumn(int column);
int count() const int count() const
{ {
return QSortFilterProxyModel::rowCount(); return QSortFilterProxyModel::rowCount();
@ -132,6 +139,7 @@ public:
Q_SIGNALS: Q_SIGNALS:
void countChanged(); void countChanged();
void sortColumnChanged();
void sourceModelChanged(QObject *); void sourceModelChanged(QObject *);
void filterRegExpChanged(const QString &); void filterRegExpChanged(const QString &);
Q_REVISION(1) void filterStringChanged(const QString &); Q_REVISION(1) void filterStringChanged(const QString &);