aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl.cpp
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@qt.io>2022-11-18 15:15:16 +0800
committerMitch Curtis <mitch.curtis@qt.io>2022-12-01 10:26:20 +0800
commit4bd87b903b355b53e3105ba1ae7c154c4e55cdaf (patch)
treecc2edb597f0d5871302eb86e9dda78217384a5aa /src/quickdialogs/quickdialogsquickimpl/qquickmessagedialogimpl.cpp
parent786e1748d4469c135a922a221024f3f9c421c0de (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.cpp192
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"