/* ============================================================================== This file is part of the JUCE library - "Jules' Utility Class Extensions" Copyright 2004-11 by Raw Material Software Ltd. ------------------------------------------------------------------------------ JUCE can be redistributed and/or modified under the terms of the GNU General Public License (Version 2), as published by the Free Software Foundation. A copy of the license is included in the JUCE distribution, or can be found online at www.gnu.org/licenses. JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.rawmaterialsoftware.com/juce for more information. ============================================================================== */ #ifndef __JUCER_JUCEUPDATER_JUCEHEADER__ #define __JUCER_JUCEUPDATER_JUCEHEADER__ #include "../Project/jucer_Module.h" //============================================================================== class JuceUpdater : public Component, private ButtonListener, private FilenameComponentListener, private ListBoxModel, private ValueTree::Listener { public: JuceUpdater (ModuleList& moduleList, const String& message); ~JuceUpdater(); static void show (ModuleList& moduleList, Component* mainWindow, const String& message); //============================================================================== void resized(); void paint (Graphics& g); void buttonClicked (Button*); void filenameComponentChanged (FilenameComponent* fileComponentThatHasChanged); int getNumRows(); void paintListBoxItem (int rowNumber, Graphics& g, int width, int height, bool rowIsSelected); Component* refreshComponentForRow (int rowNumber, bool isRowSelected, Component* existingComponentToUpdate); void backgroundUpdateComplete (const ModuleList& newList); private: ModuleList& moduleList; ModuleList latestList; Label messageLabel, label, currentVersionLabel; FilenameComponent filenameComp; TextButton checkNowButton; ListBox availableVersionsList; ValueTree versionsToDownload; TextButton installButton; ToggleButton selectAllButton; ScopedPointer websiteContacterThread; void checkNow(); void install(); void updateInstallButtonStatus(); void refresh(); void selectAll(); int getNumCheckedModules() const; bool isLatestVersion (const String& moduleID) const; void valueTreePropertyChanged (ValueTree&, const Identifier&); void valueTreeChildAdded (ValueTree&, ValueTree&); void valueTreeChildRemoved (ValueTree&, ValueTree&); void valueTreeChildOrderChanged (ValueTree&); void valueTreeParentChanged (ValueTree&); JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (JuceUpdater); }; #endif // __JUCER_JUCEUPDATER_JUCEHEADER__