mirror of
https://codeberg.org/armin/ambivalence.git
synced 2026-09-01 04:10:48 +02:00
59 lines
No EOL
2.1 KiB
C++
59 lines
No EOL
2.1 KiB
C++
#pragma once
|
|
#include <JuceHeader.h>
|
|
|
|
class FDNReverbAudioProcessor;
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// PresetManager
|
|
// -----------------------------------------------------------------------------
|
|
// preset file manage .
|
|
//
|
|
// save location : ~/Documents/Ambivalence/Presets/*.ambpreset
|
|
// : APVTS getStateInformation/setStateInformation
|
|
// -> existing save fully reused , minimizes added code
|
|
//
|
|
// real-time safety :
|
|
// - file I/O all message thread (UI) assumed to be called
|
|
// - processBlock not involved at all
|
|
// -----------------------------------------------------------------------------
|
|
class PresetManager
|
|
{
|
|
public:
|
|
explicit PresetManager(FDNReverbAudioProcessor& processor);
|
|
|
|
// --- preset operations ---
|
|
bool savePreset(const juce::String& name);
|
|
bool loadPreset(const juce::String& name);
|
|
bool deletePreset(const juce::String& name);
|
|
|
|
// --- navigation ---
|
|
void loadPrevPreset();
|
|
void loadNextPreset();
|
|
|
|
// --- state access ---
|
|
juce::StringArray getPresetNames() const noexcept { return presetNames; }
|
|
// --- after changes ---
|
|
juce::String getCurrentPresetName() const noexcept { return currentPresetName; }
|
|
void setCurrentPresetName(const juce::String& name) noexcept { currentPresetName = name; } // * added
|
|
int getCurrentPresetIndex() const noexcept;
|
|
|
|
bool hasPresets() const noexcept { return !presetNames.isEmpty(); }
|
|
|
|
// --- folder access ---
|
|
juce::File getPresetsFolder() const;
|
|
|
|
// --- UI update callback ---
|
|
std::function<void()> onPresetListChanged;
|
|
std::function<void(const juce::String&)> onPresetLoaded;
|
|
|
|
private:
|
|
void refreshPresetList();
|
|
juce::File getPresetFile(const juce::String& name) const;
|
|
|
|
FDNReverbAudioProcessor& processor;
|
|
juce::StringArray presetNames;
|
|
juce::String currentPresetName;
|
|
|
|
static constexpr const char* kExtension = ".ambpreset";
|
|
static constexpr const char* kSubFolder = "Ambivalence/Presets";
|
|
}; |