Sort in ascending order by default when a sortRoleName

Fixes #4
This commit is contained in:
oKcerG 2016-05-03 01:08:39 +02:00
parent 4c3ff41b36
commit 9ad7a0a53c
2 changed files with 27 additions and 6 deletions

View File

@ -1,6 +1,5 @@
#include "qqmlsortfilterproxymodel.h"
#include <QtQml>
#include <QDebug>
QQmlSortFilterProxyModel::QQmlSortFilterProxyModel(QObject *parent) :
QSortFilterProxyModel(parent),
@ -32,7 +31,7 @@ void QQmlSortFilterProxyModel::setFilterRoleName(const QString& filterRoleName)
return;
m_filterRoleName = filterRoleName;
updateRoles();
updateFilterRole();
emit filterRoleNameChanged();
}
@ -124,13 +123,14 @@ void QQmlSortFilterProxyModel::setSortRoleName(const QString& sortRoleName)
return;
m_sortRoleName = sortRoleName;
updateRoles();
updateSortRole();
emit sortRoleNameChanged();
}
void QQmlSortFilterProxyModel::setSortOrder(Qt::SortOrder sortOrder)
{
sort(0, sortOrder);
if (!m_sortRoleName.isEmpty())
sort(0, sortOrder);
}
const QQmlScriptString& QQmlSortFilterProxyModel::sortExpression() const
@ -213,10 +213,29 @@ void QQmlSortFilterProxyModel::invalidateFilter()
QSortFilterProxyModel::invalidateFilter();
}
void QQmlSortFilterProxyModel::updateFilterRole()
{
QList<int> filterRoles = roleNames().keys(m_filterRoleName.toUtf8());
if (!filterRoles.empty())
{
setFilterRole(filterRoles.first());
}
}
void QQmlSortFilterProxyModel::updateSortRole()
{
QList<int> sortRoles = roleNames().keys(m_sortRoleName.toUtf8());
if (!sortRoles.empty())
{
setSortRole(sortRoles.first());
sort(0, sortOrder());
}
}
void QQmlSortFilterProxyModel::updateRoles()
{
setFilterRole(roleNames().key(m_filterRoleName.toUtf8()));
setSortRole(roleNames().key(m_sortRoleName.toUtf8()));
updateFilterRole();
updateSortRole();
}
QVariantMap QQmlSortFilterProxyModel::modelDataMap(const QModelIndex& modelIndex) const

View File

@ -73,6 +73,8 @@ protected:
private slots:
void invalidateFilter();
void updateFilterRole();
void updateSortRole();
void updateRoles();
private: