From 3749cfc89621236046dd7cbe89bc375a62bc0685 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 17 Jan 2022 16:47:31 +0100 Subject: [PATCH] InfoBar: Make adding more buttons possible Change-Id: Ic0c946cf3f87fe46cd06391f38e0bc71374ad340 Reviewed-by: Jarek Kobus --- src/libs/utils/infobar.cpp | 12 +++++------- src/libs/utils/infobar.h | 11 ++++++++--- src/plugins/android/androidmanifesteditorwidget.cpp | 2 +- src/plugins/android/androidplugin.cpp | 2 +- src/plugins/coreplugin/coreplugin.cpp | 2 +- .../coreplugin/editormanager/editormanager.cpp | 4 ++-- src/plugins/coreplugin/find/searchresultwidget.cpp | 2 +- src/plugins/coreplugin/vcsmanager.cpp | 2 +- src/plugins/cppeditor/cppminimizableinfobars.cpp | 2 +- src/plugins/designer/formeditorw.cpp | 2 +- .../diffeditor/diffeditorwidgetcontroller.cpp | 2 +- src/plugins/mcusupport/mcusupportplugin.cpp | 4 ++-- src/plugins/python/pythonlanguageclient.cpp | 10 ++++------ src/plugins/qmljseditor/qmljseditordocument.cpp | 2 +- src/plugins/qmlprojectmanager/qmlproject.cpp | 2 +- src/plugins/qmlprojectmanager/qmlprojectplugin.cpp | 2 +- src/plugins/qtsupport/qtsupportplugin.cpp | 2 +- src/plugins/scxmleditor/scxmleditordata.cpp | 2 +- src/plugins/texteditor/texteditor.cpp | 6 +++--- src/plugins/updateinfo/updateinfoplugin.cpp | 2 +- src/plugins/webassembly/webassemblyplugin.cpp | 2 +- src/plugins/welcome/introductionwidget.cpp | 2 +- 22 files changed, 40 insertions(+), 39 deletions(-) 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