From df6a28653e1439885a719081f086070111484c3b Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Sun, 15 Jan 2012 10:39:11 +0100 Subject: Don't show a expanding-toggle in the Folders Panel if there are no subdirectories BUG: 290745 FIXED-IN: 4.8.0 --- src/kitemviews/kfileitemmodelrolesupdater.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'src/kitemviews/kfileitemmodelrolesupdater.cpp') 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 #include -// Required includes for subDirectoriesCount(): +// Required includes for subItemsCount(): #ifdef Q_WS_WIN #include #else @@ -770,7 +770,7 @@ QHash 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& 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); } -- cgit v1.3.1