Skip to content

Commit

Permalink
Merge pull request #4484 from daschuer/effects_refactoring_lp1948567
Browse files Browse the repository at this point in the history
Fix empty effect chain selector after renaming chain presets
  • Loading branch information
Be-ing authored Oct 26, 2021
2 parents 5e2bbb2 + b65dc20 commit 6d7bcc1
Show file tree
Hide file tree
Showing 8 changed files with 30 additions and 14 deletions.
12 changes: 11 additions & 1 deletion src/effects/effectchain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ EffectChain::EffectChain(const QString& group,
ConfigKey(m_group, "num_chain_presets"));
m_pControlNumChainPresets->set(m_pChainPresetManager->numPresets());
m_pControlNumChainPresets->setReadOnly();
connect(m_pChainPresetManager.data(),
&EffectChainPresetManager::effectChainPresetRenamed,
this,
&EffectChain::slotEffectChainPresetRenamed);
connect(m_pChainPresetManager.data(),
&EffectChainPresetManager::effectChainPresetListUpdated,
this,
Expand Down Expand Up @@ -213,7 +217,7 @@ void EffectChain::loadChainPreset(EffectChainPresetPointer pPreset) {
m_pControlChainSuperParameter->setDefaultValue(pPreset->superKnob());

m_presetName = pPreset->name();
emit presetNameChanged(m_presetName);
emit chainPresetChanged(m_presetName);

setControlLoadedPresetIndex(presetIndex());
}
Expand Down Expand Up @@ -371,6 +375,12 @@ void EffectChain::slotChannelStatusChanged(
}
}

void EffectChain::slotEffectChainPresetRenamed(const QString& oldName, const QString& newName) {
if (m_presetName == oldName) {
m_presetName = newName;
}
}

void EffectChain::slotPresetListUpdated() {
setControlLoadedPresetIndex(presetIndex());
m_pControlNumChainPresets->forceSet(numPresets());
Expand Down
3 changes: 2 additions & 1 deletion src/effects/effectchain.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ class EffectChain : public QObject {
void slotControlClear(double value);

signals:
void presetNameChanged(const QString& name);
void chainPresetChanged(const QString& name);

protected slots:
void sendParameterUpdate();
Expand Down Expand Up @@ -112,6 +112,7 @@ class EffectChain : public QObject {
QList<EffectSlotPointer> m_effectSlots;

protected slots:
void slotEffectChainPresetRenamed(const QString& oldName, const QString& newName);
void slotPresetListUpdated();

private slots:
Expand Down
8 changes: 6 additions & 2 deletions src/effects/presets/effectchainpresetmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -256,12 +256,12 @@ void EffectChainPresetManager::renamePreset(const QString& oldName) {
}

EffectChainPresetPointer pPreset = m_effectChainPresets.take(oldName);
int index = m_effectChainPresetsSorted.indexOf(pPreset);

pPreset->setName(newName);
m_effectChainPresets.insert(newName, pPreset);

if (!savePresetXml(pPreset)) {
// Saving failed, revert renaming
m_effectChainPresets.take(newName);
pPreset->setName(oldName);
m_effectChainPresets.insert(oldName, pPreset);
Expand All @@ -282,16 +282,20 @@ void EffectChainPresetManager::renamePreset(const QString& oldName) {
msgBox.exec();
}

emit effectChainPresetRenamed(oldName, newName);

int index = m_effectChainPresetsSorted.indexOf(pPreset);
if (index != -1) {
m_effectChainPresetsSorted.removeAt(index);
m_effectChainPresetsSorted.insert(index, pPreset);
emit effectChainPresetListUpdated();
}
index = m_quickEffectChainPresetsSorted.indexOf(pPreset);
if (index != -1) {
m_quickEffectChainPresetsSorted.removeAt(index);
m_quickEffectChainPresetsSorted.insert(index, pPreset);
emit quickEffectChainPresetListUpdated();
}
emit effectChainPresetListUpdated();
}

bool EffectChainPresetManager::deletePreset(const QString& chainPresetName) {
Expand Down
1 change: 1 addition & 0 deletions src/effects/presets/effectchainpresetmanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ class EffectChainPresetManager : public QObject {
void saveEffectsXml(QDomDocument* pDoc, const EffectsXmlData& data);

signals:
void effectChainPresetRenamed(const QString& oldName, const QString& newName);
void effectChainPresetListUpdated();
void quickEffectChainPresetListUpdated();

Expand Down
8 changes: 4 additions & 4 deletions src/widget/weffectchain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@ void WEffectChain::setEffectChain(EffectChainPointer pEffectChain) {
if (pEffectChain) {
m_pEffectChain = pEffectChain;
connect(pEffectChain.data(),
&EffectChain::presetNameChanged,
&EffectChain::chainPresetChanged,
this,
&WEffectChain::presetNameChanged);
presetNameChanged(m_pEffectChain->presetName());
&WEffectChain::chainPresetChanged);
chainPresetChanged(m_pEffectChain->presetName());
}
}

void WEffectChain::presetNameChanged(const QString& newName) {
void WEffectChain::chainPresetChanged(const QString& newName) {
setText(newName);
}
2 changes: 1 addition & 1 deletion src/widget/weffectchain.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class WEffectChain : public WLabel {
void setup(const QDomNode& node, const SkinContext& context) override;

private slots:
void presetNameChanged(const QString& newName);
void chainPresetChanged(const QString& newName);

private:
// Set the EffectChain that should be monitored by this WEffectChain
Expand Down
8 changes: 4 additions & 4 deletions src/widget/weffectchainpresetselector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ void WEffectChainPresetSelector::setup(const QDomNode& node, const SkinContext&
this,
&WEffectChainPresetSelector::populate);
connect(m_pChain.data(),
&EffectChain::presetNameChanged,
&EffectChain::chainPresetChanged,
this,
&WEffectChainPresetSelector::slotEffectChainNameChanged);
&WEffectChainPresetSelector::slotChainPresetChanged);
connect(this,
QOverload<int>::of(&QComboBox::activated),
this,
Expand Down Expand Up @@ -72,7 +72,7 @@ void WEffectChainPresetSelector::populate() {
setItemData(i, pChainPreset->name(), Qt::ToolTipRole);
}

slotEffectChainNameChanged(m_pChain->presetName());
slotChainPresetChanged(m_pChain->presetName());
blockSignals(false);
}

Expand All @@ -83,7 +83,7 @@ void WEffectChainPresetSelector::slotEffectChainPresetSelected(int index) {
setBaseTooltip(itemData(index, Qt::ToolTipRole).toString());
}

void WEffectChainPresetSelector::slotEffectChainNameChanged(const QString& name) {
void WEffectChainPresetSelector::slotChainPresetChanged(const QString& name) {
setCurrentIndex(findData(name));
setBaseTooltip(name);
}
Expand Down
2 changes: 1 addition & 1 deletion src/widget/weffectchainpresetselector.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class WEffectChainPresetSelector : public QComboBox, public WBaseWidget {
private slots:
void populate();
void slotEffectChainPresetSelected(int index);
void slotEffectChainNameChanged(const QString& name);
void slotChainPresetChanged(const QString& name);
bool event(QEvent* pEvent) override;

private:
Expand Down

0 comments on commit 6d7bcc1

Please sign in to comment.