diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2018-04-17 15:06:14 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2018-04-19 09:34:51 +0000 |
commit | 37ef78bef2a1b8f6de7b196015a0343385ba36aa (patch) | |
tree | 0826cd8c6987bdbf74e20c08e85ed5215bd6f649 /src | |
parent | c2768f0f2aad6dd78bf0e69317575357041cc3eb (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.qml | 12 | ||||
-rw-r--r-- | src/imports/controls/fusion/Dialog.qml | 12 | ||||
-rw-r--r-- | src/imports/controls/imagine/Dialog.qml | 12 | ||||
-rw-r--r-- | src/imports/controls/material/Dialog.qml | 12 | ||||
-rw-r--r-- | src/imports/controls/universal/Dialog.qml | 12 | ||||
-rw-r--r-- | src/imports/templates/qtquicktemplates2plugin.cpp | 1 | ||||
-rw-r--r-- | src/quicktemplates2/qquickdialog.cpp | 72 | ||||
-rw-r--r-- | src/quicktemplates2/qquickdialog_p.h | 17 |
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) |