From a3991f9db840b9e0109e68c5e79dcb1cfc734dcb Mon Sep 17 00:00:00 2001 From: gxalpha Date: Fri, 7 Apr 2023 15:23:35 +0200 Subject: [PATCH] UI: Replace SIGNAL and SLOT macros for HookWidget methods --- UI/window-basic-settings-stream.cpp | 16 ++++----- UI/window-basic-settings.cpp | 42 ++++++++++------------ UI/window-basic-settings.hpp | 10 +++++- UI/window-basic-transform.cpp | 54 +++++++++++++++++------------ UI/window-basic-transform.hpp | 9 ++++- 5 files changed, 74 insertions(+), 57 deletions(-) diff --git a/UI/window-basic-settings-stream.cpp b/UI/window-basic-settings-stream.cpp index f884e4fc2..e7fe956e8 100644 --- a/UI/window-basic-settings-stream.cpp +++ b/UI/window-basic-settings-stream.cpp @@ -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; diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index bab430f9a..d437d4fe9 100644 --- a/UI/window-basic-settings.cpp +++ b/UI/window-basic-settings.cpp @@ -389,31 +389,25 @@ static inline void HighlightGroupBoxLabel(QGroupBox *gb, QWidget *widget, void RestrictResetBitrates(initializer_list 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); diff --git a/UI/window-basic-settings.hpp b/UI/window-basic-settings.hpp index ac99da9de..c8a926cb7 100644 --- a/UI/window-basic-settings.hpp +++ b/UI/window-basic-settings.hpp @@ -221,7 +221,15 @@ private: EnableApplyButton(false); } - void HookWidget(QWidget *widget, const char *signal, const char *slot); + template + 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(); diff --git a/UI/window-basic-transform.cpp b/UI/window-basic-transform.cpp index 5d165a1c4..b11a6b749 100644 --- a/UI/window-basic-transform.cpp +++ b/UI/window-basic-transform.cpp @@ -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); diff --git a/UI/window-basic-transform.hpp b/UI/window-basic-transform.hpp index 16342609d..d1936279a 100644 --- a/UI/window-basic-transform.hpp +++ b/UI/window-basic-transform.hpp @@ -27,7 +27,14 @@ private: bool ignoreTransformSignal = false; bool ignoreItemChange = false; - void HookWidget(QWidget *widget, const char *signal, const char *slot); + template + 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);