Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge branch 'omp-jb51673' into 'master'
[filemanager] Add includeFiles filter to FileModel. Contributes to JB#51673

See merge request mer-core/nemo-qml-plugin-filemanager!37
  • Loading branch information
rainemak committed Jan 13, 2021
2 parents 54b962c + 853f919 commit 9f3bb82
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 12 deletions.
19 changes: 18 additions & 1 deletion src/plugin/filemodel.cpp
Expand Up @@ -94,6 +94,7 @@ FileModel::FileModel(QObject *parent) :
m_directorySort(SortDirectoriesWithFiles),
m_sortOrder(Qt::AscendingOrder),
m_caseSensitivity(Qt::CaseSensitive),
m_includeFiles(true),
m_includeDirectories(true),
m_includeParentDirectory(false),
m_includeHiddenFiles(false),
Expand Down Expand Up @@ -250,6 +251,15 @@ void FileModel::setCaseSensitivity(Qt::CaseSensitivity sensitivity)
scheduleUpdate(CaseSensitivityChanged | ContentChanged);
}

void FileModel::setIncludeFiles(bool include)
{
if (m_includeFiles == include)
return;

m_includeFiles = include;
scheduleUpdate(IncludeFilesChanged | ContentChanged);
}

void FileModel::setIncludeDirectories(bool include)
{
if (m_includeDirectories == include)
Expand Down Expand Up @@ -549,7 +559,11 @@ QDir FileModel::directory() const
{
QDir dir(m_path);
if (dir.exists()) {
QDir::Filters filters(QDir::Files | QDir::NoDot | QDir::System);
QDir::Filters filters(QDir::NoDot | QDir::System);

if (m_includeFiles) {
filters |= QDir::Files;
}

if (m_includeDirectories) {
filters |= QDir::AllDirs;
Expand Down Expand Up @@ -632,6 +646,9 @@ void FileModel::update()
if (m_changedFlags & CaseSensitivityChanged) {
emit caseSensitivityChanged();
}
if (m_changedFlags & IncludeFilesChanged) {
emit includeFilesChanged();
}
if (m_changedFlags & IncludeDirectoriesChanged) {
emit includeDirectoriesChanged();
}
Expand Down
29 changes: 18 additions & 11 deletions src/plugin/filemodel.h
Expand Up @@ -63,6 +63,7 @@ class FileModel : public QAbstractListModel
Q_PROPERTY(Sort sortBy READ sortBy WRITE setSortBy NOTIFY sortByChanged)
Q_PROPERTY(Qt::SortOrder sortOrder READ sortOrder WRITE setSortOrder NOTIFY sortOrderChanged)
Q_PROPERTY(Qt::CaseSensitivity caseSensitivity READ caseSensitivity WRITE setCaseSensitivity NOTIFY caseSensitivityChanged)
Q_PROPERTY(bool includeFiles READ includeFiles WRITE setIncludeFiles NOTIFY includeFilesChanged)
Q_PROPERTY(bool includeDirectories READ includeDirectories WRITE setIncludeDirectories NOTIFY includeDirectoriesChanged)
Q_PROPERTY(bool includeParentDirectory READ includeParentDirectory WRITE setIncludeParentDirectory NOTIFY includeParentDirectoryChanged)
Q_PROPERTY(bool includeHiddenFiles READ includeHiddenFiles WRITE setIncludeHiddenFiles NOTIFY includeHiddenFilesChanged)
Expand Down Expand Up @@ -122,6 +123,9 @@ class FileModel : public QAbstractListModel
Qt::CaseSensitivity caseSensitivity() const { return m_caseSensitivity; }
void setCaseSensitivity(Qt::CaseSensitivity sensitivity);

bool includeFiles() const { return m_includeFiles; }
void setIncludeFiles(bool include);

bool includeDirectories() const { return m_includeDirectories; }
void setIncludeDirectories(bool include);

Expand Down Expand Up @@ -174,6 +178,7 @@ public slots:
void sortByChanged();
void sortOrderChanged();
void caseSensitivityChanged();
void includeFilesChanged();
void includeDirectoriesChanged();
void includeParentDirectoryChanged();
void includeHiddenFilesChanged();
Expand All @@ -195,17 +200,18 @@ private slots:
SortByChanged = (1 << 1),
SortOrderChanged = (1 << 2),
CaseSensitivityChanged = (1 << 3),
IncludeDirectoriesChanged = (1 << 4),
IncludeParentDirectoryChanged = (1 << 5),
IncludeHiddenFilesChanged = (1 << 6),
IncludeSystemFilesChanged = (1 << 7),
DirectorySortChanged = (1 << 8),
NameFiltersChanged = (1 << 9),
PopulatedChanged = (1 << 10),
CountChanged = (1 << 11),
ActiveChanged = (1 << 12),
SelectedCountChanged = (1 << 13),
ContentChanged = (1 << 14),
IncludeFilesChanged = (1 << 4),
IncludeDirectoriesChanged = (1 << 5),
IncludeParentDirectoryChanged = (1 << 6),
IncludeHiddenFilesChanged = (1 << 7),
IncludeSystemFilesChanged = (1 << 8),
DirectorySortChanged = (1 << 9),
NameFiltersChanged = (1 << 10),
PopulatedChanged = (1 << 11),
CountChanged = (1 << 12),
ActiveChanged = (1 << 13),
SelectedCountChanged = (1 << 14),
ContentChanged = (1 << 15),
};
Q_DECLARE_FLAGS(ChangedFlags, Changed)

Expand All @@ -230,6 +236,7 @@ private slots:
DirectorySort m_directorySort;
Qt::SortOrder m_sortOrder;
Qt::CaseSensitivity m_caseSensitivity;
bool m_includeFiles;
bool m_includeDirectories;
bool m_includeParentDirectory;
bool m_includeHiddenFiles;
Expand Down
1 change: 1 addition & 0 deletions src/plugin/plugins.qmltypes
Expand Up @@ -240,6 +240,7 @@ Module {
Property { name: "sortBy"; type: "Sort" }
Property { name: "sortOrder"; type: "Qt::SortOrder" }
Property { name: "caseSensitivity"; type: "Qt::CaseSensitivity" }
Property { name: "includeFiles"; type: "bool" }
Property { name: "includeDirectories"; type: "bool" }
Property { name: "includeParentDirectory"; type: "bool" }
Property { name: "includeHiddenFiles"; type: "bool" }
Expand Down
10 changes: 10 additions & 0 deletions tests/auto/tst_filemodel.qml
Expand Up @@ -76,6 +76,16 @@ Item {
{fileName: ".hidden", baseName: ".hidden", extension: "", mimeType: "text/plain", size: 6, isDir: false}
]

function test_includeFiles() {
fileModel.includeFiles = false
wait(0)
compare(fileModel.count, 1)

fileModel.includeFiles = true
wait(0)
compare(fileModel.count, 4)
}

function test_listing() {
var check = function(indices, name) {
wait(0)
Expand Down

0 comments on commit 9f3bb82

Please sign in to comment.