Fix sorting in file browser
This commit is contained in:
parent
f6f1217f10
commit
8d6d60d939
|
@ -8,6 +8,7 @@ FileFilterProxyModel::FileFilterProxyModel(QObject *parent) :
|
|||
QSortFilterProxyModel(parent),
|
||||
m_filterEnabled(true)
|
||||
{
|
||||
setDynamicSortFilter(false);
|
||||
}
|
||||
|
||||
bool FileFilterProxyModel::isFilterEnabled() const
|
||||
|
@ -41,13 +42,19 @@ bool FileFilterProxyModel::isFileAccepted(const QString &path) const
|
|||
|
||||
bool FileFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
|
||||
{
|
||||
if(!m_filterEnabled)
|
||||
if(!m_filterEnabled) {
|
||||
return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent);
|
||||
QModelIndex index0 = sourceModel()->index(sourceRow, 0, sourceParent);
|
||||
}
|
||||
const QModelIndex index0 = sourceModel()->index(sourceRow, 0, sourceParent);
|
||||
QFileSystemModel *fileModel = qobject_cast<QFileSystemModel *>(sourceModel());
|
||||
return fileModel
|
||||
? (!m_extensionsToBeFiltered.contains(fileModel->fileInfo(index0).suffix()))
|
||||
: QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent);
|
||||
}
|
||||
|
||||
void FileFilterProxyModel::sort(int column, Qt::SortOrder order)
|
||||
{
|
||||
sourceModel()->sort(column, order);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -9,6 +9,8 @@ namespace QtGui {
|
|||
class FileFilterProxyModel : public QSortFilterProxyModel
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(bool filterEnabled READ isFilterEnabled WRITE setFilterEnabled)
|
||||
Q_PROPERTY(QStringList extensionsToBeFiltered READ extensionsToBeFiltered WRITE setExtensionsToBeFiltered)
|
||||
|
||||
public:
|
||||
FileFilterProxyModel(QObject *parent = nullptr);
|
||||
|
@ -20,7 +22,8 @@ public:
|
|||
bool isFileAccepted(const QString &path) const;
|
||||
|
||||
protected:
|
||||
virtual bool filterAcceptsRow(int source_row, const QModelIndex& sourceParent) const;
|
||||
virtual bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
|
||||
void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
|
||||
|
||||
private:
|
||||
bool m_filterEnabled;
|
||||
|
|
Loading…
Reference in New Issue