X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=_Presets.pde;h=f1855c63aa4f2c4c57eaba9f2030cc9b802ca108;hb=1f974cbc418e3c35bb6010e1d7e566a9af63ff48;hp=7743cbf3aa7c652f851938145b1595822e2bb612;hpb=c539129588fc6cf8edd9ca9da85cd685f0e3b996;p=SugarCubes.git diff --git a/_Presets.pde b/_Presets.pde index 7743cbf..f1855c6 100644 --- a/_Presets.pde +++ b/_Presets.pde @@ -2,6 +2,7 @@ interface PresetListener { public void onPresetLoaded(Preset preset); public void onPresetDirty(Preset preset); public void onPresetStored(Preset preset); + public void onPresetUnloaded(); } class PresetManager implements LXParameter.Listener { @@ -32,6 +33,28 @@ class PresetManager implements LXParameter.Listener { } } } + for (Engine.Deck deck : lx.engine.getDecks()) { + deck.addListener(new Engine.AbstractListener() { + public void patternDidChange(Engine.Deck deck, LXPattern pattern) { + if (midiEngine.getFocusedDeck() == deck) { + if (pattern != loadedPattern) { + onPresetDirty(); + } + } + } + }); + } + } + + public void setMidiEngine(MidiEngine midiEngine) { + midiEngine.addListener(new MidiEngineListener() { + public void onFocusedDeck(int deckIndex) { + loadedPreset = null; + for (PresetListener listener : listeners) { + listener.onPresetUnloaded(); + } + } + }); } public void addListener(PresetListener listener) { @@ -44,6 +67,9 @@ class PresetManager implements LXParameter.Listener { public void store(int index) { presets[index].store(midiEngine.getFocusedPattern()); + for (PresetListener listener : listeners) { + listener.onPresetStored(presets[index]); + } select(index); } @@ -65,12 +91,16 @@ class PresetManager implements LXParameter.Listener { } } - public void onParameterChanged(LXParameter p) { + private void onPresetDirty() { for (PresetListener listener : listeners) { listener.onPresetDirty(loadedPreset); } } + public void onParameterChanged(LXParameter p) { + onPresetDirty(); + } + public void write() { String[] lines = new String[NUM_PRESETS]; int i = 0;