| 2698 | } |
| 2699 | |
| 2700 | bool QFileFilterModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const |
| 2701 | { |
| 2702 | QModelIndex idx = sourceModel()->index(source_row, 0, source_parent); |
| 2703 | |
| 2704 | QFileSystemModel *fs = qobject_cast<QFileSystemModel *>(sourceModel()); |
| 2705 | |
| 2706 | if(!fs) |
| 2707 | { |
| 2708 | qCritical() << "Expected a QFileSystemModel as the source model!"; |
| 2709 | return true; |
| 2710 | } |
| 2711 | |
| 2712 | if(fs->isDir(idx)) |
| 2713 | return true; |
| 2714 | |
| 2715 | QFile::Permissions permissions = |
| 2716 | (QFile::Permissions)sourceModel()->data(idx, QFileSystemModel::FilePermissions).toInt(); |
| 2717 | |
| 2718 | if((m_requireMask & QDir::Readable) && !(permissions & QFile::ReadUser)) |
| 2719 | return false; |
| 2720 | if((m_requireMask & QDir::Writable) && !(permissions & QFile::WriteUser)) |
| 2721 | return false; |
| 2722 | if((m_requireMask & QDir::Executable) && !(permissions & QFile::ExeUser)) |
| 2723 | return false; |
| 2724 | |
| 2725 | if((m_excludeMask & QDir::Readable) && (permissions & QFile::ReadUser)) |
| 2726 | return false; |
| 2727 | if((m_excludeMask & QDir::Writable) && (permissions & QFile::WriteUser)) |
| 2728 | return false; |
| 2729 | if((m_excludeMask & QDir::Executable) && (permissions & QFile::ExeUser)) |
| 2730 | return false; |
| 2731 | |
| 2732 | return true; |
| 2733 | } |
| 2734 | |
| 2735 | QCollatorSortFilterProxyModel::QCollatorSortFilterProxyModel(QObject *parent) |
| 2736 | : QSortFilterProxyModel(parent) |