aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports
diff options
context:
space:
mode:
authorAlberto Mardegan <info@mardy.it>2012-12-26 13:59:52 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-06-25 20:53:52 +0200
commit6ad5400c54302ee5e099e478e91de53386b62902 (patch)
treeb93b4141d6d1f527c6cbab0fd3bdcec4af2c1c5c /src/imports
parent0f97dd8b3d86d60897fed0e87d95de2e3ed59206 (diff)
Add "showFiles" property to FolderListModel
This property, if set to "false", causes the FolderListModel not to show regular files. This can be useful when someone wants to list only the directories; for instance, one can have a ListView showing only the directories (with "showDirs: true" and "showFiles: false") and another for showing the directory contents ("showFiles: true" and "showDirs: false"). Since by default this property is "true", the behavior of applications who don't use this property is unchanged. Change-Id: I6eaa9c4a6a582ea81fa07bad129a4c9b15fdcaea Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Diffstat (limited to 'src/imports')
-rw-r--r--src/imports/folderlistmodel/fileinfothread.cpp13
-rw-r--r--src/imports/folderlistmodel/fileinfothread_p.h2
-rw-r--r--src/imports/folderlistmodel/qquickfolderlistmodel.cpp28
-rw-r--r--src/imports/folderlistmodel/qquickfolderlistmodel.h3
4 files changed, 44 insertions, 2 deletions
diff --git a/src/imports/folderlistmodel/fileinfothread.cpp b/src/imports/folderlistmodel/fileinfothread.cpp
index ad09f54381..4aa43b2d3f 100644
--- a/src/imports/folderlistmodel/fileinfothread.cpp
+++ b/src/imports/folderlistmodel/fileinfothread.cpp
@@ -55,6 +55,7 @@ FileInfoThread::FileInfoThread(QObject *parent)
needUpdate(true),
folderUpdate(false),
sortUpdate(false),
+ showFiles(true),
showDirs(true),
showDirsFirst(false),
showDotAndDotDot(false),
@@ -142,6 +143,14 @@ void FileInfoThread::setNameFilters(const QStringList & filters)
condition.wakeAll();
}
+void FileInfoThread::setShowFiles(bool show)
+{
+ QMutexLocker locker(&mutex);
+ showFiles = show;
+ folderUpdate = true;
+ condition.wakeAll();
+}
+
void FileInfoThread::setShowDirs(bool showFolders)
{
QMutexLocker locker(&mutex);
@@ -213,7 +222,9 @@ void FileInfoThread::run()
void FileInfoThread::getFileInfos(const QString &path)
{
QDir::Filters filter;
- filter = QDir::Files | QDir::CaseSensitive;
+ filter = QDir::CaseSensitive;
+ if (showFiles)
+ filter = filter | QDir::Files;
if (showDirs)
filter = filter | QDir::AllDirs | QDir::Drives;
if (!showDotAndDotDot)
diff --git a/src/imports/folderlistmodel/fileinfothread_p.h b/src/imports/folderlistmodel/fileinfothread_p.h
index cf6572a279..d50361de3a 100644
--- a/src/imports/folderlistmodel/fileinfothread_p.h
+++ b/src/imports/folderlistmodel/fileinfothread_p.h
@@ -70,6 +70,7 @@ public:
void setRootPath(const QString &path);
void setSortFlags(QDir::SortFlags flags);
void setNameFilters(const QStringList & nameFilters);
+ void setShowFiles(bool show);
void setShowDirs(bool showFolders);
void setShowDirsFirst(bool show);
void setShowDotAndDotDot(bool on);
@@ -102,6 +103,7 @@ private:
bool needUpdate;
bool folderUpdate;
bool sortUpdate;
+ bool showFiles;
bool showDirs;
bool showDirsFirst;
bool showDotAndDotDot;
diff --git a/src/imports/folderlistmodel/qquickfolderlistmodel.cpp b/src/imports/folderlistmodel/qquickfolderlistmodel.cpp
index 85b59e9c73..4dbbcf359d 100644
--- a/src/imports/folderlistmodel/qquickfolderlistmodel.cpp
+++ b/src/imports/folderlistmodel/qquickfolderlistmodel.cpp
@@ -55,7 +55,8 @@ class QQuickFolderListModelPrivate
public:
QQuickFolderListModelPrivate(QQuickFolderListModel *q)
: q_ptr(q),
- sortField(QQuickFolderListModel::Name), sortReversed(false), showDirs(true), showDirsFirst(false), showDotAndDotDot(false), showOnlyReadable(false)
+ sortField(QQuickFolderListModel::Name), sortReversed(false), showFiles(true),
+ showDirs(true), showDirsFirst(false), showDotAndDotDot(false), showOnlyReadable(false)
{
nameFilters << QLatin1String("*");
}
@@ -70,6 +71,7 @@ public:
QQuickFolderListModel::SortField sortField;
QStringList nameFilters;
bool sortReversed;
+ bool showFiles;
bool showDirs;
bool showDirsFirst;
bool showDotAndDotDot;
@@ -619,6 +621,30 @@ bool QQuickFolderListModel::isFolder(int index) const
}
/*!
+ \qmlproperty bool FolderListModel::showFiles
+
+ If true, files are included in the model; otherwise only directories
+ are included.
+
+ By default, this property is true.
+
+ \sa showDirs
+*/
+bool QQuickFolderListModel::showFiles() const
+{
+ Q_D(const QQuickFolderListModel);
+ return d->showFiles;
+}
+
+void QQuickFolderListModel::setShowFiles(bool on)
+{
+ Q_D(QQuickFolderListModel);
+
+ d->fileInfoThread.setShowFiles(on);
+ d->showFiles = on;
+}
+
+/*!
\qmlproperty bool FolderListModel::showDirs
If true, directories are included in the model; otherwise only files
diff --git a/src/imports/folderlistmodel/qquickfolderlistmodel.h b/src/imports/folderlistmodel/qquickfolderlistmodel.h
index 03cb24d368..43af77adf5 100644
--- a/src/imports/folderlistmodel/qquickfolderlistmodel.h
+++ b/src/imports/folderlistmodel/qquickfolderlistmodel.h
@@ -69,6 +69,7 @@ class QQuickFolderListModel : public QAbstractListModel, public QQmlParserStatus
Q_PROPERTY(QStringList nameFilters READ nameFilters WRITE setNameFilters)
Q_PROPERTY(SortField sortField READ sortField WRITE setSortField)
Q_PROPERTY(bool sortReversed READ sortReversed WRITE setSortReversed)
+ Q_PROPERTY(bool showFiles READ showFiles WRITE setShowFiles)
Q_PROPERTY(bool showDirs READ showDirs WRITE setShowDirs)
Q_PROPERTY(bool showDirsFirst READ showDirsFirst WRITE setShowDirsFirst)
Q_PROPERTY(bool showDotAndDotDot READ showDotAndDotDot WRITE setShowDotAndDotDot)
@@ -121,6 +122,8 @@ public:
bool sortReversed() const;
void setSortReversed(bool rev);
+ bool showFiles() const;
+ void setShowFiles(bool showFiles);
bool showDirs() const;
void setShowDirs(bool showDirs);
bool showDirsFirst() const;