Utils: add current index parameter to InfoBarEntry::setComboInfo

Change-Id: I8933d0583846672a6bebdefec402203375e5e09b
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
David Schulz
2022-03-23 10:04:07 +01:00
parent ae6c974fb2
commit be0b962ce8
2 changed files with 9 additions and 4 deletions

View File

@@ -103,18 +103,20 @@ void InfoBarEntry::setCancelButtonInfo(const QString &_cancelButtonText, CallBac
m_cancelButtonCallBack = callBack;
}
void InfoBarEntry::setComboInfo(const QStringList &list, ComboCallBack callBack)
void InfoBarEntry::setComboInfo(const QStringList &list, ComboCallBack callBack, int currentIndex)
{
m_comboInfo = Utils::transform(list, [](const QString &string) {
return ComboInfo{string, string};
});
m_comboCallBack = callBack;
m_currentComboIndex = currentIndex;
}
void InfoBarEntry::setComboInfo(const QList<ComboInfo> &list, ComboCallBack callBack)
void InfoBarEntry::setComboInfo(const QList<ComboInfo> &list, ComboCallBack callBack, int currentIndex)
{
m_comboCallBack = callBack;
m_comboInfo = list;
m_currentComboIndex = currentIndex;
}
void InfoBarEntry::removeCancelButton()
@@ -318,6 +320,8 @@ void InfoBarDisplay::update()
auto cb = new QComboBox();
for (const InfoBarEntry::ComboInfo &comboInfo : qAsConst(info.m_comboInfo))
cb->addItem(comboInfo.displayText, comboInfo.data);
if (info.m_currentComboIndex >= 0 && info.m_currentComboIndex < cb->count())
cb->setCurrentIndex(info.m_currentComboIndex);
connect(cb, QOverload<int>::of(&QComboBox::currentIndexChanged), [cb, info]() {
info.m_comboCallBack({cb->currentText(), cb->currentData()});
});

View File

@@ -66,8 +66,8 @@ public:
QVariant data;
};
using ComboCallBack = std::function<void(const ComboInfo &)>;
void setComboInfo(const QStringList &list, ComboCallBack callBack);
void setComboInfo(const QList<ComboInfo> &infos, ComboCallBack callBack);
void setComboInfo(const QStringList &list, ComboCallBack callBack, int currentIndex = -1);
void setComboInfo(const QList<ComboInfo> &infos, ComboCallBack callBack, int currentIndex = -1);
void removeCancelButton();
using DetailsWidgetCreator = std::function<QWidget*()>;
@@ -90,6 +90,7 @@ private:
bool m_useCancelButton = true;
ComboCallBack m_comboCallBack;
QList<ComboInfo> m_comboInfo;
int m_currentComboIndex = -1;
friend class InfoBar;
friend class InfoBarDisplay;
};