Vital
Loading...
Searching...
No Matches
DownloadSection Class Reference

An overlay component handling the download and installation of factory content and packs. More...

#include <download_section.h>

Inheritance diagram for DownloadSection:
Overlay SynthSection SynthButton::ButtonListener

Classes

struct  DownloadPack
 Represents a downloadable pack with name, author, ID, URL, and local destination file. More...
 
class  DownloadThread
 A background thread to handle downloading content without blocking the GUI. More...
 
class  InstallThread
 A background thread for installing downloaded packs. More...
 
class  Listener
 Interface for objects that need to respond to data directory changes or no-download scenarios. More...
 

Public Member Functions

 DownloadSection (String name, Authentication *auth)
 
virtual ~DownloadSection ()
 Destructor.
 
void resized () override
 Lays out the UI components within the overlay.
 
void setVisible (bool should_be_visible) override
 
void timerCallback () override
 Timer callback used for hiding the UI after a delay.
 
void mouseUp (const MouseEvent &e) override
 
void buttonClicked (Button *clicked_button) override
 
void renderOpenGlComponents (OpenGlWrapper &open_gl, bool animate) override
 
void finished (URL::DownloadTask *task, bool success) override
 
void progress (URL::DownloadTask *task, int64 bytesDownloaded, int64 totalLength) override
 
Rectangle< int > getDownloadRect ()
 
void triggerDownload ()
 Triggers the process of checking available packs and downloading necessary content.
 
void triggerInstall ()
 Starts the installation process after all downloads are completed.
 
void startDownload (Thread *thread, URL &url, const File &dest)
 
void startInstall (Thread *thread)
 
void cancelDownload ()
 Cancels all ongoing downloads.
 
void chooseInstallFolder ()
 Allows the user to choose a folder for installation.
 
void addListener (Listener *listener)
 
- Public Member Functions inherited from Overlay
 Overlay (String name)
 Constructs an Overlay with a given name.
 
virtual ~Overlay ()
 Destructor.
 
void setVisible (bool should_be_visible) override
 Sets the visibility of the overlay and notifies listeners.
 
virtual void paintBackground (Graphics &g) override
 Paints the background using OpenGL-rendered children.
 
void addOverlayListener (Listener *listener)
 Adds a listener to be notified of overlay visibility changes.
 
void removeOverlayListener (Listener *listener)
 Removes a previously added overlay listener.
 
void setSizeRatio (float ratio) override
 Sets the size ratio for the overlay, used in some layouts.
 
- Public Member Functions inherited from SynthSection
 SynthSection (const String &name)
 Constructs a SynthSection with a given name.
 
virtual ~SynthSection ()=default
 
void setParent (const SynthSection *parent)
 Sets the parent SynthSection.
 
float findValue (Skin::ValueId value_id) const
 Finds a value in the skin overrides or from the parent if not found locally.
 
virtual void reset ()
 Resets the section and all sub-sections.
 
virtual void paint (Graphics &g) override
 Called when the component should paint itself.
 
virtual void paintSidewaysHeadingText (Graphics &g)
 Paints the section name heading text vertically if sideways_heading_ is true.
 
virtual void paintHeadingText (Graphics &g)
 Paints the heading text for this section, either sideways or horizontally.
 
virtual void setSkinValues (const Skin &skin, bool top_level)
 Sets skin values (colors, sizes) and applies them to sub-sections.
 
void setSkinOverride (Skin::SectionOverride skin_override)
 
virtual void repaintBackground ()
 Requests a repaint of the background.
 
void showPopupBrowser (SynthSection *owner, Rectangle< int > bounds, std::vector< File > directories, String extensions, std::string passthrough_name, std::string additional_folders_name)
 Shows a file browser popup (e.g., for loading samples or wavetables).
 
void updatePopupBrowser (SynthSection *owner)
 Updates the currently visible popup browser if any.
 
void showPopupSelector (Component *source, Point< int > position, const PopupItems &options, std::function< void(int)> callback, std::function< void()> cancel={ })
 Shows a popup selector with options.
 
void showDualPopupSelector (Component *source, Point< int > position, int width, const PopupItems &options, std::function< void(int)> callback)
 Shows a dual popup selector for hierarchical selection.
 
void showPopupDisplay (Component *source, const std::string &text, BubbleComponent::BubblePlacement placement, bool primary)
 Shows a brief popup display (like a tooltip).
 
void hidePopupDisplay (bool primary)
 Hides the currently shown popup display.
 
virtual void loadFile (const File &file)
 Loads a file (e.g., a sample or wavetable). Overridden by subclasses.
 
virtual File getCurrentFile ()
 Gets the currently loaded file. Overridden by subclasses.
 
virtual std::string getFileName ()
 Gets the name of the currently loaded file. Overridden by subclasses.
 
virtual std::string getFileAuthor ()
 Gets the author metadata of the currently loaded file. Overridden by subclasses.
 
virtual void paintContainer (Graphics &g)
 Paints the container background, body, heading, etc.
 
virtual void paintBody (Graphics &g, Rectangle< int > bounds)
 Paints the body background within given bounds.
 
virtual void paintBorder (Graphics &g, Rectangle< int > bounds)
 Paints the border around given bounds.
 
virtual void paintBody (Graphics &g)
 Paints the section body background using the entire component area.
 
virtual void paintBorder (Graphics &g)
 Paints the border around the entire component.
 
int getComponentShadowWidth ()
 Gets the width of shadow around components.
 
virtual void paintTabShadow (Graphics &g)
 Paints a tab-like shadow effect around the component.
 
void paintTabShadow (Graphics &g, Rectangle< int > bounds)
 Paints a tab shadow effect within specified bounds.
 
virtual void paintBackgroundShadow (Graphics &g)
 Stub for painting background shadows. Overridden by subclasses if needed.
 
void paintKnobShadows (Graphics &g)
 Paints knob shadows for all sliders.
 
Font getLabelFont ()
 Gets a suitable font for label text.
 
void setLabelFont (Graphics &g)
 Sets the Graphics context font and color for labels.
 
void drawLabelConnectionForComponents (Graphics &g, Component *left, Component *right)
 Draws a rectangular connection between labels of two components.
 
void drawLabelBackground (Graphics &g, Rectangle< int > bounds, bool text_component=false)
 Draws a background for a label area.
 
void drawLabelBackgroundForComponent (Graphics &g, Component *component)
 Draws label background for a specific component.
 
Rectangle< int > getDividedAreaBuffered (Rectangle< int > full_area, int num_sections, int section, int buffer)
 Divides an area into equal sections with buffering, returns the specified section.
 
Rectangle< int > getDividedAreaUnbuffered (Rectangle< int > full_area, int num_sections, int section, int buffer)
 Divides an area into equal sections without extra buffering, returns the specified section.
 
Rectangle< int > getLabelBackgroundBounds (Rectangle< int > bounds, bool text_component=false)
 Gets the background bounds for a label.
 
Rectangle< int > getLabelBackgroundBounds (Component *component, bool text_component=false)
 Gets the label background bounds for a component.
 
void drawLabel (Graphics &g, String text, Rectangle< int > component_bounds, bool text_component=false)
 Draws a label text below a component.
 
void drawLabelForComponent (Graphics &g, String text, Component *component, bool text_component=false)
 Draws a label for a given component.
 
void drawTextBelowComponent (Graphics &g, String text, Component *component, int space, int padding=0)
 Draws text below a component with optional padding.
 
virtual void paintChildrenShadows (Graphics &g)
 Paints shadows for child sections.
 
void paintChildrenBackgrounds (Graphics &g)
 Paints the backgrounds for all child sections.
 
void paintOpenGlChildrenBackgrounds (Graphics &g)
 Paints the backgrounds for all OpenGL child components.
 
void paintChildBackground (Graphics &g, SynthSection *child)
 Paints a child's background specifically.
 
void paintChildShadow (Graphics &g, SynthSection *child)
 Paints a child's shadow specifically.
 
void paintOpenGlBackground (Graphics &g, OpenGlComponent *child)
 Paints the background of an OpenGlComponent child.
 
void drawTextComponentBackground (Graphics &g, Rectangle< int > bounds, bool extend_to_label)
 Draws a background for a text component area.
 
void drawTempoDivider (Graphics &g, Component *sync)
 Draws a divider line for tempo-related controls.
 
virtual void initOpenGlComponents (OpenGlWrapper &open_gl)
 Initializes all OpenGL components in this section and sub-sections.
 
virtual void destroyOpenGlComponents (OpenGlWrapper &open_gl)
 Destroys all OpenGL components in this section and sub-sections.
 
virtual void sliderValueChanged (Slider *moved_slider) override
 Called when a slider value changes. Updates the synth parameter accordingly.
 
virtual void guiChanged (SynthButton *button) override
 Called when a SynthButton state changes (GUI interaction).
 
std::map< std::string, SynthSlider * > getAllSliders ()
 Gets all sliders registered in this section.
 
std::map< std::string, ToggleButton * > getAllButtons ()
 Gets all toggle buttons registered in this section.
 
std::map< std::string, ModulationButton * > getAllModulationButtons ()
 Gets all modulation buttons registered in this section.
 
virtual void setActive (bool active)
 Sets the active state of this section and sub-sections.
 
bool isActive () const
 Checks if the section is currently active.
 
virtual void animate (bool animate)
 Triggers animation state change in sub-sections if needed.
 
virtual void setAllValues (vital::control_map &controls)
 Sets values for all known parameters from a control map.
 
virtual void setValue (const std::string &name, vital::mono_float value, NotificationType notification)
 Sets a single parameter value for a known control.
 
void addModulationButton (ModulationButton *button, bool show=true)
 Adds a modulation button to this section.
 
void addSubSection (SynthSection *section, bool show=true)
 Adds a subsection (another SynthSection) as a child.
 
void removeSubSection (SynthSection *section)
 Removes a previously added subsection.
 
virtual void setScrollWheelEnabled (bool enabled)
 Enables or disables scroll wheel support for this section and sub-sections.
 
ToggleButton * activator () const
 Gets the activator toggle button if any.
 
void setSkinValues (std::map< Skin::ValueId, float > values)
 Sets custom skin values for this section.
 
void setSkinValue (Skin::ValueId id, float value)
 Sets a single skin value override.
 
float getTitleWidth ()
 
float getPadding ()
 
float getPowerButtonOffset () const
 
float getKnobSectionHeight ()
 
float getSliderWidth ()
 
float getSliderOverlap ()
 
float getSliderOverlapWithSpace ()
 
float getTextComponentHeight ()
 
float getStandardKnobSize ()
 
float getTotalKnobHeight ()
 
float getTextSectionYOffset ()
 
float getModButtonWidth ()
 
float getModFontSize ()
 
float getWidgetMargin ()
 
float getWidgetRounding ()
 
float getSizeRatio () const
 
int getPopupWidth () const
 
int getDualPopupWidth () const
 
- Public Member Functions inherited from SynthButton::ButtonListener
virtual ~ButtonListener ()
 Virtual destructor.
 

Static Public Attributes

static const std::string kFactoryDownloadPath
 The URL path for the factory download.
 
static constexpr int kY = 180
 The vertical offset for the download UI.
 
static constexpr int kDownloadWidth = 450
 The width of the download UI.
 
static constexpr int kDownloadInitialHeight = 380
 The initial height of the download UI before any content is loaded.
 
static constexpr int kDownloadAdditionalHeight = 324
 The additional height if more content is available.
 
static constexpr int kTextHeight = 15
 The text height for labels.
 
static constexpr int kPaddingX = 20
 Horizontal padding inside the UI.
 
static constexpr int kPaddingY = 20
 Vertical padding inside the UI.
 
static constexpr int kButtonHeight = 36
 Height of buttons.
 
static constexpr int kCompletionWaitMs = 1000
 Time in milliseconds to wait before hiding the UI after completion.
 
- Static Public Attributes inherited from SynthSection
static constexpr int kDefaultPowerButtonOffset = 0
 
static constexpr float kPowerButtonPaddingPercent = 0.29f
 
static constexpr float kTransposeHeightPercent = 0.5f
 
static constexpr float kTuneHeightPercent = 0.4f
 
static constexpr float kJointModulationRadiusPercent = 0.1f
 
static constexpr float kJointModulationExtensionPercent = 0.6666f
 
static constexpr float kPitchLabelPercent = 0.33f
 
static constexpr float kJointLabelHeightPercent = 0.4f
 
static constexpr double kTransposeMouseSensitivity = 0.2
 
static constexpr float kJointLabelBorderRatioX = 0.05f
 
static constexpr int kDefaultBodyRounding = 4
 
static constexpr int kDefaultLabelHeight = 10
 
static constexpr int kDefaultLabelBackgroundHeight = 16
 
static constexpr int kDefaultLabelBackgroundWidth = 56
 
static constexpr int kDefaultLabelBackgroundRounding = 4
 
static constexpr int kDefaultPadding = 2
 
static constexpr int kDefaultPopupMenuWidth = 150
 
static constexpr int kDefaultDualPopupMenuWidth = 340
 
static constexpr int kDefaultStandardKnobSize = 32
 
static constexpr int kDefaultKnobThickness = 2
 
static constexpr float kDefaultKnobModulationAmountThickness = 2.0f
 
static constexpr int kDefaultKnobModulationMeterSize = 43
 
static constexpr int kDefaultKnobModulationMeterThickness = 4
 
static constexpr int kDefaultModulationButtonWidth = 64
 
static constexpr int kDefaultModFontSize = 10
 
static constexpr int kDefaultKnobSectionHeight = 64
 
static constexpr int kDefaultSliderWidth = 24
 
static constexpr int kDefaultTextWidth = 80
 
static constexpr int kDefaultTextHeight = 24
 
static constexpr int kDefaultWidgetMargin = 6
 
static constexpr float kDefaultWidgetFillFade = 0.3f
 
static constexpr float kDefaultWidgetLineWidth = 4.0f
 
static constexpr float kDefaultWidgetFillCenter = 0.0f
 

Additional Inherited Members

- Protected Member Functions inherited from SynthSection
void setSliderHasHzAlternateDisplay (SynthSlider *slider)
 
void setSidewaysHeading (bool sideways)
 
void addToggleButton (ToggleButton *button, bool show)
 
void addButton (OpenGlToggleButton *button, bool show=true)
 
void addButton (OpenGlShapeButton *button, bool show=true)
 
void addSlider (SynthSlider *slider, bool show=true, bool listen=true)
 
void addOpenGlComponent (OpenGlComponent *open_gl_component, bool to_beginning=false)
 
void setActivator (SynthButton *activator)
 
void createOffOverlay ()
 
void setPresetSelector (PresetSelector *preset_selector, bool half=false)
 
void paintJointControlSliderBackground (Graphics &g, int x, int y, int width, int height)
 
void paintJointControlBackground (Graphics &g, int x, int y, int width, int height)
 
void paintJointControl (Graphics &g, int x, int y, int width, int height, const std::string &name)
 
void placeJointControls (int x, int y, int width, int height, SynthSlider *left, SynthSlider *right, Component *widget=nullptr)
 
void placeTempoControls (int x, int y, int width, int height, SynthSlider *tempo, SynthSlider *sync)
 
void placeRotaryOption (Component *option, SynthSlider *rotary)
 
void placeKnobsInArea (Rectangle< int > area, std::vector< Component * > knobs)
 
void lockCriticalSection ()
 
void unlockCriticalSection ()
 
Rectangle< int > getPresetBrowserBounds ()
 
int getTitleTextRight ()
 
Rectangle< int > getPowerButtonBounds ()
 
Rectangle< int > getTitleBounds ()
 
float getDisplayScale () const
 
virtual int getPixelMultiple () const
 
- Protected Attributes inherited from Overlay
float size_ratio_
 A scaling factor for the overlay size.
 
std::set< Listener * > listeners_
 Registered overlay listeners.
 
OverlayBackgroundRenderer background_
 Renders the overlay background.
 
- Protected Attributes inherited from SynthSection
std::map< Skin::ValueId, float > value_lookup_
 
std::vector< SynthSection * > sub_sections_
 
std::vector< OpenGlComponent * > open_gl_components_
 
std::map< std::string, SynthSlider * > slider_lookup_
 
std::map< std::string, Button * > button_lookup_
 
std::map< std::string, ModulationButton * > modulation_buttons_
 
std::map< std::string, SynthSlider * > all_sliders_
 
std::map< std::string, ToggleButton * > all_buttons_
 
std::map< std::string, ModulationButton * > all_modulation_buttons_
 
const SynthSectionparent_
 
SynthButtonactivator_
 
PresetSelectorpreset_selector_
 
bool preset_selector_half_width_
 
std::unique_ptr< OffOverlayoff_overlay_
 
Skin::SectionOverride skin_override_
 
float size_ratio_
 
bool active_
 
bool sideways_heading_
 

Detailed Description

An overlay component handling the download and installation of factory content and packs.

The DownloadSection displays a progress bar, installation directory, and allows the user to cancel or proceed with installation. It retrieves available packs, downloads them, and installs them into the chosen directory.

Constructor & Destructor Documentation

◆ DownloadSection()

DownloadSection::DownloadSection ( String name,
Authentication * auth )

Constructor.

Parameters
nameThe name of this overlay component.
authThe authentication object for accessing protected content.

◆ ~DownloadSection()

virtual DownloadSection::~DownloadSection ( )
inlinevirtual

Destructor.

Member Function Documentation

◆ addListener()

void DownloadSection::addListener ( Listener * listener)
inline

Adds a listener to be notified of data directory changes or no-download scenarios.

Parameters
listenerThe listener to add.

◆ buttonClicked()

void DownloadSection::buttonClicked ( Button * clicked_button)
overridevirtual

Handles button clicks, either canceling download or triggering install.

Parameters
clicked_buttonThe button clicked.

Reimplemented from SynthSection.

◆ cancelDownload()

void DownloadSection::cancelDownload ( )

Cancels all ongoing downloads.

◆ chooseInstallFolder()

void DownloadSection::chooseInstallFolder ( )

Allows the user to choose a folder for installation.

◆ finished()

void DownloadSection::finished ( URL::DownloadTask * task,
bool success )
override

Called when a download finishes.

Parameters
taskThe download task.
successTrue if successful, false otherwise.

◆ getDownloadRect()

Rectangle< int > DownloadSection::getDownloadRect ( )

Gets the rectangle representing the download UI area.

Returns
The bounding rectangle of the download area.

◆ mouseUp()

void DownloadSection::mouseUp ( const MouseEvent & e)
override

Handles mouse-up events. If clicked outside the UI, hides the overlay.

Parameters
eThe mouse event.

◆ progress()

void DownloadSection::progress ( URL::DownloadTask * task,
int64 bytesDownloaded,
int64 totalLength )
override

Called periodically with download progress updates.

Parameters
taskThe download task.
bytesDownloadedThe number of bytes downloaded so far.
totalLengthThe total length of the file.

◆ renderOpenGlComponents()

void DownloadSection::renderOpenGlComponents ( OpenGlWrapper & open_gl,
bool animate )
overridevirtual

Renders OpenGL components, including the progress bar.

Parameters
open_glThe OpenGlWrapper.
animateIf true, animates transitions.

Reimplemented from SynthSection.

◆ resized()

void DownloadSection::resized ( )
overridevirtual

Lays out the UI components within the overlay.

Reimplemented from Overlay.

◆ setVisible()

void DownloadSection::setVisible ( bool should_be_visible)
override

Sets the visibility of the section, repainting if becoming visible.

Parameters
should_be_visibleTrue to show, false to hide.

◆ startDownload()

void DownloadSection::startDownload ( Thread * thread,
URL & url,
const File & dest )

Initiates a single download task.

Parameters
threadThe thread starting this download.
urlThe URL to download.
destThe destination file for the downloaded content.

◆ startInstall()

void DownloadSection::startInstall ( Thread * thread)

Begins installation of downloaded packs.

Parameters
threadThe thread performing the installation.

◆ timerCallback()

void DownloadSection::timerCallback ( )
inlineoverride

Timer callback used for hiding the UI after a delay.

◆ triggerDownload()

void DownloadSection::triggerDownload ( )

Triggers the process of checking available packs and downloading necessary content.

◆ triggerInstall()

void DownloadSection::triggerInstall ( )

Starts the installation process after all downloads are completed.

Member Data Documentation

◆ kButtonHeight

int DownloadSection::kButtonHeight = 36
staticconstexpr

Height of buttons.

◆ kCompletionWaitMs

int DownloadSection::kCompletionWaitMs = 1000
staticconstexpr

Time in milliseconds to wait before hiding the UI after completion.

◆ kDownloadAdditionalHeight

int DownloadSection::kDownloadAdditionalHeight = 324
staticconstexpr

The additional height if more content is available.

◆ kDownloadInitialHeight

int DownloadSection::kDownloadInitialHeight = 380
staticconstexpr

The initial height of the download UI before any content is loaded.

◆ kDownloadWidth

int DownloadSection::kDownloadWidth = 450
staticconstexpr

The width of the download UI.

◆ kFactoryDownloadPath

const std::string DownloadSection::kFactoryDownloadPath
static

The URL path for the factory download.

◆ kPaddingX

int DownloadSection::kPaddingX = 20
staticconstexpr

Horizontal padding inside the UI.

◆ kPaddingY

int DownloadSection::kPaddingY = 20
staticconstexpr

Vertical padding inside the UI.

◆ kTextHeight

int DownloadSection::kTextHeight = 15
staticconstexpr

The text height for labels.

◆ kY

int DownloadSection::kY = 180
staticconstexpr

The vertical offset for the download UI.


The documentation for this class was generated from the following files: