aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@qt.io>2020-11-16 16:34:56 +0100
committerMitch Curtis <mitch.curtis@qt.io>2021-05-27 17:34:11 +0200
commitf9421abbdf4d2e2be06febf9f75a2b62e6875835 (patch)
tree9cdd7d567f949fa21c1bb079cfaa6c6071e161e8 /src/quicktemplates2
parent85a74d5cb68b11a1152b00d3e4a0e8dc9998b31c (diff)
Add QtQuick.Dialogs
[ChangeLog][QtQuickDialogs] Added FileDialog. This is a native FileDialog on platforms that support it, and a non-native Qt Quick FileDialog on platforms that don't. Fixes: QTBUG-87797 Change-Id: Ia3a98b616479b818c96c232a0329750023079642 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/quicktemplates2')
-rw-r--r--src/quicktemplates2/qquickdeferredexecute_p_p.h7
-rw-r--r--src/quicktemplates2/qquickdialog.cpp49
-rw-r--r--src/quicktemplates2/qquickdialog_p.h2
-rw-r--r--src/quicktemplates2/qquickdialog_p_p.h6
-rw-r--r--src/quicktemplates2/qquickdialogbuttonbox.cpp10
-rw-r--r--src/quicktemplates2/qquickdialogbuttonbox_p_p.h4
-rw-r--r--src/quicktemplates2/qquickitemdelegate_p_p.h2
-rw-r--r--src/quicktemplates2/qquickpopup.cpp3
-rw-r--r--src/quicktemplates2/qquickpopup_p_p.h4
-rw-r--r--src/quicktemplates2/qquickpopupitem_p.h2
-rw-r--r--src/quicktemplates2/qquickpopupitem_p_p.h2
11 files changed, 61 insertions, 30 deletions
diff --git a/src/quicktemplates2/qquickdeferredexecute_p_p.h b/src/quicktemplates2/qquickdeferredexecute_p_p.h
index 29d95ee9..55750a6a 100644
--- a/src/quicktemplates2/qquickdeferredexecute_p_p.h
+++ b/src/quicktemplates2/qquickdeferredexecute_p_p.h
@@ -50,6 +50,7 @@
#include <QtCore/qglobal.h>
#include <QtQuickTemplates2/private/qquickdeferredpointer_p_p.h>
+#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h>
#include <QtQml/private/qqmlvme_p.h>
@@ -59,9 +60,9 @@ class QString;
class QObject;
namespace QtQuickPrivate {
- void beginDeferred(QObject *object, const QString &property);
- void cancelDeferred(QObject *object, const QString &property);
- void completeDeferred(QObject *object, const QString &property);
+ Q_QUICKTEMPLATES2_PRIVATE_EXPORT void beginDeferred(QObject *object, const QString &property);
+ Q_QUICKTEMPLATES2_PRIVATE_EXPORT void cancelDeferred(QObject *object, const QString &property);
+ Q_QUICKTEMPLATES2_PRIVATE_EXPORT void completeDeferred(QObject *object, const QString &property);
}
template<typename T>
diff --git a/src/quicktemplates2/qquickdialog.cpp b/src/quicktemplates2/qquickdialog.cpp
index 6d8bd2ad..a6cb0274 100644
--- a/src/quicktemplates2/qquickdialog.cpp
+++ b/src/quicktemplates2/qquickdialog.cpp
@@ -158,6 +158,18 @@ QPlatformDialogHelper::ButtonRole QQuickDialogPrivate::buttonRole(QQuickAbstract
return attached ? attached->buttonRole() : QPlatformDialogHelper::InvalidRole;
}
+void QQuickDialogPrivate::handleAccept()
+{
+ Q_Q(QQuickDialog);
+ q->accept();
+}
+
+void QQuickDialogPrivate::handleReject()
+{
+ Q_Q(QQuickDialog);
+ q->reject();
+}
+
void QQuickDialogPrivate::handleClick(QQuickAbstractButton *button)
{
Q_Q(QQuickDialog);
@@ -180,16 +192,21 @@ void QQuickDialogPrivate::handleClick(QQuickAbstractButton *button)
}
QQuickDialog::QQuickDialog(QObject *parent)
- : QQuickPopup(*(new QQuickDialogPrivate), parent)
+ : QQuickDialog(*(new QQuickDialogPrivate), parent)
+{
+}
+
+QQuickDialog::QQuickDialog(QQuickDialogPrivate &dd, QObject *parent)
+ : QQuickPopup(dd, parent)
{
Q_D(QQuickDialog);
- connect(d->popupItem, &QQuickPopupItem::titleChanged, this, &QQuickDialog::titleChanged);
- connect(d->popupItem, &QQuickPopupItem::headerChanged, this, &QQuickDialog::headerChanged);
- connect(d->popupItem, &QQuickPopupItem::footerChanged, this, &QQuickDialog::footerChanged);
- connect(d->popupItem, &QQuickPopupItem::implicitHeaderWidthChanged, this, &QQuickDialog::implicitHeaderWidthChanged);
- connect(d->popupItem, &QQuickPopupItem::implicitHeaderHeightChanged, this, &QQuickDialog::implicitHeaderHeightChanged);
- connect(d->popupItem, &QQuickPopupItem::implicitFooterWidthChanged, this, &QQuickDialog::implicitFooterWidthChanged);
- connect(d->popupItem, &QQuickPopupItem::implicitFooterHeightChanged, this, &QQuickDialog::implicitFooterHeightChanged);
+ QObject::connect(d->popupItem, &QQuickPopupItem::titleChanged, this, &QQuickDialog::titleChanged);
+ QObject::connect(d->popupItem, &QQuickPopupItem::headerChanged, this, &QQuickDialog::headerChanged);
+ QObject::connect(d->popupItem, &QQuickPopupItem::footerChanged, this, &QQuickDialog::footerChanged);
+ QObject::connect(d->popupItem, &QQuickPopupItem::implicitHeaderWidthChanged, this, &QQuickDialog::implicitHeaderWidthChanged);
+ QObject::connect(d->popupItem, &QQuickPopupItem::implicitHeaderHeightChanged, this, &QQuickDialog::implicitHeaderHeightChanged);
+ QObject::connect(d->popupItem, &QQuickPopupItem::implicitFooterWidthChanged, this, &QQuickDialog::implicitFooterWidthChanged);
+ QObject::connect(d->popupItem, &QQuickPopupItem::implicitFooterHeightChanged, this, &QQuickDialog::implicitFooterHeightChanged);
}
/*!
@@ -251,16 +268,16 @@ void QQuickDialog::setHeader(QQuickItem *header)
return;
if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(oldHeader)) {
- disconnect(buttonBox, &QQuickDialogButtonBox::accepted, this, &QQuickDialog::accept);
- disconnect(buttonBox, &QQuickDialogButtonBox::rejected, this, &QQuickDialog::reject);
+ QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept);
+ QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject);
QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick);
if (d->buttonBox == buttonBox)
d->buttonBox = nullptr;
}
if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(header)) {
- connect(buttonBox, &QQuickDialogButtonBox::accepted, this, &QQuickDialog::accept);
- connect(buttonBox, &QQuickDialogButtonBox::rejected, this, &QQuickDialog::reject);
+ QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept);
+ QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject);
QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick);
d->buttonBox = buttonBox;
buttonBox->setStandardButtons(d->standardButtons);
@@ -299,15 +316,15 @@ void QQuickDialog::setFooter(QQuickItem *footer)
return;
if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(oldFooter)) {
- disconnect(buttonBox, &QQuickDialogButtonBox::accepted, this, &QQuickDialog::accept);
- disconnect(buttonBox, &QQuickDialogButtonBox::rejected, this, &QQuickDialog::reject);
+ QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept);
+ QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject);
QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick);
if (d->buttonBox == buttonBox)
d->buttonBox = nullptr;
}
if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(footer)) {
- connect(buttonBox, &QQuickDialogButtonBox::accepted, this, &QQuickDialog::accept);
- connect(buttonBox, &QQuickDialogButtonBox::rejected, this, &QQuickDialog::reject);
+ QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept);
+ QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject);
QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick);
d->buttonBox = buttonBox;
buttonBox->setStandardButtons(d->standardButtons);
diff --git a/src/quicktemplates2/qquickdialog_p.h b/src/quicktemplates2/qquickdialog_p.h
index 660da081..b09375ce 100644
--- a/src/quicktemplates2/qquickdialog_p.h
+++ b/src/quicktemplates2/qquickdialog_p.h
@@ -129,6 +129,8 @@ Q_SIGNALS:
void implicitFooterHeightChanged();
protected:
+ QQuickDialog(QQuickDialogPrivate &dd, QObject *parent);
+
#if QT_CONFIG(accessibility)
QAccessible::Role accessibleRole() const override;
void accessibilityActiveChanged(bool active) override;
diff --git a/src/quicktemplates2/qquickdialog_p_p.h b/src/quicktemplates2/qquickdialog_p_p.h
index 20dce56c..eb40c918 100644
--- a/src/quicktemplates2/qquickdialog_p_p.h
+++ b/src/quicktemplates2/qquickdialog_p_p.h
@@ -57,7 +57,7 @@ QT_BEGIN_NAMESPACE
class QQuickAbstractButton;
class QQuickDialogButtonBox;
-class QQuickDialogPrivate : public QQuickPopupPrivate
+class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickDialogPrivate : public QQuickPopupPrivate
{
Q_DECLARE_PUBLIC(QQuickDialog)
@@ -69,7 +69,9 @@ public:
static QPlatformDialogHelper::ButtonRole buttonRole(QQuickAbstractButton *button);
- void handleClick(QQuickAbstractButton *button);
+ virtual void handleAccept();
+ virtual void handleReject();
+ virtual void handleClick(QQuickAbstractButton *button);
int result = 0;
QString title;
diff --git a/src/quicktemplates2/qquickdialogbuttonbox.cpp b/src/quicktemplates2/qquickdialogbuttonbox.cpp
index d6ed366f..447d3a2d 100644
--- a/src/quicktemplates2/qquickdialogbuttonbox.cpp
+++ b/src/quicktemplates2/qquickdialogbuttonbox.cpp
@@ -396,6 +396,11 @@ void QQuickDialogButtonBoxPrivate::handleClick()
}
}
+QString QQuickDialogButtonBoxPrivate::buttonText(QPlatformDialogHelper::StandardButton standardButton)
+{
+ return QPlatformTheme::removeMnemonics(QGuiApplicationPrivate::platformTheme()->standardButtonText(standardButton));
+}
+
QQuickAbstractButton *QQuickDialogButtonBoxPrivate::createStandardButton(QPlatformDialogHelper::StandardButton standardButton)
{
Q_Q(QQuickDialogButtonBox);
@@ -414,7 +419,7 @@ QQuickAbstractButton *QQuickDialogButtonBoxPrivate::createStandardButton(QPlatfo
QQuickDialogButtonBoxAttached *attached = qobject_cast<QQuickDialogButtonBoxAttached *>(qmlAttachedPropertiesObject<QQuickDialogButtonBox>(button, true));
QQuickDialogButtonBoxAttachedPrivate::get(attached)->standardButton = standardButton;
attached->setButtonRole(QPlatformDialogHelper::buttonRole(standardButton));
- button->setText(QPlatformTheme::removeMnemonics(QGuiApplicationPrivate::platformTheme()->standardButtonText(standardButton)));
+ button->setText(buttonText(standardButton));
delegate->completeCreate();
return button;
}
@@ -457,8 +462,7 @@ void QQuickDialogButtonBoxPrivate::updateLanguage()
const QPlatformDialogHelper::StandardButton standardButton = boxAttachedPrivate->standardButton;
// The button might be a custom one with explicitly specified text, so we shouldn't change it in that case.
if (standardButton != QPlatformDialogHelper::NoButton) {
- const QString buttonText = QGuiApplicationPrivate::platformTheme()->standardButtonText(standardButton);
- button->setText(QPlatformTheme::removeMnemonics(buttonText));
+ button->setText(buttonText(standardButton));
}
}
--i;
diff --git a/src/quicktemplates2/qquickdialogbuttonbox_p_p.h b/src/quicktemplates2/qquickdialogbuttonbox_p_p.h
index 22da9e6d..5e08b2ad 100644
--- a/src/quicktemplates2/qquickdialogbuttonbox_p_p.h
+++ b/src/quicktemplates2/qquickdialogbuttonbox_p_p.h
@@ -53,7 +53,7 @@
QT_BEGIN_NAMESPACE
-class QQuickDialogButtonBoxPrivate : public QQuickContainerPrivate
+class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickDialogButtonBoxPrivate : public QQuickContainerPrivate
{
Q_DECLARE_PUBLIC(QQuickDialogButtonBox)
@@ -75,6 +75,8 @@ public:
void handleClick();
+ static QString buttonText(QPlatformDialogHelper::StandardButton standardButton);
+
QQuickAbstractButton *createStandardButton(QPlatformDialogHelper::StandardButton button);
void removeStandardButtons();
diff --git a/src/quicktemplates2/qquickitemdelegate_p_p.h b/src/quicktemplates2/qquickitemdelegate_p_p.h
index f712a212..d7604fbe 100644
--- a/src/quicktemplates2/qquickitemdelegate_p_p.h
+++ b/src/quicktemplates2/qquickitemdelegate_p_p.h
@@ -52,7 +52,7 @@
QT_BEGIN_NAMESPACE
-class QQuickItemDelegatePrivate : public QQuickAbstractButtonPrivate
+class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickItemDelegatePrivate : public QQuickAbstractButtonPrivate
{
Q_DECLARE_PUBLIC(QQuickItemDelegate)
diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp
index 292d52a3..44d0d8f4 100644
--- a/src/quicktemplates2/qquickpopup.cpp
+++ b/src/quicktemplates2/qquickpopup.cpp
@@ -44,6 +44,7 @@
#include "qquickcontrol_p_p.h"
#include "qquickdialog_p.h"
+#include <QtCore/qloggingcategory.h>
#include <QtQml/qqmlinfo.h>
#include <QtQuick/qquickitem.h>
#include <QtQuick/private/qquicktransition_p.h>
@@ -52,6 +53,7 @@
QT_BEGIN_NAMESPACE
Q_LOGGING_CATEGORY(lcDimmer, "qt.quick.controls.popup.dimmer")
+Q_LOGGING_CATEGORY(lcPopup, "qt.quick.controls.popup")
/*!
\qmltype Popup
@@ -2450,6 +2452,7 @@ void QQuickPopup::classBegin()
void QQuickPopup::componentComplete()
{
Q_D(QQuickPopup);
+ qCDebug(lcPopup) << "componentComplete";
if (!parentItem())
resetParentItem();
diff --git a/src/quicktemplates2/qquickpopup_p_p.h b/src/quicktemplates2/qquickpopup_p_p.h
index 57183011..5ce1d291 100644
--- a/src/quicktemplates2/qquickpopup_p_p.h
+++ b/src/quicktemplates2/qquickpopup_p_p.h
@@ -68,7 +68,7 @@ class QQuickPopupItem;
class QQuickPopupPrivate;
class QQuickPopupPositioner;
-class QQuickPopupTransitionManager : public QQuickTransitionManager
+class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPopupTransitionManager : public QQuickTransitionManager
{
public:
QQuickPopupTransitionManager(QQuickPopupPrivate *popup);
@@ -83,7 +83,7 @@ private:
QQuickPopupPrivate *popup = nullptr;
};
-class Q_AUTOTEST_EXPORT QQuickPopupPrivate
+class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPopupPrivate
: public QObjectPrivate
, public QQuickItemChangeListener
, public QQuickPaletteProviderPrivateBase<QQuickPopup, QQuickPopupPrivate>
diff --git a/src/quicktemplates2/qquickpopupitem_p.h b/src/quicktemplates2/qquickpopupitem_p.h
index db444ddc..2947a6e3 100644
--- a/src/quicktemplates2/qquickpopupitem_p.h
+++ b/src/quicktemplates2/qquickpopupitem_p.h
@@ -56,7 +56,7 @@ QT_BEGIN_NAMESPACE
class QQuickPopup;
class QQuickPopupItemPrivate;
-class QQuickPopupItem : public QQuickPage
+class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPopupItem : public QQuickPage
{
Q_OBJECT
diff --git a/src/quicktemplates2/qquickpopupitem_p_p.h b/src/quicktemplates2/qquickpopupitem_p_p.h
index b3224be7..48b35aa2 100644
--- a/src/quicktemplates2/qquickpopupitem_p_p.h
+++ b/src/quicktemplates2/qquickpopupitem_p_p.h
@@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE
class QQuickPopup;
-class QQuickPopupItemPrivate : public QQuickPagePrivate
+class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPopupItemPrivate : public QQuickPagePrivate
{
Q_DECLARE_PUBLIC(QQuickPopupItem)