Skip to content

Commit

Permalink
[nemo-qml-plugin-filemanager] Add option to show hidden files. Contri…
Browse files Browse the repository at this point in the history
…butes to MER#1658
  • Loading branch information
matthewvogt committed Sep 22, 2016
1 parent 8b9b010 commit 66cd3cb
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 9 deletions.
17 changes: 17 additions & 0 deletions src/plugin/filemodel.cpp
Expand Up @@ -93,6 +93,7 @@ FileModel::FileModel(QObject *parent) :
m_caseSensitivity(Qt::CaseSensitive),
m_includeDirectories(true),
m_includeParentDirectory(false),
m_includeHiddenFiles(false),
m_active(false),
m_dirty(false),
m_populated(false),
Expand Down Expand Up @@ -250,6 +251,15 @@ void FileModel::setIncludeParentDirectory(bool include)
scheduleUpdate(IncludeParentDirectoryChanged | ContentChanged);
}

void FileModel::setIncludeHiddenFiles(bool include)
{
if (m_includeHiddenFiles == include)
return;

m_includeHiddenFiles = include;
scheduleUpdate(IncludeHiddenFilesChanged | ContentChanged);
}

void FileModel::setDirectorySort(DirectorySort sort)
{
if (m_directorySort == sort)
Expand Down Expand Up @@ -516,6 +526,10 @@ QDir FileModel::directory() const
}
}

if (m_includeHiddenFiles) {
filters |= QDir::Hidden;
}

QDir::SortFlags sortFlags(QDir::LocaleAware);

if (m_sortBy == SortByName) {
Expand Down Expand Up @@ -589,6 +603,9 @@ void FileModel::update()
if (m_changedFlags & IncludeParentDirectoryChanged) {
emit includeParentDirectoryChanged();
}
if (m_changedFlags & IncludeHiddenFilesChanged) {
emit includeHiddenFilesChanged();
}
if (m_changedFlags & DirectorySortChanged) {
emit directorySortChanged();
}
Expand Down
21 changes: 14 additions & 7 deletions src/plugin/filemodel.h
Expand Up @@ -63,6 +63,7 @@ class FileModel : public QAbstractListModel
Q_PROPERTY(Qt::CaseSensitivity caseSensitivity READ caseSensitivity WRITE setCaseSensitivity NOTIFY caseSensitivityChanged)
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)
Q_PROPERTY(DirectorySort directorySort READ directorySort WRITE setDirectorySort NOTIFY directorySortChanged)
Q_PROPERTY(QStringList nameFilters READ nameFilters WRITE setNameFilters NOTIFY nameFiltersChanged)
Q_PROPERTY(bool populated READ populated NOTIFY populatedChanged)
Expand Down Expand Up @@ -123,6 +124,9 @@ class FileModel : public QAbstractListModel
bool includeParentDirectory() const { return m_includeParentDirectory; }
void setIncludeParentDirectory(bool include);

bool includeHiddenFiles() const { return m_includeHiddenFiles; }
void setIncludeHiddenFiles(bool include);

DirectorySort directorySort() const { return m_directorySort; }
void setDirectorySort(DirectorySort sort);

Expand Down Expand Up @@ -165,6 +169,7 @@ public slots:
void caseSensitivityChanged();
void includeDirectoriesChanged();
void includeParentDirectoryChanged();
void includeHiddenFilesChanged();
void directorySortChanged();
void nameFiltersChanged();
void populatedChanged();
Expand All @@ -184,13 +189,14 @@ private slots:
CaseSensitivityChanged = (1 << 3),
IncludeDirectoriesChanged = (1 << 4),
IncludeParentDirectoryChanged = (1 << 5),
DirectorySortChanged = (1 << 6),
NameFiltersChanged = (1 << 7),
PopulatedChanged = (1 << 8),
CountChanged = (1 << 9),
ActiveChanged = (1 << 10),
SelectedCountChanged = (1 << 11),
ContentChanged = (1 << 12),
IncludeHiddenFilesChanged = (1 << 6),
DirectorySortChanged = (1 << 7),
NameFiltersChanged = (1 << 8),
PopulatedChanged = (1 << 9),
CountChanged = (1 << 10),
ActiveChanged = (1 << 11),
SelectedCountChanged = (1 << 12),
ContentChanged = (1 << 13),
};
Q_DECLARE_FLAGS(ChangedFlags, Changed);

Expand All @@ -216,6 +222,7 @@ private slots:
Qt::CaseSensitivity m_caseSensitivity;
bool m_includeDirectories;
bool m_includeParentDirectory;
bool m_includeHiddenFiles;
bool m_active;
bool m_dirty;
bool m_populated;
Expand Down
3 changes: 3 additions & 0 deletions tests/auto/folder/.hidden.xml
@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<xml>
</xml>
13 changes: 11 additions & 2 deletions tests/auto/tst_filemodel.qml
Expand Up @@ -68,7 +68,8 @@ Item {
{fileName: "a", mimeType: "application/x-zerosize", size: 0, isDir: false},
{fileName: "b", mimeType: "text/plain", size: 2, isDir: false},
{fileName: "c", mimeType: "text/plain", size: 4, isDir: false},
{fileName: "subfolder", mimeType: "inode/directory", size: 4096, isDir: true}
{fileName: "subfolder", mimeType: "inode/directory", size: 4096, isDir: true},
{fileName: ".hidden.xml", mimeType: "application/xml", size: 52, isDir: false}
]

function test_listing() {
Expand All @@ -77,7 +78,7 @@ Item {
compare(fileModel.count, indices.length, name)

for (var i = 0; i < indices.length; i++) {
var message = name + ': failed at index:' + i + '(result[' + indices[i] + '])'
var message = name + ': failed at index:' + i + ' (result[' + indices[i] + '])'
var actual = repeater.itemAt(i)
var expected = results[indices[i]]
compare(actual.fileName, expected.fileName, message)
Expand All @@ -94,6 +95,14 @@ Item {
fileModel.sortOrder = Qt.DescendingOrder
check([0, 1, 2], 'Reverse by size')

fileModel.includeHiddenFiles = true
fileModel.sortBy = FileModel.SortByName
check([2, 1, 0, 4], 'Reverse by name with hidden')

fileModel.sortBy = FileModel.SortBySize
check([0, 1, 2, 4], 'Reverse by size with hidden')

fileModel.includeHiddenFiles = false
fileModel.directorySort = FileModel.SortDirectoriesBeforeFiles
fileModel.includeDirectories = true
check([3, 0, 1, 2], 'Reverse by size after directories')
Expand Down

0 comments on commit 66cd3cb

Please sign in to comment.