From 8aa227a7783b990e8dc4a5c9610eee4e8858a275 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 21 May 2019 15:22:36 +0200 Subject: [PATCH] QmlDesigner: Fix stupid bug in resource browser We were keeping skipped files as empty files. Task-number: QDS-227 Change-Id: I5d7fca348e29d1accf3db29661a9d274b5b0f998 Reviewed-by: Tim Jenssen --- .../itemlibrary/customfilesystemmodel.cpp | 16 +++++++++++----- .../itemlibrary/customfilesystemmodel.h | 1 + 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.cpp b/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.cpp index 51dc03d94fe..c09854b29a9 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.cpp @@ -88,7 +88,7 @@ void CustomFileSystemModel::setFilter(QDir::Filters) } -QString filterMetaIcons(const QString &fileName) +bool filterMetaIcons(const QString &fileName) { QFileInfo info(fileName); @@ -101,7 +101,7 @@ QString filterMetaIcons(const QString &fileName) while (!currentDir.isRoot() && i < 3) { if (currentDir.dirName() == "designer") { if (!currentDir.entryList({"*.metainfo"}).isEmpty()) - return {}; + return false; } currentDir.cdUp(); @@ -109,10 +109,10 @@ QString filterMetaIcons(const QString &fileName) } if (info.dir().dirName() == "designer") - return {}; + return false; } - return fileName; + return true; } QModelIndex CustomFileSystemModel::setRootPath(const QString &newPath) @@ -179,6 +179,12 @@ void CustomFileSystemModel::setSearchFilter(const QString &nameFilterList) setRootPath(m_fileSystemModel->rootPath()); } +void CustomFileSystemModel::appendIfNotFiltered(const QString &file) +{ + if (filterMetaIcons(file)) + m_files.append(file); +} + QModelIndex CustomFileSystemModel::updatePath(const QString &newPath) { beginResetModel(); @@ -205,7 +211,7 @@ QModelIndex CustomFileSystemModel::updatePath(const QString &newPath) QDirIterator fileIterator(newPath, nameFilterList, QDir::Files, QDirIterator::Subdirectories); while (fileIterator.hasNext()) - m_files.append(filterMetaIcons(fileIterator.next())); + appendIfNotFiltered(fileIterator.next()); QDirIterator dirIterator(newPath, {}, QDir::Dirs | QDir::NoDotAndDotDot, QDirIterator::Subdirectories); while (dirIterator.hasNext()) diff --git a/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.h b/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.h index 69a0e4b1317..e0d8148ce65 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.h +++ b/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.h @@ -63,6 +63,7 @@ public: private: QModelIndex updatePath(const QString &newPath); QModelIndex fileSystemModelIndex(const QModelIndex &index) const; + void appendIfNotFiltered(const QString &file); QFileSystemModel *m_fileSystemModel; QStringList m_files;