diff options
| author | Mitch Curtis <mitch.curtis@qt.io> | 2022-11-18 15:15:16 +0800 |
|---|---|---|
| committer | Mitch Curtis <mitch.curtis@qt.io> | 2022-12-01 10:26:20 +0800 |
| commit | 4bd87b903b355b53e3105ba1ae7c154c4e55cdaf (patch) | |
| tree | cc2edb597f0d5871302eb86e9dda78217384a5aa /src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl.cpp | |
| parent | 786e1748d4469c135a922a221024f3f9c421c0de (diff) | |
Remove "2" from Qt Quick Controls directories
Qt Quick Controls 2 was named that way because it was a follow-up to
Qt Quick Controls 1.x. Now that Qt Quick Controls 1 is no longer
supported, we don't need to have "2" in the name. Work on this was
already started for the documentation in
1abdfe5d5a052f2298b7bf657513dfa7e0c66a56.
By doing this renaming a few weeks before feature freeze, it won't
affect the release but still results in as little time possible spent
manually fixing conflicts in cherry-picks from non-LTS releases as a
result of the renaming.
This patch does the following:
- Renames directories.
- Adapts CMakeLists.txt and other files to account for the new paths.
A follow-up patch will handle documentation.
It does not touch library names or other user-facing stuff, as that
will have to be done in Qt 7.
Task-number: QTBUG-95413
Change-Id: I170d8db19033ee71e495ff0c5c1a517a41ed7634
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl.cpp')
| -rw-r--r-- | src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl.cpp | 192 |
1 files changed, 192 insertions, 0 deletions
diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl.cpp b/src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl.cpp new file mode 100644 index 0000000000..d80011d127 --- /dev/null +++ b/src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl.cpp @@ -0,0 +1,192 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#include "qquickmessagedialogimpl_p.h" +#include "qquickmessagedialogimpl_p_p.h" + +#include <QtQuickTemplates2/private/qquickdialogbuttonbox_p_p.h> + +QT_BEGIN_NAMESPACE + +QQuickMessageDialogImplPrivate::QQuickMessageDialogImplPrivate() { } + +void QQuickMessageDialogImplPrivate::handleClick(QQuickAbstractButton *button) +{ + Q_Q(QQuickMessageDialogImpl); + + if (const QQuickMessageDialogImplAttached *attached = attachedOrWarn()) { + QPlatformDialogHelper::StandardButton standardButton = + QQuickDialogButtonBoxPrivate::get(attached->buttonBox())->standardButton(button); + QPlatformDialogHelper::ButtonRole role = buttonRole(button); + + emit q->buttonClicked(standardButton, role); + } + + QQuickDialogPrivate::handleClick(button); +} + +QQuickMessageDialogImplAttached *QQuickMessageDialogImplPrivate::attachedOrWarn() +{ + Q_Q(QQuickMessageDialogImpl); + QQuickMessageDialogImplAttached *attached = static_cast<QQuickMessageDialogImplAttached *>( + qmlAttachedPropertiesObject<QQuickMessageDialogImpl>(q)); + if (!attached) + qmlWarning(q) << "Expected MessageDialogImpl attached object to be present on" << this; + return attached; +} + +QQuickMessageDialogImpl::QQuickMessageDialogImpl(QObject *parent) + : QQuickDialog(*(new QQuickMessageDialogImplPrivate), parent) +{ +} + +QSharedPointer<QMessageDialogOptions> QQuickMessageDialogImpl::options() const +{ + Q_D(const QQuickMessageDialogImpl); + return d->options; +} + +void QQuickMessageDialogImpl::setOptions(const QSharedPointer<QMessageDialogOptions> &options) +{ + Q_D(QQuickMessageDialogImpl); + d->options = options; + + QQuickMessageDialogImplAttached *attached = d->attachedOrWarn(); + + if (options && attached) { + attached->detailedTextButton()->setVisible(!d->options->detailedText().isEmpty()); + attached->buttonBox()->setStandardButtons(d->options->standardButtons()); + } + + if (showDetailedText()) + toggleShowDetailedText(); + + emit optionsChanged(); +} + +QString QQuickMessageDialogImpl::text() const +{ + Q_D(const QQuickMessageDialogImpl); + return d->options ? d->options->text() : QString(); +} + +QString QQuickMessageDialogImpl::informativeText() const +{ + Q_D(const QQuickMessageDialogImpl); + return d->options ? d->options->informativeText() : QString(); +} + +QString QQuickMessageDialogImpl::detailedText() const +{ + Q_D(const QQuickMessageDialogImpl); + return d->options ? d->options->detailedText() : QString(); +} + +bool QQuickMessageDialogImpl::showDetailedText() const +{ + Q_D(const QQuickMessageDialogImpl); + return d->m_showDetailedText; +} + +void QQuickMessageDialogImpl::toggleShowDetailedText() +{ + Q_D(QQuickMessageDialogImpl); + d->m_showDetailedText = !d->m_showDetailedText; + emit showDetailedTextChanged(); +} + +QQuickMessageDialogImplAttached *QQuickMessageDialogImpl::qmlAttachedProperties(QObject *object) +{ + return new QQuickMessageDialogImplAttached(object); +} + +QQuickMessageDialogImplAttached::QQuickMessageDialogImplAttached(QObject *parent) + : QObject(*(new QQuickMessageDialogImplAttachedPrivate), parent) +{ + if (!qobject_cast<QQuickMessageDialogImpl *>(parent)) { + qmlWarning(this) << "MessageDialogImpl attached properties should only be " + << "accessed through the root MessageDialogImpl instance"; + } +} + +QQuickDialogButtonBox *QQuickMessageDialogImplAttached::buttonBox() const +{ + Q_D(const QQuickMessageDialogImplAttached); + return d->buttonBox; +} + +void QQuickMessageDialogImplAttached::setButtonBox(QQuickDialogButtonBox *buttons) +{ + Q_D(QQuickMessageDialogImplAttached); + if (d->buttonBox == buttons) + return; + + if (d->buttonBox) { + QQuickMessageDialogImpl *messageDialogImpl = + qobject_cast<QQuickMessageDialogImpl *>(parent()); + if (messageDialogImpl) { + auto dialogPrivate = QQuickDialogPrivate::get(messageDialogImpl); + QObjectPrivate::disconnect(d->buttonBox, &QQuickDialogButtonBox::accepted, + dialogPrivate, &QQuickDialogPrivate::handleAccept); + QObjectPrivate::disconnect(d->buttonBox, &QQuickDialogButtonBox::rejected, + dialogPrivate, &QQuickDialogPrivate::handleReject); + QObjectPrivate::disconnect(d->buttonBox, &QQuickDialogButtonBox::clicked, dialogPrivate, + &QQuickDialogPrivate::handleClick); + } + } + + d->buttonBox = buttons; + + if (d->buttonBox) { + QQuickMessageDialogImpl *messageDialogImpl = + qobject_cast<QQuickMessageDialogImpl *>(parent()); + if (messageDialogImpl) { + auto dialogPrivate = QQuickDialogPrivate::get(messageDialogImpl); + QObjectPrivate::connect(d->buttonBox, &QQuickDialogButtonBox::accepted, dialogPrivate, + &QQuickDialogPrivate::handleAccept); + QObjectPrivate::connect(d->buttonBox, &QQuickDialogButtonBox::rejected, dialogPrivate, + &QQuickDialogPrivate::handleReject); + QObjectPrivate::connect(d->buttonBox, &QQuickDialogButtonBox::clicked, dialogPrivate, + &QQuickDialogPrivate::handleClick); + } + } + + emit buttonBoxChanged(); +} + +QQuickButton *QQuickMessageDialogImplAttached::detailedTextButton() const +{ + Q_D(const QQuickMessageDialogImplAttached); + return d->detailedTextButton; +} +void QQuickMessageDialogImplAttached::setDetailedTextButton(QQuickButton *detailedTextButton) +{ + Q_D(QQuickMessageDialogImplAttached); + + if (d->detailedTextButton == detailedTextButton) + return; + + if (d->detailedTextButton) { + QQuickMessageDialogImpl *messageDialogImpl = + qobject_cast<QQuickMessageDialogImpl *>(parent()); + if (messageDialogImpl) + disconnect(d->detailedTextButton, &QQuickAbstractButton::clicked, messageDialogImpl, + &QQuickMessageDialogImpl::toggleShowDetailedText); + } + + d->detailedTextButton = detailedTextButton; + + if (d->detailedTextButton) { + QQuickMessageDialogImpl *messageDialogImpl = + qobject_cast<QQuickMessageDialogImpl *>(parent()); + if (messageDialogImpl) + connect(d->detailedTextButton, &QQuickAbstractButton::clicked, messageDialogImpl, + &QQuickMessageDialogImpl::toggleShowDetailedText); + } + + emit detailedTextButtonChanged(); +} + +QT_END_NAMESPACE + +#include "moc_qquickmessagedialogimpl_p.cpp" |
