diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2018-04-17 14:34:27 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2018-04-19 07:46:49 +0000 |
commit | c2768f0f2aad6dd78bf0e69317575357041cc3eb (patch) | |
tree | 12d55f8d59996cb6421004f2c710a6d6de944d75 /src/quicktemplates2/qquickpage.cpp | |
parent | 1a7be215415eacc9c1210b8e686d6ae517893806 (diff) |
Page: add implicit header and footer size properties
[ChangeLog][Controls][Page] Added implicitHeaderWidth, implicitHeaderHeight,
implicitFooterWidth, and implicitFooterHeight properties.
Change-Id: Ia6de025767e64dd2b44edafc2e7dfdf9a99e3b5f
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickpage.cpp')
-rw-r--r-- | src/quicktemplates2/qquickpage.cpp | 110 |
1 files changed, 109 insertions, 1 deletions
diff --git a/src/quicktemplates2/qquickpage.cpp b/src/quicktemplates2/qquickpage.cpp index 31a3914f..93196c4c 100644 --- a/src/quicktemplates2/qquickpage.cpp +++ b/src/quicktemplates2/qquickpage.cpp @@ -146,9 +146,37 @@ void QQuickPagePrivate::resizeContent() void QQuickPagePrivate::itemVisibilityChanged(QQuickItem *item) { + Q_Q(QQuickPage); QQuickPanePrivate::itemVisibilityChanged(item); - if (item == header || item == footer) + if (item == header) { + emit q->implicitHeaderWidthChanged(); + emit q->implicitHeaderHeightChanged(); relayout(); + } else if (item == footer) { + emit q->implicitFooterWidthChanged(); + emit q->implicitFooterHeightChanged(); + relayout(); + } +} + +void QQuickPagePrivate::itemImplicitWidthChanged(QQuickItem *item) +{ + Q_Q(QQuickPage); + QQuickPanePrivate::itemImplicitWidthChanged(item); + if (item == header) + emit q->implicitHeaderWidthChanged(); + else if (item == footer) + emit q->implicitFooterWidthChanged(); +} + +void QQuickPagePrivate::itemImplicitHeightChanged(QQuickItem *item) +{ + Q_Q(QQuickPage); + QQuickPanePrivate::itemImplicitHeightChanged(item); + if (item == header) + emit q->implicitHeaderHeightChanged(); + else if (item == footer) + emit q->implicitFooterHeightChanged(); } void QQuickPagePrivate::itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF & diff) @@ -165,10 +193,14 @@ void QQuickPagePrivate::itemDestroyed(QQuickItem *item) if (item == header) { header = nullptr; relayout(); + emit q->implicitHeaderWidthChanged(); + emit q->implicitHeaderHeightChanged(); emit q->headerChanged(); } else if (item == footer) { footer = nullptr; relayout(); + emit q->implicitFooterWidthChanged(); + emit q->implicitFooterHeightChanged(); emit q->footerChanged(); } } @@ -327,6 +359,82 @@ void QQuickPage::setFooter(QQuickItem *footer) emit footerChanged(); } +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlproperty real QtQuick.Controls::Page::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 QQuickPage::implicitHeaderWidth() const +{ + Q_D(const QQuickPage); + if (!d->header || !d->header->isVisible()) + return 0; + return d->header->implicitWidth(); +} + +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlproperty real QtQuick.Controls::Page::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 QQuickPage::implicitHeaderHeight() const +{ + Q_D(const QQuickPage); + if (!d->header || !d->header->isVisible()) + return 0; + return d->header->implicitHeight(); +} + +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlproperty real QtQuick.Controls::Page::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 QQuickPage::implicitFooterWidth() const +{ + Q_D(const QQuickPage); + if (!d->footer || !d->footer->isVisible()) + return 0; + return d->footer->implicitWidth(); +} + +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlproperty real QtQuick.Controls::Page::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 QQuickPage::implicitFooterHeight() const +{ + Q_D(const QQuickPage); + if (!d->footer || !d->footer->isVisible()) + return 0; + return d->footer->implicitHeight(); +} + void QQuickPage::componentComplete() { Q_D(QQuickPage); |