16 Q_Q(QQuickMessageDialogImpl);
19 QPlatformDialogHelper::StandardButton standardButton =
20 QQuickDialogButtonBoxPrivate::get(attached->buttonBox())->standardButton(button);
21 QPlatformDialogHelper::ButtonRole role = buttonRole(button);
23 emit q->buttonClicked(standardButton, role);
48void QQuickMessageDialogImpl::setOptions(
const QSharedPointer<QMessageDialogOptions> &options)
50 Q_D(QQuickMessageDialogImpl);
53 QQuickMessageDialogImplAttached *attached = d->attachedOrWarn();
55 if (options && attached) {
56 attached->detailedTextButton()->setVisible(!d->options->detailedText().isEmpty());
57 attached->buttonBox()->setStandardButtons(d->options->standardButtons());
60 if (showDetailedText())
61 toggleShowDetailedText();
63 emit optionsChanged();
97void QQuickMessageDialogImpl::itemChange(QQuickItem::ItemChange change,
const QQuickItem::ItemChangeData &data)
99 Q_D(QQuickMessageDialogImpl);
100 QQuickDialog::itemChange(change, data);
102 if (change != QQuickItem::ItemVisibleHasChanged || !isComponentComplete() || !data.boolValue)
105 if (QQuickMessageDialogImplAttached *attached = d->attachedOrWarn(); attached && attached->buttonBox())
106 attached->buttonBox()->forceActiveFocus(Qt::OtherFocusReason);
129void QQuickMessageDialogImplAttached::setButtonBox(QQuickDialogButtonBox *buttons)
131 Q_D(QQuickMessageDialogImplAttached);
132 if (d->buttonBox == buttons)
136 QQuickMessageDialogImpl *messageDialogImpl =
137 qobject_cast<QQuickMessageDialogImpl *>(parent());
138 if (messageDialogImpl) {
139 auto dialogPrivate = QQuickMessageDialogImplPrivate::get(messageDialogImpl);
140 QObjectPrivate::disconnect(d->buttonBox, &QQuickDialogButtonBox::clicked, dialogPrivate,
141 &QQuickMessageDialogImplPrivate::handleClick);
145 d->buttonBox = buttons;
148 QQuickMessageDialogImpl *messageDialogImpl =
149 qobject_cast<QQuickMessageDialogImpl *>(parent());
150 if (messageDialogImpl) {
151 auto dialogPrivate = QQuickMessageDialogImplPrivate::get(messageDialogImpl);
152 QObjectPrivate::connect(d->buttonBox, &QQuickDialogButtonBox::clicked, dialogPrivate,
153 &QQuickMessageDialogImplPrivate::handleClick);
157 emit buttonBoxChanged();
165void QQuickMessageDialogImplAttached::setDetailedTextButton(QQuickButton *detailedTextButton)
167 Q_D(QQuickMessageDialogImplAttached);
169 if (d->detailedTextButton == detailedTextButton)
172 if (d->detailedTextButton) {
173 QQuickMessageDialogImpl *messageDialogImpl =
174 qobject_cast<QQuickMessageDialogImpl *>(parent());
175 if (messageDialogImpl)
176 disconnect(d->detailedTextButton, &QQuickAbstractButton::clicked, messageDialogImpl,
177 &QQuickMessageDialogImpl::toggleShowDetailedText);
180 d->detailedTextButton = detailedTextButton;
182 if (d->detailedTextButton) {
183 QQuickMessageDialogImpl *messageDialogImpl =
184 qobject_cast<QQuickMessageDialogImpl *>(parent());
185 if (messageDialogImpl)
186 connect(d->detailedTextButton, &QQuickAbstractButton::clicked, messageDialogImpl,
187 &QQuickMessageDialogImpl::toggleShowDetailedText);
190 emit detailedTextButtonChanged();