2015-09-06 20:20:00 +02:00
|
|
|
#include "./filefilterproxymodel.h"
|
2015-04-22 19:33:53 +02:00
|
|
|
|
|
|
|
#include <QFileSystemModel>
|
|
|
|
|
|
|
|
namespace QtGui {
|
|
|
|
|
2018-03-07 01:18:01 +01:00
|
|
|
FileFilterProxyModel::FileFilterProxyModel(QObject *parent)
|
|
|
|
: QSortFilterProxyModel(parent)
|
|
|
|
, m_filterEnabled(true)
|
2015-04-22 19:33:53 +02:00
|
|
|
{
|
2016-10-09 17:11:18 +02:00
|
|
|
setDynamicSortFilter(false);
|
2015-04-22 19:33:53 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
bool FileFilterProxyModel::isFilterEnabled() const
|
|
|
|
{
|
|
|
|
return m_filterEnabled;
|
|
|
|
}
|
|
|
|
|
|
|
|
void FileFilterProxyModel::setFilterEnabled(bool value)
|
|
|
|
{
|
2018-03-07 01:18:01 +01:00
|
|
|
if (m_filterEnabled != value) {
|
2015-04-22 19:33:53 +02:00
|
|
|
beginResetModel();
|
|
|
|
m_filterEnabled = value;
|
|
|
|
endResetModel();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const QStringList &FileFilterProxyModel::extensionsToBeFiltered() const
|
|
|
|
{
|
|
|
|
return m_extensionsToBeFiltered;
|
|
|
|
}
|
|
|
|
|
|
|
|
void FileFilterProxyModel::setExtensionsToBeFiltered(const QStringList &extensions)
|
|
|
|
{
|
|
|
|
m_extensionsToBeFiltered = extensions;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool FileFilterProxyModel::isFileAccepted(const QString &path) const
|
|
|
|
{
|
|
|
|
return !m_extensionsToBeFiltered.contains(QFileInfo(path).suffix());
|
|
|
|
}
|
|
|
|
|
|
|
|
bool FileFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
|
|
|
|
{
|
2018-03-07 01:18:01 +01:00
|
|
|
if (!m_filterEnabled) {
|
2015-04-22 19:33:53 +02:00
|
|
|
return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent);
|
2016-10-09 17:11:18 +02:00
|
|
|
}
|
|
|
|
const QModelIndex index0 = sourceModel()->index(sourceRow, 0, sourceParent);
|
2015-04-22 19:33:53 +02:00
|
|
|
QFileSystemModel *fileModel = qobject_cast<QFileSystemModel *>(sourceModel());
|
2018-03-07 01:18:01 +01:00
|
|
|
return fileModel ? (!m_extensionsToBeFiltered.contains(fileModel->fileInfo(index0).suffix()))
|
|
|
|
: QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent);
|
2015-04-22 19:33:53 +02:00
|
|
|
}
|
|
|
|
|
2016-10-09 17:11:18 +02:00
|
|
|
void FileFilterProxyModel::sort(int column, Qt::SortOrder order)
|
|
|
|
{
|
|
|
|
sourceModel()->sort(column, order);
|
|
|
|
}
|
|
|
|
|
2018-03-07 01:18:01 +01:00
|
|
|
} // namespace QtGui
|