152void QQuickDialogPrivate::handleClick(QQuickAbstractButton *button)
155 switch (buttonRole(button)) {
156 case QPlatformDialogHelper::ApplyRole:
159 case QPlatformDialogHelper::ResetRole:
162 case QPlatformDialogHelper::DestructiveRole:
166 case QPlatformDialogHelper::HelpRole:
167 emit q->helpRequested();
184QQuickDialog::QQuickDialog(QQuickDialogPrivate &dd, QObject *parent)
185 : QQuickPopup(dd, parent)
191 QObject::connect(d->popupItem, &QQuickPopupItem::headerChanged,
this, &QQuickDialog::headerChanged);
192 QObject::connect(d->popupItem, &QQuickPopupItem::footerChanged,
this, &QQuickDialog::footerChanged);
193 QObject::connect(d->popupItem, &QQuickPopupItem::implicitHeaderWidthChanged,
this, &QQuickDialog::implicitHeaderWidthChanged);
194 QObject::connect(d->popupItem, &QQuickPopupItem::implicitHeaderHeightChanged,
this, &QQuickDialog::implicitHeaderHeightChanged);
195 QObject::connect(d->popupItem, &QQuickPopupItem::implicitFooterWidthChanged,
this, &QQuickDialog::implicitFooterWidthChanged);
196 QObject::connect(d->popupItem, &QQuickPopupItem::implicitFooterHeightChanged,
this, &QQuickDialog::implicitFooterHeightChanged);
199QQuickDialog::~QQuickDialog()
202 QObject::disconnect(d->popupItem, &QQuickPopupItem::headerChanged,
this, &QQuickDialog::headerChanged);
203 QObject::disconnect(d->popupItem, &QQuickPopupItem::footerChanged,
this, &QQuickDialog::footerChanged);
204 QObject::disconnect(d->popupItem, &QQuickPopupItem::implicitHeaderWidthChanged,
this, &QQuickDialog::implicitHeaderWidthChanged);
205 QObject::disconnect(d->popupItem, &QQuickPopupItem::implicitHeaderHeightChanged,
this, &QQuickDialog::implicitHeaderHeightChanged);
206 QObject::disconnect(d->popupItem, &QQuickPopupItem::implicitFooterWidthChanged,
this, &QQuickDialog::implicitFooterWidthChanged);
207 QObject::disconnect(d->popupItem, &QQuickPopupItem::implicitFooterHeightChanged,
this, &QQuickDialog::implicitFooterHeightChanged);
270void QQuickDialog::setHeader(QQuickItem *header)
273 QQuickItem *oldHeader = d->popupItem->header();
274 if (oldHeader == header)
277 QQuickControlPrivate::warnIfCustomizationNotSupported(
this, header, QStringLiteral(
"header"));
279 if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(oldHeader)) {
280 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept);
281 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject);
282 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick);
283 if (d->buttonBox == buttonBox)
284 d->buttonBox =
nullptr;
287 if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(header)) {
288 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept);
289 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject);
290 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick);
291 d->buttonBox = buttonBox;
292 buttonBox->setStandardButtons(d->standardButtons);
295 d->popupItem->setHeader(header);
320void QQuickDialog::setFooter(QQuickItem *footer)
323 QQuickItem *oldFooter = d->popupItem->footer();
324 if (oldFooter == footer)
327 QQuickControlPrivate::warnIfCustomizationNotSupported(
this, footer, QStringLiteral(
"footer"));
329 if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(oldFooter)) {
330 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept);
331 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject);
332 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick);
333 if (d->buttonBox == buttonBox)
334 d->buttonBox =
nullptr;
336 if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(footer)) {
337 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept);
338 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject);
339 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick);
340 d->buttonBox = buttonBox;
341 buttonBox->setStandardButtons(d->standardButtons);
344 d->popupItem->setFooter(footer);
385void QQuickDialog::setStandardButtons(QPlatformDialogHelper::StandardButtons buttons)
388 if (d->standardButtons == buttons)
391 d->standardButtons = buttons;
393 d->buttonBox->setStandardButtons(buttons);
394 emit standardButtonsChanged();
565void QQuickDialog::itemChange(QQuickItem::ItemChange change,
const QQuickItem::ItemChangeData &data)
567 QQuickPopup::itemChange(change, data);
569 if (change != QQuickItem::ItemVisibleHasChanged || !isComponentComplete() || !data.boolValue)
573 if (d->buttonBox && QQuickItemPrivate::get(d->popupItem)->subFocusItem ==
nullptr) {
574 for (
int i = 0; i < d->buttonBox->count(); ++i) {
575 QQuickItem *item = qobject_cast<QQuickItem *>(d->buttonBox->itemAt(i));
576 if (item && item->isEnabled()) {
577 d->buttonBox->setFocus(
true, Qt::OtherFocusReason);