diff --git a/src/preferences/dialog/dlgprefwaveform.cpp b/src/preferences/dialog/dlgprefwaveform.cpp index fe79396a9a7..3aa3f734f9f 100644 --- a/src/preferences/dialog/dlgprefwaveform.cpp +++ b/src/preferences/dialog/dlgprefwaveform.cpp @@ -8,26 +8,6 @@ #include "waveform/renderers/waveformwidgetrenderer.h" #include "waveform/waveformwidgetfactory.h" -#ifdef MIXXX_USE_QOPENGL -#include "waveform/renderers/allshader/waveformrenderersignalbase.h" -#define IMPL_SLOT_WAVEFORM_OPTION(opt) \ - void DlgPrefWaveform::slotSetWaveformOption##opt(bool checked) { \ - int currentOption = m_pConfig->getValue( \ - ConfigKey("[Waveform]", "waveform_options"), \ - allshader::WaveformRendererSignalBase::None); \ - m_pConfig->setValue(ConfigKey("[Waveform]", "waveform_options"), \ - checked ? currentOption | \ - allshader::WaveformRendererSignalBase::opt \ - : currentOption ^ \ - allshader::WaveformRendererSignalBase::opt); \ - auto type = static_cast( \ - waveformTypeComboBox->currentData().toInt()); \ - auto* factory = WaveformWidgetFactory::instance(); \ - factory->setWidgetTypeFromHandle( \ - factory->findHandleIndexFromType(type), true); \ - } -#endif - namespace { constexpr WaveformWidgetType::Type kDefaultWaveform = WaveformWidgetType::RGB; } // anonymous namespace @@ -43,8 +23,8 @@ DlgPrefWaveform::DlgPrefWaveform( // Waveform overview init waveformOverviewComboBox->addItem(tr("Filtered")); // "0" - waveformOverviewComboBox->addItem(tr("HSV")); // "1" - waveformOverviewComboBox->addItem(tr("RGB")); // "2" + waveformOverviewComboBox->addItem(tr("HSV")); // "1" + waveformOverviewComboBox->addItem(tr("RGB")); // "2" // Populate waveform options. WaveformWidgetFactory* factory = WaveformWidgetFactory::instance(); @@ -204,6 +184,23 @@ DlgPrefWaveform::DlgPrefWaveform( DlgPrefWaveform::~DlgPrefWaveform() { } +void DlgPrefWaveform::slotSetWaveformOptions( + allshader::WaveformRendererSignalBase::Option option, bool enabled) { + int currentOption = m_pConfig->getValue( + ConfigKey("[Waveform]", "waveform_options"), + allshader::WaveformRendererSignalBase::None); + m_pConfig->setValue(ConfigKey("[Waveform]", "waveform_options"), + enabled ? currentOption | + option + : currentOption ^ + option); + auto type = static_cast( + waveformTypeComboBox->currentData().toInt()); + auto* factory = WaveformWidgetFactory::instance(); + factory->setWidgetTypeFromHandle( + factory->findHandleIndexFromType(type), true); +} + void DlgPrefWaveform::slotUpdate() { WaveformWidgetFactory* factory = WaveformWidgetFactory::instance(); @@ -413,11 +410,6 @@ void DlgPrefWaveform::slotSetWaveformAcceleration(bool checked) { updateEnableUntilMark(); } -#ifdef MIXXX_USE_QOPENGL -IMPL_SLOT_WAVEFORM_OPTION(SplitStereoSignal) -IMPL_SLOT_WAVEFORM_OPTION(HighDetails) -#endif - void DlgPrefWaveform::updateWaveformAcceleration( WaveformWidgetType::Type type, WaveformWidgetBackend backend) { auto* factory = WaveformWidgetFactory::instance(); diff --git a/src/preferences/dialog/dlgprefwaveform.h b/src/preferences/dialog/dlgprefwaveform.h index b4b4bea947b..3e5ca94e897 100644 --- a/src/preferences/dialog/dlgprefwaveform.h +++ b/src/preferences/dialog/dlgprefwaveform.h @@ -7,7 +7,11 @@ #include "preferences/usersettings.h" #include "waveform/widgets/waveformwidgettype.h" #ifdef MIXXX_USE_QOPENGL -#define DECL_SLOT_WAVEFORM_OPTION(opt) void slotSetWaveformOption##opt(bool checked) +#include "waveform/renderers/allshader/waveformrenderersignalbase.h" +#define DECL_SLOT_WAVEFORM_OPTION(opt) \ + void slotSetWaveformOption##opt(bool checked) { \ + slotSetWaveformOptions(allshader::WaveformRendererSignalBase::opt, checked); \ + } #endif class Library; @@ -33,6 +37,7 @@ class DlgPrefWaveform : public DlgPreferencePage, public Ui::DlgPrefWaveformDlg void slotSetWaveformEnabled(bool checked); void slotSetWaveformAcceleration(bool checked); #ifdef MIXXX_USE_QOPENGL + void slotSetWaveformOptions(allshader::WaveformRendererSignalBase::Option option, bool enabled); DECL_SLOT_WAVEFORM_OPTION(SplitStereoSignal); DECL_SLOT_WAVEFORM_OPTION(HighDetails); #endif @@ -68,3 +73,7 @@ class DlgPrefWaveform : public DlgPreferencePage, public Ui::DlgPrefWaveformDlg UserSettingsPointer m_pConfig; std::shared_ptr m_pLibrary; }; + +#ifdef DECL_SLOT_WAVEFORM_OPTION +#undef DECL_SLOT_WAVEFORM_OPTION +#endif