┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kfileitemmodelrolesupdater.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2012-01-15 10:39:11 +0100
committerPeter Penz <[email protected]>2012-01-15 10:41:44 +0100
commit8306a0fa6cf004c552ab2540c8915ecb0124fdcf (patch)
treecf6cdf3f00f6f27f152afa38c2d7aacf56aec5a3 /src/kitemviews/kfileitemmodelrolesupdater.cpp
parentf38a70f5d06fdb6e9cb821e89b211edaf13390f1 (diff)
Don't show a expanding-toggle in the Folders Panel if there are no subdirectories
BUG: 290745 FIXED-IN: 4.8.0
Diffstat (limited to 'src/kitemviews/kfileitemmodelrolesupdater.cpp')
-rw-r--r--src/kitemviews/kfileitemmodelrolesupdater.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp
index 098c844ab..a974094d5 100644
--- a/src/kitemviews/kfileitemmodelrolesupdater.cpp
+++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp
@@ -33,7 +33,7 @@
#include <QElapsedTimer>
#include <QTimer>
-// Required includes for subDirectoriesCount():
+// Required includes for subItemsCount():
#ifdef Q_WS_WIN
#include <QDir>
#else
@@ -770,7 +770,7 @@ QHash<QByteArray, QVariant> KFileItemModelRolesUpdater::rolesData(const KFileIte
if ((getSizeRole || getIsExpandableRole) && item.isDir() && item.isLocalFile()) {
const QString path = item.localPath();
- const int count = subDirectoriesCount(path);
+ const int count = subItemsCount(path);
if (count >= 0) {
if (getSizeRole) {
data.insert("size", KIO::filesize_t(count));
@@ -826,16 +826,22 @@ KFileItemList KFileItemModelRolesUpdater::sortedItems(const QSet<KFileItem>& ite
return itemList;
}
-int KFileItemModelRolesUpdater::subDirectoriesCount(const QString& path) const
+int KFileItemModelRolesUpdater::subItemsCount(const QString& path) const
{
const bool countHiddenFiles = m_model->showHiddenFiles();
+ const bool showFoldersOnly = m_model->showFoldersOnly();
#ifdef Q_WS_WIN
QDir dir(path);
- QDir::Filters filters = QDir::AllEntries | QDir::NoDotAndDotDot | QDir::System;
+ QDir::Filters filters = QDir::NoDotAndDotDot | QDir::System;
if (countHiddenFiles) {
filters |= QDir::Hidden;
}
+ if (showFoldersOnly) {
+ filters |= QDir::Dirs;
+ } else {
+ filters |= QDir::AllEntries;
+ }
return dir.entryList(filters).count();
#else
// Taken from kdelibs/kio/kio/kdirmodel.cpp
@@ -857,7 +863,10 @@ int KFileItemModelRolesUpdater::subDirectoriesCount(const QString& path) const
continue;
}
}
- ++count;
+
+ if (!showFoldersOnly || dirEntry->d_type == DT_DIR) {
+ ++count;
+ }
}
::closedir(dir);
}