diff --git a/src/libs/utils/infobar.cpp b/src/libs/utils/infobar.cpp index f481113b4eb..4e1255956a7 100644 --- a/src/libs/utils/infobar.cpp +++ b/src/libs/utils/infobar.cpp @@ -85,10 +85,9 @@ InfoBarEntry::InfoBarEntry(Id _id, const QString &_infoText, GlobalSuppression _ { } -void InfoBarEntry::setCustomButtonInfo(const QString &_buttonText, CallBack callBack) +void InfoBarEntry::addCustomButton(const QString &buttonText, CallBack callBack) { - m_buttonText = _buttonText; - m_buttonCallBack = callBack; + m_buttons.append({buttonText, callBack}); } void InfoBarEntry::setCancelButtonInfo(CallBack callBack) @@ -317,11 +316,10 @@ void InfoBarDisplay::update() hbox->addWidget(cb); } - if (!info.m_buttonText.isEmpty()) { + for (const InfoBarEntry::Button &button : qAsConst(info.m_buttons)) { auto infoWidgetButton = new QToolButton; - infoWidgetButton->setText(info.m_buttonText); - connect(infoWidgetButton, &QAbstractButton::clicked, [info]() { info.m_buttonCallBack(); }); - + infoWidgetButton->setText(button.text); + connect(infoWidgetButton, &QAbstractButton::clicked, [button]() { button.callback(); }); hbox->addWidget(infoWidgetButton); } diff --git a/src/libs/utils/infobar.h b/src/libs/utils/infobar.h index 2d168ed7123..9ba6e6a6b44 100644 --- a/src/libs/utils/infobar.h +++ b/src/libs/utils/infobar.h @@ -57,7 +57,7 @@ public: InfoBarEntry(Id _id, const QString &_infoText, GlobalSuppression _globalSuppression = GlobalSuppression::Disabled); using CallBack = std::function; - void setCustomButtonInfo(const QString &_buttonText, CallBack callBack); + void addCustomButton(const QString &_buttonText, CallBack callBack); void setCancelButtonInfo(CallBack callBack); void setCancelButtonInfo(const QString &_cancelButtonText, CallBack callBack); using ComboCallBack = std::function; @@ -68,10 +68,15 @@ public: void setDetailsWidgetCreator(const DetailsWidgetCreator &creator); private: + struct Button + { + QString text; + CallBack callback; + }; + Id m_id; QString m_infoText; - QString m_buttonText; - CallBack m_buttonCallBack; + QList