aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2018-04-17 15:06:14 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2018-04-19 09:34:51 +0000
commit37ef78bef2a1b8f6de7b196015a0343385ba36aa (patch)
tree0826cd8c6987bdbf74e20c08e85ed5215bd6f649 /src
parentc2768f0f2aad6dd78bf0e69317575357041cc3eb (diff)
Dialog: add implicit header and footer size properties
[ChangeLog][Controls][Dialog] Added implicitHeaderWidth, implicitHeaderHeight, implicitFooterWidth, and implicitFooterHeight properties. Change-Id: I0435d97cf1b6950d1ecbd5825fed1991549c59e5 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/imports/controls/Dialog.qml12
-rw-r--r--src/imports/controls/fusion/Dialog.qml12
-rw-r--r--src/imports/controls/imagine/Dialog.qml12
-rw-r--r--src/imports/controls/material/Dialog.qml12
-rw-r--r--src/imports/controls/universal/Dialog.qml12
-rw-r--r--src/imports/templates/qtquicktemplates2plugin.cpp1
-rw-r--r--src/quicktemplates2/qquickdialog.cpp72
-rw-r--r--src/quicktemplates2/qquickdialog_p.h17
8 files changed, 120 insertions, 30 deletions
diff --git a/src/imports/controls/Dialog.qml b/src/imports/controls/Dialog.qml
index 0e3d118c..40e43b7b 100644
--- a/src/imports/controls/Dialog.qml
+++ b/src/imports/controls/Dialog.qml
@@ -43,13 +43,13 @@ T.Dialog {
id: control
implicitWidth: Math.max(implicitBackgroundWidth,
- header && header.visible ? header.implicitWidth : 0,
- footer && footer.visible ? footer.implicitWidth : 0,
- contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0)
+ contentWidth + leftPadding + rightPadding,
+ implicitHeaderWidth,
+ implicitFooterWidth)
implicitHeight: Math.max(implicitBackgroundHeight,
- (header && header.visible ? header.implicitHeight + spacing : 0)
- + (footer && footer.visible ? footer.implicitHeight + spacing : 0)
- + (contentHeight > 0 ? contentHeight + topPadding + bottomPadding : 0))
+ contentHeight + topPadding + bottomPadding
+ + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0)
+ + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0))
padding: 12
diff --git a/src/imports/controls/fusion/Dialog.qml b/src/imports/controls/fusion/Dialog.qml
index e8fefa91..98b9bdd9 100644
--- a/src/imports/controls/fusion/Dialog.qml
+++ b/src/imports/controls/fusion/Dialog.qml
@@ -45,13 +45,13 @@ T.Dialog {
id: control
implicitWidth: Math.max(implicitBackgroundWidth,
- header && header.visible ? header.implicitWidth : 0,
- footer && footer.visible ? footer.implicitWidth : 0,
- contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0)
+ contentWidth + leftPadding + rightPadding,
+ implicitHeaderWidth,
+ implicitFooterWidth)
implicitHeight: Math.max(implicitBackgroundHeight,
- (header && header.visible ? header.implicitHeight + spacing : 0)
- + (footer && footer.visible ? footer.implicitHeight + spacing : 0)
- + (contentHeight > 0 ? contentHeight + topPadding + bottomPadding : 0))
+ contentHeight + topPadding + bottomPadding
+ + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0)
+ + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0))
padding: 6
diff --git a/src/imports/controls/imagine/Dialog.qml b/src/imports/controls/imagine/Dialog.qml
index 26f31da5..47834259 100644
--- a/src/imports/controls/imagine/Dialog.qml
+++ b/src/imports/controls/imagine/Dialog.qml
@@ -44,13 +44,13 @@ T.Dialog {
id: control
implicitWidth: Math.max(implicitBackgroundWidth,
- header && header.visible ? header.implicitWidth : 0,
- footer && footer.visible ? footer.implicitWidth : 0,
- contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0)
+ contentWidth + leftPadding + rightPadding,
+ implicitHeaderWidth,
+ implicitFooterWidth)
implicitHeight: Math.max(implicitBackgroundHeight,
- (header && header.visible ? header.implicitHeight + spacing : 0)
- + (footer && footer.visible ? footer.implicitHeight + spacing : 0)
- + (contentHeight > 0 ? contentHeight + topPadding + bottomPadding : 0))
+ contentHeight + topPadding + bottomPadding
+ + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0)
+ + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0))
topPadding: background ? background.topPadding : 0
leftPadding: background ? background.leftPadding : 0
diff --git a/src/imports/controls/material/Dialog.qml b/src/imports/controls/material/Dialog.qml
index 9e0467e5..f147a2d4 100644
--- a/src/imports/controls/material/Dialog.qml
+++ b/src/imports/controls/material/Dialog.qml
@@ -45,13 +45,13 @@ T.Dialog {
id: control
implicitWidth: Math.max(implicitBackgroundWidth,
- header && header.visible ? header.implicitWidth : 0,
- footer && footer.visible ? footer.implicitWidth : 0,
- contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0)
+ contentWidth + leftPadding + rightPadding,
+ implicitHeaderWidth,
+ implicitFooterWidth)
implicitHeight: Math.max(implicitBackgroundHeight,
- (header && header.visible ? header.implicitHeight + spacing : 0)
- + (footer && footer.visible ? footer.implicitHeight + spacing : 0)
- + (contentHeight > 0 ? contentHeight + topPadding + bottomPadding : 0))
+ contentHeight + topPadding + bottomPadding
+ + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0)
+ + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0))
padding: 24
topPadding: 20
diff --git a/src/imports/controls/universal/Dialog.qml b/src/imports/controls/universal/Dialog.qml
index 907c5ea3..4f3d8cf0 100644
--- a/src/imports/controls/universal/Dialog.qml
+++ b/src/imports/controls/universal/Dialog.qml
@@ -43,13 +43,13 @@ T.Dialog {
id: control
implicitWidth: Math.max(implicitBackgroundWidth,
- header && header.visible ? header.implicitWidth : 0,
- footer && footer.visible ? footer.implicitWidth : 0,
- contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0)
+ contentWidth + leftPadding + rightPadding,
+ implicitHeaderWidth,
+ implicitFooterWidth)
implicitHeight: Math.max(implicitBackgroundHeight,
- (header && header.visible ? header.implicitHeight + spacing : 0)
- + (footer && footer.visible ? footer.implicitHeight + spacing : 0)
- + (contentHeight > 0 ? contentHeight + topPadding + bottomPadding : 0))
+ contentHeight + topPadding + bottomPadding
+ + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0)
+ + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0))
padding: 24
verticalPadding: 18
diff --git a/src/imports/templates/qtquicktemplates2plugin.cpp b/src/imports/templates/qtquicktemplates2plugin.cpp
index 6e5aec38..088b6552 100644
--- a/src/imports/templates/qtquicktemplates2plugin.cpp
+++ b/src/imports/templates/qtquicktemplates2plugin.cpp
@@ -337,6 +337,7 @@ void QtQuickTemplates2Plugin::registerTypes(const char *uri)
qmlRegisterType<QQuickComboBox, 5>(uri, 2, 5, "ComboBox");
qmlRegisterType<QQuickControl, 5>(uri, 2, 5, "Control");
qmlRegisterType<QQuickContainer, 5>(uri, 2, 5, "Container");
+ qmlRegisterType<QQuickDialog, 5>(uri, 2, 5, "Dialog");
qmlRegisterType<QQuickPage, 5>(uri, 2, 5, "Page");
qmlRegisterType<QQuickPopup, 5>(uri, 2, 5, "Popup");
qmlRegisterType<QQuickPopupAnchors>();
diff --git a/src/quicktemplates2/qquickdialog.cpp b/src/quicktemplates2/qquickdialog.cpp
index dd0c9946..7d3152e2 100644
--- a/src/quicktemplates2/qquickdialog.cpp
+++ b/src/quicktemplates2/qquickdialog.cpp
@@ -186,6 +186,10 @@ QQuickDialog::QQuickDialog(QObject *parent)
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);
}
/*!
@@ -408,6 +412,74 @@ void QQuickDialog::setResult(int result)
}
/*!
+ \since QtQuick.Controls 2.5 (Qt 5.12)
+ \qmlproperty real QtQuick.Controls::Dialog::implicitHeaderWidth
+ \readonly
+
+ This property holds the implicit header width.
+
+ The value is equal to \c {header && header.visible ? header.implicitWidth : 0}.
+
+ \sa implicitHeaderHeight, implicitFooterWidth
+*/
+qreal QQuickDialog::implicitHeaderWidth() const
+{
+ Q_D(const QQuickDialog);
+ return d->popupItem->implicitHeaderWidth();
+}
+
+/*!
+ \since QtQuick.Controls 2.5 (Qt 5.12)
+ \qmlproperty real QtQuick.Controls::Dialog::implicitHeaderHeight
+ \readonly
+
+ This property holds the implicit header height.
+
+ The value is equal to \c {header && header.visible ? header.implicitHeight : 0}.
+
+ \sa implicitHeaderWidth, implicitFooterHeight
+*/
+qreal QQuickDialog::implicitHeaderHeight() const
+{
+ Q_D(const QQuickDialog);
+ return d->popupItem->implicitHeaderHeight();
+}
+
+/*!
+ \since QtQuick.Controls 2.5 (Qt 5.12)
+ \qmlproperty real QtQuick.Controls::Dialog::implicitFooterWidth
+ \readonly
+
+ This property holds the implicit footer width.
+
+ The value is equal to \c {footer && footer.visible ? footer.implicitWidth : 0}.
+
+ \sa implicitFooterHeight, implicitHeaderWidth
+*/
+qreal QQuickDialog::implicitFooterWidth() const
+{
+ Q_D(const QQuickDialog);
+ return d->popupItem->implicitFooterWidth();
+}
+
+/*!
+ \since QtQuick.Controls 2.5 (Qt 5.12)
+ \qmlproperty real QtQuick.Controls::Dialog::implicitFooterHeight
+ \readonly
+
+ This property holds the implicit footer height.
+
+ The value is equal to \c {footer && footer.visible ? footer.implicitHeight : 0}.
+
+ \sa implicitFooterWidth, implicitHeaderHeight
+*/
+qreal QQuickDialog::implicitFooterHeight() const
+{
+ Q_D(const QQuickDialog);
+ return d->popupItem->implicitFooterHeight();
+}
+
+/*!
\qmlmethod void QtQuick.Controls::Dialog::accept()
Closes the dialog and emits the \l accepted() signal.
diff --git a/src/quicktemplates2/qquickdialog_p.h b/src/quicktemplates2/qquickdialog_p.h
index 1f410d13..38a1b396 100644
--- a/src/quicktemplates2/qquickdialog_p.h
+++ b/src/quicktemplates2/qquickdialog_p.h
@@ -66,6 +66,11 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickDialog : public QQuickPopup
// 2.3 (Qt 5.10)
Q_PROPERTY(int result READ result WRITE setResult NOTIFY resultChanged FINAL REVISION 3)
Q_FLAGS(QPlatformDialogHelper::StandardButtons)
+ // 2.5 (Qt 5.12)
+ Q_PROPERTY(qreal implicitHeaderWidth READ implicitHeaderWidth NOTIFY implicitHeaderWidthChanged FINAL REVISION 5)
+ Q_PROPERTY(qreal implicitHeaderHeight READ implicitHeaderHeight NOTIFY implicitHeaderHeightChanged FINAL REVISION 5)
+ Q_PROPERTY(qreal implicitFooterWidth READ implicitFooterWidth NOTIFY implicitFooterWidthChanged FINAL REVISION 5)
+ Q_PROPERTY(qreal implicitFooterHeight READ implicitFooterHeight NOTIFY implicitFooterHeightChanged FINAL REVISION 5)
public:
explicit QQuickDialog(QObject *parent = nullptr);
@@ -90,6 +95,13 @@ public:
int result() const;
void setResult(int result);
+ // 2.5 (Qt 5.12)
+ qreal implicitHeaderWidth() const;
+ qreal implicitHeaderHeight() const;
+
+ qreal implicitFooterWidth() const;
+ qreal implicitFooterHeight() const;
+
public Q_SLOTS:
virtual void accept();
virtual void reject();
@@ -108,6 +120,11 @@ Q_SIGNALS:
Q_REVISION(3) void discarded();
Q_REVISION(3) void helpRequested();
Q_REVISION(3) void resultChanged();
+ // 2.5 (Qt 5.12)
+ void implicitHeaderWidthChanged();
+ void implicitHeaderHeightChanged();
+ void implicitFooterWidthChanged();
+ void implicitFooterHeightChanged();
protected:
#if QT_CONFIG(accessibility)