UI: Replace SIGNAL and SLOT macros for HookWidget methods

This commit is contained in:
gxalpha
2023-07-21 13:19:52 +02:00
parent ef26f14f18
commit a3991f9db8
5 changed files with 74 additions and 57 deletions
+8 -8
View File
@@ -871,8 +871,8 @@ void OBSBasicSettings::UpdateVodTrackSetting()
&pos, nullptr);
ui->simpleStreamingLayout->insertRow(pos + 1, nullptr, simpleVodTrack);
HookWidget(simpleVodTrack, SIGNAL(clicked(bool)),
SLOT(OutputsChanged()));
HookWidget(simpleVodTrack.data(), &QCheckBox::clicked,
&OBSBasicSettings::OutputsChanged);
connect(ui->simpleOutAdvanced, &QCheckBox::toggled,
simpleVodTrack.data(), &QCheckBox::setVisible);
@@ -890,12 +890,12 @@ void OBSBasicSettings::UpdateVodTrackSetting()
vodTrack[i] = new QRadioButton(QString::number(i + 1));
vodTrackLayout->addWidget(vodTrack[i]);
HookWidget(vodTrack[i], SIGNAL(clicked(bool)),
SLOT(OutputsChanged()));
HookWidget(vodTrack[i].data(), &QRadioButton::clicked,
&OBSBasicSettings::OutputsChanged);
}
HookWidget(vodTrackCheckbox, SIGNAL(clicked(bool)),
SLOT(OutputsChanged()));
HookWidget(vodTrackCheckbox.data(), &QCheckBox::clicked,
&OBSBasicSettings::OutputsChanged);
vodTrackLayout->addStretch();
vodTrackLayout->setContentsMargins(0, 0, 0, 0);
@@ -1219,8 +1219,8 @@ bool OBSBasicSettings::UpdateResFPSLimits()
ui->outputResolution->clear();
ui->outputResolution->setEditable(false);
HookWidget(ui->outputResolution,
SIGNAL(currentIndexChanged(int)),
SLOT(VideoChangedResolution()));
&QComboBox::currentIndexChanged,
&OBSBasicSettings::VideoChangedResolution);
int new_res_index = -1;
+18 -24
View File
@@ -389,31 +389,25 @@ static inline void HighlightGroupBoxLabel(QGroupBox *gb, QWidget *widget,
void RestrictResetBitrates(initializer_list<QComboBox *> boxes, int maxbitrate);
void OBSBasicSettings::HookWidget(QWidget *widget, const char *signal,
const char *slot)
{
QObject::connect(widget, signal, this, slot);
widget->setProperty("changed", QVariant(false));
}
/* clang-format off */
#define COMBO_CHANGED SIGNAL(currentIndexChanged(int))
#define EDIT_CHANGED SIGNAL(textChanged(const QString &))
#define CBEDIT_CHANGED SIGNAL(editTextChanged(const QString &))
#define CHECK_CHANGED SIGNAL(clicked(bool))
#define SCROLL_CHANGED SIGNAL(valueChanged(int))
#define DSCROLL_CHANGED SIGNAL(valueChanged(double))
#define COMBO_CHANGED &QComboBox::currentIndexChanged
#define EDIT_CHANGED &QLineEdit::textChanged
#define CBEDIT_CHANGED &QComboBox::editTextChanged
#define CHECK_CHANGED &QCheckBox::clicked
#define GROUP_CHANGED &QGroupBox::clicked
#define SCROLL_CHANGED &QSpinBox::valueChanged
#define DSCROLL_CHANGED &QDoubleSpinBox::valueChanged
#define GENERAL_CHANGED SLOT(GeneralChanged())
#define STREAM1_CHANGED SLOT(Stream1Changed())
#define OUTPUTS_CHANGED SLOT(OutputsChanged())
#define AUDIO_RESTART SLOT(AudioChangedRestart())
#define AUDIO_CHANGED SLOT(AudioChanged())
#define VIDEO_RES SLOT(VideoChangedResolution())
#define VIDEO_CHANGED SLOT(VideoChanged())
#define A11Y_CHANGED SLOT(A11yChanged())
#define ADV_CHANGED SLOT(AdvancedChanged())
#define ADV_RESTART SLOT(AdvancedChangedRestart())
#define GENERAL_CHANGED &OBSBasicSettings::GeneralChanged
#define STREAM1_CHANGED &OBSBasicSettings::Stream1Changed
#define OUTPUTS_CHANGED &OBSBasicSettings::OutputsChanged
#define AUDIO_RESTART &OBSBasicSettings::AudioChangedRestart
#define AUDIO_CHANGED &OBSBasicSettings::AudioChanged
#define VIDEO_RES &OBSBasicSettings::VideoChangedResolution
#define VIDEO_CHANGED &OBSBasicSettings::VideoChanged
#define A11Y_CHANGED &OBSBasicSettings::A11yChanged
#define ADV_CHANGED &OBSBasicSettings::AdvancedChanged
#define ADV_RESTART &OBSBasicSettings::AdvancedChangedRestart
/* clang-format on */
OBSBasicSettings::OBSBasicSettings(QWidget *parent)
@@ -596,7 +590,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
HookWidget(ui->fpsInteger, SCROLL_CHANGED, VIDEO_CHANGED);
HookWidget(ui->fpsNumerator, SCROLL_CHANGED, VIDEO_CHANGED);
HookWidget(ui->fpsDenominator, SCROLL_CHANGED, VIDEO_CHANGED);
HookWidget(ui->colorsGroupBox, CHECK_CHANGED, A11Y_CHANGED);
HookWidget(ui->colorsGroupBox, GROUP_CHANGED, A11Y_CHANGED);
HookWidget(ui->colorPreset, COMBO_CHANGED, A11Y_CHANGED);
HookWidget(ui->renderer, COMBO_CHANGED, ADV_RESTART);
HookWidget(ui->adapter, COMBO_CHANGED, ADV_RESTART);
+9 -1
View File
@@ -221,7 +221,15 @@ private:
EnableApplyButton(false);
}
void HookWidget(QWidget *widget, const char *signal, const char *slot);
template<typename Widget, typename WidgetParent, typename... SignalArgs,
typename... SlotArgs>
void HookWidget(Widget *widget,
void (WidgetParent::*signal)(SignalArgs...),
void (OBSBasicSettings::*slot)(SlotArgs...))
{
QObject::connect(widget, signal, this, slot);
widget->setProperty("changed", QVariant(false));
}
bool QueryChanges();
bool QueryAllowedToClose();
+31 -23
View File
@@ -30,15 +30,9 @@ static OBSSceneItem FindASelectedItem(obs_scene_t *scene)
return item;
}
void OBSBasicTransform::HookWidget(QWidget *widget, const char *signal,
const char *slot)
{
QObject::connect(widget, signal, this, slot);
}
#define COMBO_CHANGED SIGNAL(currentIndexChanged(int))
#define ISCROLL_CHANGED SIGNAL(valueChanged(int))
#define DSCROLL_CHANGED SIGNAL(valueChanged(double))
#define COMBO_CHANGED &QComboBox::currentIndexChanged
#define ISCROLL_CHANGED &QSpinBox::valueChanged
#define DSCROLL_CHANGED &QDoubleSpinBox::valueChanged
OBSBasicTransform::OBSBasicTransform(OBSSceneItem item, OBSBasic *parent)
: QDialog(parent),
@@ -49,20 +43,34 @@ OBSBasicTransform::OBSBasicTransform(OBSSceneItem item, OBSBasic *parent)
ui->setupUi(this);
HookWidget(ui->positionX, DSCROLL_CHANGED, SLOT(OnControlChanged()));
HookWidget(ui->positionY, DSCROLL_CHANGED, SLOT(OnControlChanged()));
HookWidget(ui->rotation, DSCROLL_CHANGED, SLOT(OnControlChanged()));
HookWidget(ui->sizeX, DSCROLL_CHANGED, SLOT(OnControlChanged()));
HookWidget(ui->sizeY, DSCROLL_CHANGED, SLOT(OnControlChanged()));
HookWidget(ui->align, COMBO_CHANGED, SLOT(OnControlChanged()));
HookWidget(ui->boundsType, COMBO_CHANGED, SLOT(OnBoundsType(int)));
HookWidget(ui->boundsAlign, COMBO_CHANGED, SLOT(OnControlChanged()));
HookWidget(ui->boundsWidth, DSCROLL_CHANGED, SLOT(OnControlChanged()));
HookWidget(ui->boundsHeight, DSCROLL_CHANGED, SLOT(OnControlChanged()));
HookWidget(ui->cropLeft, ISCROLL_CHANGED, SLOT(OnCropChanged()));
HookWidget(ui->cropRight, ISCROLL_CHANGED, SLOT(OnCropChanged()));
HookWidget(ui->cropTop, ISCROLL_CHANGED, SLOT(OnCropChanged()));
HookWidget(ui->cropBottom, ISCROLL_CHANGED, SLOT(OnCropChanged()));
HookWidget(ui->positionX, DSCROLL_CHANGED,
&OBSBasicTransform::OnControlChanged);
HookWidget(ui->positionY, DSCROLL_CHANGED,
&OBSBasicTransform::OnControlChanged);
HookWidget(ui->rotation, DSCROLL_CHANGED,
&OBSBasicTransform::OnControlChanged);
HookWidget(ui->sizeX, DSCROLL_CHANGED,
&OBSBasicTransform::OnControlChanged);
HookWidget(ui->sizeY, DSCROLL_CHANGED,
&OBSBasicTransform::OnControlChanged);
HookWidget(ui->align, COMBO_CHANGED,
&OBSBasicTransform::OnControlChanged);
HookWidget(ui->boundsType, COMBO_CHANGED,
&OBSBasicTransform::OnBoundsType);
HookWidget(ui->boundsAlign, COMBO_CHANGED,
&OBSBasicTransform::OnControlChanged);
HookWidget(ui->boundsWidth, DSCROLL_CHANGED,
&OBSBasicTransform::OnControlChanged);
HookWidget(ui->boundsHeight, DSCROLL_CHANGED,
&OBSBasicTransform::OnControlChanged);
HookWidget(ui->cropLeft, ISCROLL_CHANGED,
&OBSBasicTransform::OnCropChanged);
HookWidget(ui->cropRight, ISCROLL_CHANGED,
&OBSBasicTransform::OnCropChanged);
HookWidget(ui->cropTop, ISCROLL_CHANGED,
&OBSBasicTransform::OnCropChanged);
HookWidget(ui->cropBottom, ISCROLL_CHANGED,
&OBSBasicTransform::OnCropChanged);
ui->buttonBox->button(QDialogButtonBox::Close)->setDefault(true);
+8 -1
View File
@@ -27,7 +27,14 @@ private:
bool ignoreTransformSignal = false;
bool ignoreItemChange = false;
void HookWidget(QWidget *widget, const char *signal, const char *slot);
template<typename Widget, typename WidgetParent, typename... SignalArgs,
typename... SlotArgs>
void HookWidget(Widget *widget,
void (WidgetParent::*signal)(SignalArgs...),
void (OBSBasicTransform::*slot)(SlotArgs...))
{
QObject::connect(widget, signal, this, slot);
}
void SetScene(OBSScene scene);
void SetItem(OBSSceneItem newItem);