Skip to content

Commit

Permalink
Reduce the code in macro and use a generic option modifier
Browse files Browse the repository at this point in the history
  • Loading branch information
acolombier committed May 20, 2024
1 parent 211d43b commit efb4dae
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 28 deletions.
46 changes: 19 additions & 27 deletions src/preferences/dialog/dlgprefwaveform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<WaveformWidgetType::Type>( \
waveformTypeComboBox->currentData().toInt()); \
auto* factory = WaveformWidgetFactory::instance(); \
factory->setWidgetTypeFromHandle( \
factory->findHandleIndexFromType(type), true); \
}
#endif

namespace {
constexpr WaveformWidgetType::Type kDefaultWaveform = WaveformWidgetType::RGB;
} // anonymous namespace
Expand All @@ -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();
Expand Down Expand Up @@ -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<WaveformWidgetType::Type>(
waveformTypeComboBox->currentData().toInt());
auto* factory = WaveformWidgetFactory::instance();
factory->setWidgetTypeFromHandle(
factory->findHandleIndexFromType(type), true);
}

void DlgPrefWaveform::slotUpdate() {
WaveformWidgetFactory* factory = WaveformWidgetFactory::instance();

Expand Down Expand Up @@ -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();
Expand Down
11 changes: 10 additions & 1 deletion src/preferences/dialog/dlgprefwaveform.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand Down Expand Up @@ -68,3 +73,7 @@ class DlgPrefWaveform : public DlgPreferencePage, public Ui::DlgPrefWaveformDlg
UserSettingsPointer m_pConfig;
std::shared_ptr<Library> m_pLibrary;
};

#ifdef DECL_SLOT_WAVEFORM_OPTION
#undef DECL_SLOT_WAVEFORM_OPTION
#endif

0 comments on commit efb4dae

Please sign in to comment.