diff options
| author | Peter Penz <[email protected]> | 2012-01-15 10:39:11 +0100 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2012-01-15 10:41:44 +0100 |
| commit | 8306a0fa6cf004c552ab2540c8915ecb0124fdcf (patch) | |
| tree | cf6cdf3f00f6f27f152afa38c2d7aacf56aec5a3 /src/kitemviews/kfileitemmodelrolesupdater.cpp | |
| parent | f38a70f5d06fdb6e9cb821e89b211edaf13390f1 (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.cpp | 19 |
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); } |
