From 2f721b4889c2379676b7708d45d1a34a39de2ab8 Mon Sep 17 00:00:00 2001 From: jules Date: Mon, 18 Nov 2013 09:59:19 +0000 Subject: [PATCH] Added a method DirectoryContentsList::setFileFilter() --- .../filebrowser/juce_DirectoryContentsList.cpp | 10 ++++++++-- .../filebrowser/juce_DirectoryContentsList.h | 9 +++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp b/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp index a16d57d48b..f3e62c7e44 100644 --- a/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp +++ b/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp @@ -108,6 +108,12 @@ void DirectoryContentsList::refresh() } } +void DirectoryContentsList::setFileFilter (const FileFilter* newFileFilter) +{ + const ScopedLock sl (fileListLock); + fileFilter = newFileFilter; +} + //============================================================================== bool DirectoryContentsList::getFileInfo (const int index, FileInfo& result) const @@ -225,6 +231,8 @@ bool DirectoryContentsList::addFile (const File& file, const bool isDir, Time modTime, Time creationTime, const bool isReadOnly) { + const ScopedLock sl (fileListLock); + if (fileFilter == nullptr || ((! isDir) && fileFilter->isFileSuitable (file)) || (isDir && fileFilter->isDirectorySuitable (file))) @@ -238,8 +246,6 @@ bool DirectoryContentsList::addFile (const File& file, const bool isDir, info->isDirectory = isDir; info->isReadOnly = isReadOnly; - const ScopedLock sl (fileListLock); - for (int i = files.size(); --i >= 0;) if (files.getUnchecked(i)->filename == info->filename) return false; diff --git a/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h b/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h index 80394d5108..b2e6a21d09 100644 --- a/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h +++ b/modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h @@ -108,6 +108,15 @@ public: */ bool ignoresHiddenFiles() const; + /** Replaces the current FileFilter. + This can be nullptr to have no filter. The DirectoryContentList does not take + ownership of this object - it just keeps a pointer to it, so you must manage its + lifetime. + Note that this only replaces the filter, it doesn't refresh the list - you'll + probably want to call refresh() after calling this. + */ + void setFileFilter (const FileFilter* newFileFilter); + //============================================================================== /** Contains cached information about one of the files in a DirectoryContentsList. */