SubmitFieldWidget: Avoid using sender()

Change-Id: I024f397718b6e15d62676ffe91770ed21d2be4bb
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Jarek Kobus
2022-07-21 13:03:09 +02:00
parent 8dabadbe56
commit d7002235d2
2 changed files with 26 additions and 38 deletions

View File

@@ -25,6 +25,7 @@
#include "submitfieldwidget.h" #include "submitfieldwidget.h"
#include <utils/algorithm.h>
#include <utils/utilsicons.h> #include <utils/utilsicons.h>
#include <QComboBox> #include <QComboBox>
@@ -111,7 +112,7 @@ void FieldEntry::deleteGuiLater()
struct SubmitFieldWidgetPrivate { struct SubmitFieldWidgetPrivate {
SubmitFieldWidgetPrivate(); SubmitFieldWidgetPrivate();
int findSender(const QObject *o) const; int indexOf(const QWidget *w) const;
int findField(const QString &f, int excluded = -1) const; int findField(const QString &f, int excluded = -1) const;
inline QString fieldText(int) const; inline QString fieldText(int) const;
inline QString fieldValue(int) const; inline QString fieldValue(int) const;
@@ -133,15 +134,11 @@ SubmitFieldWidgetPrivate::SubmitFieldWidgetPrivate() :
{ {
} }
int SubmitFieldWidgetPrivate::findSender(const QObject *o) const int SubmitFieldWidgetPrivate::indexOf(const QWidget *w) const
{ {
const int count = fieldEntries.size(); return Utils::indexOf(fieldEntries, [w](const FieldEntry &fe) {
for (int i = 0; i < count; i++) { return fe.combo == w || fe.browseButton == w || fe.clearButton == w || fe.lineEdit == w;
const FieldEntry &fe = fieldEntries.at(i); });
if (fe.combo == o || fe.browseButton == o || fe.clearButton == o || fe.lineEdit == o)
return i;
}
return -1;
} }
int SubmitFieldWidgetPrivate::findField(const QString &ft, int excluded) const int SubmitFieldWidgetPrivate::findField(const QString &ft, int excluded) const
@@ -279,35 +276,34 @@ void SubmitFieldWidget::createField(const QString &f)
} }
} }
connect(fe.browseButton, &QAbstractButton::clicked, this, &SubmitFieldWidget::slotBrowseButtonClicked); connect(fe.browseButton, &QAbstractButton::clicked, this, [this, button = fe.browseButton] {
const int pos = d->indexOf(button);
emit browseButtonClicked(pos, d->fieldText(pos));
});
if (!d->hasBrowseButton) if (!d->hasBrowseButton)
fe.browseButton->setVisible(false); fe.browseButton->setVisible(false);
if (d->completer) if (d->completer)
fe.lineEdit->setCompleter(d->completer); fe.lineEdit->setCompleter(d->completer);
connect(fe.combo, &QComboBox::currentIndexChanged, connect(fe.combo, &QComboBox::currentIndexChanged, this, [this, combo = fe.combo](int index) {
this, &SubmitFieldWidget::slotComboIndexChanged); slotComboIndexChanged(d->indexOf(combo), index);
connect(fe.clearButton, &QAbstractButton::clicked, });
this, &SubmitFieldWidget::slotRemove); connect(fe.clearButton, &QAbstractButton::clicked, this, [this, button = fe.clearButton] {
slotRemove(d->indexOf(button));
});
d->layout->addLayout(fe.layout); d->layout->addLayout(fe.layout);
d->fieldEntries.push_back(fe); d->fieldEntries.push_back(fe);
} }
void SubmitFieldWidget::slotRemove() void SubmitFieldWidget::slotRemove(int pos)
{ {
// Never remove first entry if (pos < 0)
const int index = d->findSender(sender()); return;
switch (index) { if (pos == 0)
case -1:
break;
case 0:
d->fieldEntries.front().lineEdit->clear(); d->fieldEntries.front().lineEdit->clear();
break; else
default: removeField(pos);
removeField(index);
break;
}
} }
void SubmitFieldWidget::removeField(int index) void SubmitFieldWidget::removeField(int index)
@@ -318,12 +314,11 @@ void SubmitFieldWidget::removeField(int index)
delete item; delete item;
} }
void SubmitFieldWidget::slotComboIndexChanged(int comboIndex) void SubmitFieldWidget::slotComboIndexChanged(int pos, int comboIndex)
{ {
const int pos = d->findSender(sender());
if (debug) if (debug)
qDebug() << '>' << Q_FUNC_INFO << pos; qDebug() << '>' << Q_FUNC_INFO << pos;
if (pos == -1) if (pos < 0)
return; return;
// Accept new index or reset combo to previous value? // Accept new index or reset combo to previous value?
int &previousIndex = d->fieldEntries[pos].comboIndex; int &previousIndex = d->fieldEntries[pos].comboIndex;
@@ -356,10 +351,4 @@ bool SubmitFieldWidget::comboIndexChange(int pos, int index)
return false; return false;
} }
void SubmitFieldWidget::slotBrowseButtonClicked()
{
const int pos = d->findSender(sender());
emit browseButtonClicked(pos, d->fieldText(pos));
}
} }

View File

@@ -70,9 +70,8 @@ signals:
void browseButtonClicked(int pos, const QString &field); void browseButtonClicked(int pos, const QString &field);
private: private:
void slotRemove(); void slotRemove(int pos);
void slotComboIndexChanged(int); void slotComboIndexChanged(int pos, int comboIndex);
void slotBrowseButtonClicked();
void removeField(int index); void removeField(int index);
bool comboIndexChange(int fieldNumber, int index); bool comboIndexChange(int fieldNumber, int index);