| @@ -24,8 +24,8 @@ | |||
| ============================================================================== | |||
| */ | |||
| DirectoryContentsDisplayComponent::DirectoryContentsDisplayComponent (DirectoryContentsList& listToShow) | |||
| : fileList (listToShow) | |||
| DirectoryContentsDisplayComponent::DirectoryContentsDisplayComponent (DirectoryContentsList& l) | |||
| : directoryContentsList (l) | |||
| { | |||
| } | |||
| @@ -38,15 +38,8 @@ FileBrowserListener::~FileBrowserListener() | |||
| { | |||
| } | |||
| void DirectoryContentsDisplayComponent::addListener (FileBrowserListener* const listener) | |||
| { | |||
| listeners.add (listener); | |||
| } | |||
| void DirectoryContentsDisplayComponent::removeListener (FileBrowserListener* const listener) | |||
| { | |||
| listeners.remove (listener); | |||
| } | |||
| void DirectoryContentsDisplayComponent::addListener (FileBrowserListener* l) { listeners.add (l); } | |||
| void DirectoryContentsDisplayComponent::removeListener (FileBrowserListener* l) { listeners.remove (l); } | |||
| void DirectoryContentsDisplayComponent::sendSelectionChangeMessage() | |||
| { | |||
| @@ -56,7 +49,7 @@ void DirectoryContentsDisplayComponent::sendSelectionChangeMessage() | |||
| void DirectoryContentsDisplayComponent::sendMouseClickMessage (const File& file, const MouseEvent& e) | |||
| { | |||
| if (fileList.getDirectory().exists()) | |||
| if (directoryContentsList.getDirectory().exists()) | |||
| { | |||
| Component::BailOutChecker checker (dynamic_cast<Component*> (this)); | |||
| listeners.callChecked (checker, &FileBrowserListener::fileClicked, file, e); | |||
| @@ -65,7 +58,7 @@ void DirectoryContentsDisplayComponent::sendMouseClickMessage (const File& file, | |||
| void DirectoryContentsDisplayComponent::sendDoubleClickMessage (const File& file) | |||
| { | |||
| if (fileList.getDirectory().exists()) | |||
| if (directoryContentsList.getDirectory().exists()) | |||
| { | |||
| Component::BailOutChecker checker (dynamic_cast<Component*> (this)); | |||
| listeners.callChecked (checker, &FileBrowserListener::fileDoubleClicked, file); | |||
| @@ -43,6 +43,10 @@ public: | |||
| /** Destructor. */ | |||
| virtual ~DirectoryContentsDisplayComponent(); | |||
| //============================================================================== | |||
| /** The list that this component is displaying */ | |||
| DirectoryContentsList& directoryContentsList; | |||
| //============================================================================== | |||
| /** Returns the number of files the user has got selected. | |||
| @see getSelectedFile | |||
| @@ -95,14 +99,13 @@ public: | |||
| /** @internal */ | |||
| void sendSelectionChangeMessage(); | |||
| /** @internal */ | |||
| void sendDoubleClickMessage (const File& file); | |||
| void sendDoubleClickMessage (const File&); | |||
| /** @internal */ | |||
| void sendMouseClickMessage (const File& file, const MouseEvent& e); | |||
| void sendMouseClickMessage (const File&, const MouseEvent&); | |||
| protected: | |||
| //============================================================================== | |||
| DirectoryContentsList& fileList; | |||
| ListenerList <FileBrowserListener> listeners; | |||
| ListenerList<FileBrowserListener> listeners; | |||
| private: | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DirectoryContentsDisplayComponent) | |||
| @@ -29,7 +29,7 @@ Image juce_createIconForFile (const File& file); | |||
| //============================================================================== | |||
| FileListComponent::FileListComponent (DirectoryContentsList& listToShow) | |||
| : ListBox (String(), nullptr), | |||
| : ListBox ({}, nullptr), | |||
| DirectoryContentsDisplayComponent (listToShow) | |||
| { | |||
| setModel (this); | |||
| @@ -94,7 +94,7 @@ class FileListComponent::ItemComponent : public Component, | |||
| { | |||
| public: | |||
| ItemComponent (FileListComponent& fc, TimeSliceThread& t) | |||
| : owner (fc), thread (t), index (0), highlighted (false) | |||
| : owner (fc), thread (t) | |||
| { | |||
| } | |||
| @@ -124,17 +124,15 @@ public: | |||
| owner.sendDoubleClickMessage (file); | |||
| } | |||
| void update (const File& root, | |||
| const DirectoryContentsList::FileInfo* const fileInfo, | |||
| const int index_, | |||
| const bool highlighted_) | |||
| void update (const File& root, const DirectoryContentsList::FileInfo* fileInfo, | |||
| int newIndex, bool nowHighlighted) | |||
| { | |||
| thread.removeTimeSliceClient (this); | |||
| if (highlighted_ != highlighted || index_ != index) | |||
| if (nowHighlighted != highlighted || newIndex != index) | |||
| { | |||
| index = index_; | |||
| highlighted = highlighted_; | |||
| index = newIndex; | |||
| highlighted = nowHighlighted; | |||
| repaint(); | |||
| } | |||
| @@ -188,15 +186,15 @@ private: | |||
| File file; | |||
| String fileSize, modTime; | |||
| Image icon; | |||
| int index; | |||
| bool highlighted, isDirectory; | |||
| int index = 0; | |||
| bool highlighted = false, isDirectory = false; | |||
| void updateIcon (const bool onlyUpdateIfCached) | |||
| { | |||
| if (icon.isNull()) | |||
| { | |||
| const int hashCode = (file.getFullPathName() + "_iconCacheSalt").hashCode(); | |||
| Image im (ImageCache::getFromHashCode (hashCode)); | |||
| auto hashCode = (file.getFullPathName() + "_iconCacheSalt").hashCode(); | |||
| auto im = ImageCache::getFromHashCode (hashCode); | |||
| if (im.isNull() && ! onlyUpdateIfCached) | |||
| { | |||
| @@ -231,7 +229,7 @@ Component* FileListComponent::refreshComponentForRow (int row, bool isSelected, | |||
| { | |||
| jassert (existingComponentToUpdate == nullptr || dynamic_cast<ItemComponent*> (existingComponentToUpdate) != nullptr); | |||
| ItemComponent* comp = static_cast<ItemComponent*> (existingComponentToUpdate); | |||
| auto comp = static_cast<ItemComponent*> (existingComponentToUpdate); | |||
| if (comp == nullptr) | |||
| comp = new ItemComponent (*this, fileList.getTimeSliceThread()); | |||
| @@ -46,8 +46,7 @@ class JUCE_API FileListComponent : public ListBox, | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| /** Creates a listbox to show the contents of a specified directory. | |||
| */ | |||
| /** Creates a listbox to show the contents of a specified directory. */ | |||
| FileListComponent (DirectoryContentsList& listToShow); | |||
| /** Destructor. */ | |||
| @@ -78,11 +77,9 @@ public: | |||
| private: | |||
| //============================================================================== | |||
| File lastDirectory; | |||
| class ItemComponent; | |||
| void changeListenerCallback (ChangeBroadcaster*) override; | |||
| int getNumRows() override; | |||
| void paintListBoxItem (int, Graphics&, int, int, bool) override; | |||
| Component* refreshComponentForRow (int rowNumber, bool isRowSelected, Component*) override; | |||